患者さんの情報から最適な処方薬を選択するモデルを作ってみた

Kaggleで公開されているDrug Classification Datasetを使って、患者さんの情報から最適な処方薬を選択するモデルを作ってみました。

 

今回は、PythonのAutoMLライブラリーPycaretを使用します。

 

まずデータの概要ですが、

f:id:tp5366:20220126184433p:plain

こんな感じで、年齢、性別、血圧、コレステロール値、血中ナトリウムカリウム比と最適な医薬品(DrugA、DrugB、DrugC、DrugX、DrugY)が入っています。

 

f:id:tp5366:20220126184614p:plain

全データ数は200。

こちらのデータを、90%(180個)を学習用、10%(20個)をテスト用に分けて使っていきます。

 

F1値を指標に、各モデルの性能を比較します。

f:id:tp5366:20220126184739p:plain

最も高性能だったのは、決定木(Decision Tree Classifier)でしたが、チューニングによる伸びを期待して、勾配ブースティング(Gradient Boosting Classifier)を選択しました。

 

K-分割交差検証(k-Fold Cross Validation)で10分割して学習させます。

f:id:tp5366:20220126184854p:plain

すでに中々の性能です。さらにチューニングを行います。

 

f:id:tp5366:20220126184944p:plain

少し性能がアップしました。

 

学習済みのモデルを評価していきます。

f:id:tp5366:20220126185124p:plain

 

 

f:id:tp5366:20220126185141p:plain

学習用のデータでは100%正解できています。

 

どの説明変数を重視して判断していたか出力してみました。

f:id:tp5366:20220126185337p:plain

血中ナトリウムカリウム比、年齢、血圧、コレステロールの順で重視しているようです。

 

では学習に使わなかったテスト用データで、きちんと判断できるか試してみます。

f:id:tp5366:20220126185500p:plain

ばっちり最適な処方薬を予測できました。

ちなみにここまで作成するのに30分もかかっていなかったという恐ろしさ。

Pycaret、、、恐ろしい子

 

今回は、練習用の小規模でシンプルなデータを元に作ったオモチャみたいなものですが、いずれAIによる最適な処方薬を提案するシステムもできちゃうのかな~と期待できますね。

薬歴等のデータから副作用のリスクを示してくれるシステムも良いな~。

 

新型コロナで精神的に閉塞感を感じる日々ですが、ちょっとだけ明るい未来が見えてくるのはうれしいですね。