TL; DR
TPOT という Python の module を用いることで Automated ML (Machine Learning) が可能です。
背景
創薬 Advent Calendar 2018 (#souyakuAC2018)の16日目の記事です。
創薬のためには、化合物の合成→活性やADMETのデータが集まる→機械学習で予測モデルの構築→有望な化合物の提案→化合物の合成…というタスクをぐるぐるサイクルのように回していく必要があると思います。
そのような時はやはりタスクの自動化を行いできる限りヒトの負担やミスが少なくなるようなワークフローを作るべきです (自分への戒め) 。例えば、Python なら luigi や Airflow, GUIのアプリケーションなら Knime, Pipeline Pilot と言ったツールがそれらをサポートしてくれると思います。
しかし、これらのツールは機械学習の自動化を主目的として作られてはいません。できればどの機械学習手法を使えばよいのか?前処理は必要なのか?必要ならばどの前処理がよいのか?そこまで自動化できたら最高じゃないでしょうか?
今回紹介する TPOT はまさにそのようなニーズに応えられるツールです。前処理、機械学習手法の選抜を GPA で行い最も良いワークフローを導いてくれます。
DataRobot や Shogun みたいなツールという説明の方がわかりやすいかもしれません。機械学習手法は可能な限り自動化し、説明変数の検討や得られた結果の解析などいわゆるドメイン知識が必要なタスクに集中しようというわけですね。
(なんか最近ドメイン知識ってよく耳にするから使ってみたかった)
検証
というわけで色々お勉強してみてまとめてみました。初学者の方にもわかりやすいようにコメントなども多めにしてみたつもりです。Gistにまとめているので下のウィンドウでも表示できますがリンク先で大きく表示してみるのをオススメします。
最後に
いかがでしたでしょうか? マニュアルで同様の作業を行おうとすると非常に手間や時間がかかりますし、ミスをする恐れもあります。いいなと思った方はぜひ TPOT を利用してみてください。TPOT を用いて Automated ML を行い、我々はお茶を飲んでいるだけ、といきたいですね。
よい創薬ライフを!
Python (version 3.6.2)
RDKit (version 2018.09.1)
scikit-learn (version 0.20.0)
TPOT (version 0.9.5)