【W7】活性予測のための機械学習モデル_08_Step3_02_k分割交差検証
【W7の目的】
ターゲット分子(EGFR)に対して新規な化合物の活性を予測するために、様々な教師あり機械学習(supervised ML)アルゴリズムを使用する方法について学習します。
W7で用いる機械学習アルゴリズムの概要は前回話題にしました。
【k分割交差検証】
Step3に進んだといいつつ、今回はさらにk分割交差検証まで勉強してみます。初心者向けでこの情報密度なのですね。
まずはmagattacaさんの記事より。
妥当性検査手法(Validation strategy):k分割交差検証
このモデル妥当性評価テクニックは反復的な方法でデータセットを2つのグループに分けます。
トレーニングデータセット:モデルの訓練を行う既知のデータセット
テストデータセット:作成したモデルのテストを実施する未知のデータセット
この過程をk回繰り返す
この検証の目標は過学習(over-fitting)として知られる問題に注意するために、モデルが一度も見たことのないデータを予測する性能をテストし、モデルの汎化性能を評価することです。
「過学習」についてはまたいつか。勉強することが多すぎてなかなか進めないでいます。
【KNIMEでの交差検証】
今回もt-kahiさんのブログを引用します。
交差検証は学習結果が正しいかどうかを判断するのに重要な手法なので,KNIME Workflowにもこの交差検証を行うノードがあります.
それが「X-Partitioner」と「X-Aggregator」です(名前が交差検証っぽくないけど)
Step3でも下図のように使っています。
ランダムフォレストの交差検証を4ノードで実現。ノーコードです。
他にもKNIMEは機械学習に関して機能の充実が進んでいます。
例えばですが
の
“Machine Learning with KNIME Analytics Platform”
をご覧ください。
次回はデモデータをより詳しく見ていきます。
おまけ:引用部分以外誤報
【テストデータについて】
Step3ではRF, SVM, ANNsの3種の機械学習モデルについて10分割交差検証を行い、性能比較をします。
もしWF構築が機械学習モデルの性能比較だったら、テスト用データを別に取りおく必要があると思うのですが、体験版なので割愛されたのではないかと推測しています。
金子先生のブログでは下記のように説明がありました。
テストデータって必要? → 必要!
クロスバリデーションによって、モデルを構築したサンプルではないサンプルのyの値を推定しています。ある程度 モデルの推定性能を確認できているはずです。新たにモデルの推定性能を検証するためにテストデータは必要でしょうか。
テストデータは必要です。なぜなら、クロスバリデーションの結果がよくなるようにハイパーパラメータの値を決めているからです。つまり、クロスバリデーションの結果を実測値にフィッティング (適合) してハイパーパラメータの値を決定しているようなものです。たとえクロスバリデーションをしたとしても、ハイパーパラメータを決めることに関しては、モデル構築用データですので、基本的には最初にトレーニングデータとテストデータに分ける必要があります。
さらに
データをすべて学習訓練に使っちゃダメ、絶対!なのです。
この記事では主に k 分割交差検証について語ります。
例えば、データセット全体からテストデータを抜き、残りのデータを k で割って、一つは検証用、残りを訓練用に使うのです。
k はむやみに増やすと大変かもなのです。
テスト用データは訓練には絶対に使わないのです。
テスト用データは訓練には絶対に使わないのです。大事なことなので二回書きました。
テストサンプル法は、データ量が十分ある場合には問題になりませんが、データ量が少ない時には、テストデータの選び方によって、推定精度に大きな誤差が生じる可能性が高くなります。そのような場合には、ここで説明する交差検証法が使われます。
活性予測においてはデモデータのように4511化合物のデータがあったらデータ量は多めかと思っていました。機械学習研究の分野ではデータ量が少ない扱いなのかもしれないです。だとすれば交差検証法を選択したのは妥当です。あるいは、このWFを他のより少ないデータ数の活性予測にも対応させることができる設定とも考えられます。
実際、テストサンプルの選び方は重要な問題であり、構築したモデルを現場展開した後の成績に大きく影響します。データの分割手法だけでも目的に合わせて各種あって初心者にとって内容が膨大になってしまうように思います。
初心者が最初に機械学習モデル数種を体験するという目的であれば、W7の比較シンプルな設計がいいのではとあらためて思いました。
一方で、もしテストサンプルを使うランダムフォレストのKNIME実装例を見るならこちらがいいでしょう。
KNIMEを使って、ECFP4を入力としてRandom Forestで回帰する
は殆ど頭を使うことがないので誰でも使える!と断言できます(但し、得られる結果については個人で判断してくださいね)。
次回も同様な話をしますが、KNIMEでの機械学習の勉強には優れたブログ記事がとても多いです。エバンジェリストの皆さんにあらためて感謝です。