【W7】活性予測のための機械学習モデル_09_Step3_03_ランダムフォレスト
【W7の目的】
ターゲット分子(EGFR)に対して新規な化合物の活性を予測するために、様々な教師あり機械学習(supervised ML)アルゴリズムを使用する方法について学習します。
さて機械学習概要はすでに話題にしました。
今日は機械学習のスタンダード手法とも思えるランダムフォレスト(RF)を体験します。
【KNIMEのRF教材決定版】
RFをKNIMEで学ぶならこの記事を最初に紹介すべきかと思います。
ということで、ブログの連作記事でKNIMEのworkflow(WF)をつかって丁寧にRFの仕組みを教えてくださっています。必読!
上記の素晴らしい3記事を読んでおられる想定ですと、私から新たに足せる技術情報はないと思います。割愛しますね(笑)
さらにRFをより学びたい場合もmagattacaさんの記事にしっかりフォローされてます。
ぬかりなし!さすがにまるっと引用は憚られたので原典をご覧ください。
【ランダムフォレストでの交差検証WF】
入力データはStep2の4511行全てです。
【X-Partitioner】
t-kahiさんの説明記事を引用させていただきます。
W7でも同様に下図の設定となっています。
設定:
Random Seedってなんだろうと言う方にはこちらをおすすめしておきます。
実行結果は4ノードまとめて後で。
【Random Forest Learner】
t-kahiさんの説明の丁寧さには感服です。
<再掲>https://www.t-kahi.com/entry/2019/07/18/202710
日本語化したノードディスクリプションも引用しておきます。
設定:
t-kahiさんとハイパーパラメーター設定が結構異なっています。予測したい対象の性質に合わせて適切に設定するのが望ましいそうです。
例えば
「深さ」と呼ばれることが多いと思います。今回は20を最深としています。実際に20まで行ったら深めな印象です。
「決定木の数」ですね。今回は100。デフォルト設定から変えていないようです。
ハイパーパラメーターチューニングに関しては後日また。
【Random Forest Predictor】
t-kahiさんの説明通りで、設定変更は特に必要ないです。
設定:
日本語化されたディスクリプションよりメニューの説明を抜粋します。
X-Partitionerの上のポートから学習データ(デモデータだと全体の9割)を受け取りRandom Forest Learnerノードがモデルを構築し、そのモデルの情報をグレー色の四角のポート間でRandom Forest Predictorが受け取ります。
X-Partitionerの下のポートからテストデータ(デモデータだと全体の1割)を受け取って、そのMACCSフィンガープリントのデータ群を説明変数として、Random Forest Predictorが目的変数である「activity」のある(=1.0)なし(=0.0)を予測判定して出力します。
結果:(activityカラムは並べ替えてあります)
全体(4511行)の1割にあたる451行の予測結果です。10回分割した10回目の予測結果がデモデータには記録されていますね。1~9回までのデータとは次のX-Aggregatorでまとめられます。
予測精度の成績評価は次のStepで実施します(私の投稿ペースだと数か月先に書くと思いますが)。
【X-Aggregator】
X-Partitionerで設定した分割回数分のループ処理を実施し、集計するためのノードです。デモデータは10分割交差検証ですから10回ループが回ります。
設定:
結果:
今回は10回分まとめた結果を見ます。
カラフルなBar表示に驚きましたが、入っているデータは先ほどと同じく実数値(0から1の予測されたクラスの信頼度の値)なので、下図のようにカラム名のところを右クリックして、Standard Doubleに変えるのもいいかと思います。
上記の例だとConfidence(信頼度)も0.8以上と高めなのに判別ミスがいくつかあります。そんなこともあります。
以下感想ですが結構自信満々に間違えていて「潔いな!」と感じました、科学的でない表現ですみません。
Step3のRF部分は完了です。
さて、次回の内容ですが、折角のKNIMEで簡便にRFの10分割交差検証を体験できるのですから、次回はあえてループの途中で止めてデータの流れを追ってみます。
おまけ:
元旦から始めたのにもう春がすぐそこですね…
結城浩さんの下記のnoteは心に残っています。
私は今機械学習の学習記録をnoteに書いているわけですが、投稿を1週間に1回程度と決めて、1回に1000~2000字程度、数週先の分まで書き溜められるペースを維持しています。週末などに前に書いた文章を読み返し、思い出し、間違いに気付き、足りない部分を学び直し、先へと進めます。
今、この文章を書く前に、結城浩さんのnoteを読み返しました。
それはとても大切な気づきだなぁと思いました。あやかりたいものです。
W7の説明を始めたけど、一体いつまで時間をかけるつもりだ!?と思っている方が10人中9人以上と推測しています(読者が10人いると自信があるわけではないです)。
一方で、書いている私の方は、内容理解が追い付いてないけど先に進んでしまっているなぁと思いながら毎週投稿しています。それでも、ゆっくりと自分が学びたいことを学ぶことができることを愉しみながら続けます。よろしければ引き続きまた。
ところで、
「わざとゆっくり書く」と言う言葉で、小早川隆景を思い出す方って現代の日本人の何%なんだろう。1%いるかなぁ。