【W7】活性予測のための機械学習モデル_15_Step3_09_サポートベクトルマシン
【W7の目的】
ターゲット分子(EGFR)に対して新規な化合物の活性を予測するために、様々な教師あり機械学習(supervised ML)アルゴリズムを使用する方法について学習します。
前の回までは人工ニューラルネットワークでした。
https://note.com/knimesupportteam/n/ne8ee61c13c46
今回からは教師あり機械学習アルゴリズムの一つとしてサポートベクトルマシンを扱います。
【サポートベクトルマシンって何だろう】
アルゴリズムの説明はこれまで一貫して引用に頼ってきました。誇ることではないですね。
サポートベクトルマシン(SVM)の概要がわかりやすいなと感じたサイトを紹介し引用していきます。まずはt-kahiさんも推薦されていた下記のサイトより。
最もシンプルな例として2つの説明変数での二値分類でのSVMの働きを丁寧に説明されています。
AとBの境界線をいかにうまく引くかと考え、
そして
上記記事から引用してきた下図はもっとも単純な線形サポートベクトルマシンの例となります。
【カーネルって何だろう】
では線形の境界線ではうまく分けられない場合はどうするか。カーネル法の登場です。
図解が豊富で読みやすかった記事がこちら。
高次元空間をうまく設定すると線形分離可能になるというのは感覚的には分かる気がしました。
では高次元空間を設定するカーネル法とは何だとなるわけですが、ここが難しいです。本来は数学を勉強せねばと金子先生の記事に行き当たり、Lagrangeの未定乗数法で撃沈されました。
ラグランジュの未定乗数法の気持ち【条件付き極値問題】
は楽しく観たものの、カーネル法がわかったとは言えないままでいます。
さらに他にもいくつか見ては打ちのめされたサイトをいくつか紹介しておきます。
高校生でもわかるっていうが、私は最近娘の数学の課題の相談をされても自力では解けないのでここで深追いを断念しました。高校生は賢いよ。
下記サイトはカーネル・トリックまで数式を駆使して丁寧に説明してくれていました。
https://chokkan.github.io/mlnote/classification/05svm.html
「9.5. カーネルSVMの学習例」は非線形変換の一例を可視化までしてくれているのでお勧めしておきます。
実は数日かけてあちこち見て回ったのですが結局、カーネル関数を適切に選ぶことでより分離能の高い高次元空間を得るのだな(小並感)とざっくり理解して次へ進みます。
【SVM Learnerのカーネル関数】
今回デモデータで体験するのもその一種、RBFカーネル(=ガウシアンカーネル)を用いてSVMを実行します。
このWFの機械学習に用いるノード、SVM Learnerの設定は以下の通り。
Polynominal: 多項式カーネル
Hyper Tangent: シグモイドカーネルに相当(と推定)
RBF: ガウスカーネルに相当(次回再び)
1つのノードで、メジャーどころ3種のカーネル関数に対応する高機能のようです。ノーコードで一体どこまでできるんだと驚くばかり。次回はこのSVM LearnerでのRBFカーネル(=ガウシアンカーネル)の実装に関連して勉強をしてみます。
補足:
ちなみにHyper Tangentははっきり明示してくれているノードの説明を見つけることができなかったので、
との記事を見てシグモイド型と推定しています。
更に引用は続く:
【サンプル間の類似度を評価するカーネル関数】
金子先生のカーネル関数についての解説記事で特にありがたかったのは、今回デモデータで体験するRBFカーネル(=ガウシアンカーネル)を定性的に知ることができるようかみ砕いて説明して下さっていたところです。いろいろとありがとうございます。
上記の説明を読んで、この関数RBFカーネルで類似度が評価できることや、分離モデルに適用することが腑に落ちたように思ったので引用させていただきました。
不適切な引用もあったかもしれません。お叱りを受けたら削除いたしますがひとまずは感謝とともに。
私の感覚的な理解として、冒頭で引用したAとBの二値分類に関してだったら、あるカーネル関数で定義される高次元空間でAとの類似度を0から1で表現して等高線を引き、0.5以上ならA側に、0.5より小さかったらB側にアサインする感じかなと想像します。
カーネルトリックの難しさに敗北感は感じつつも次へ進みます。