見出し画像

【W7.5】Bayesian_Parameter_Optimization_with_SVM_01_inspired

【W7にインスパイアされて】

【W7の目的】再確認

ターゲット分子(EGFR)に対して新規な化合物の活性を予測するために、様々な教師あり機械学習(supervised ML)アルゴリズムを使用する方法について学習します。

前回TeachOpenCADD-KNIMEのW7の体験は終えたのですが、サポートベクトルマシン (SVM)での活性予測に関してはハイパーパラメータを最適化できたら予測精度が上がるであろうと期待されました。

実際Overlapping penaltyを0.1から1.0に変えたら精度が上がることも体験しました。

以前にも紹介した通り、ha-te-knimeさんに倣ってKNIME workflow (WF)を編集してみようと言うのが今回の企画です。スピンオフというにはあまりにもTeachOpenCADD-KNIMEとha-te-knimeさんのWFからのツギハギしかしていないので、「インスパイアされた」と言っておきます。

【ha-te-knimeさんのWF】

ha-te-knimeさんが数年前にSVMのハイパーパラメーター最適化するKNIME workflow(WF)を紹介して下さっているのでまねします(隠す気なし)。

私は人のWFのいいとこを見てまねしやすいのがKNIMEの良さの一つだと思っています。

それにしてもha-te-knimeさんは本当に楽しそうにKNIMEでケモインフォマティクスを紹介されますよね。記事の更新が止まってしまっているのが惜しいです。いつか帰ってきてほしい!


【Parameter Optimizationの準備】Extensions導入記録

本当はさっそく取り掛かりたいんですけど、そもそもParameter Optimization Loop Startなどのノードが初期設定のKNIME AP(Analytic Platform)には入っていないです。そこで今回はExtensionsをインストールするところをやってみます。

ここもまっきーさんがぬかりなく説明してくださってます。

Step1 - 使ってみたいNodeをNode Pitで見つける

https://degitalization.hatenablog.jp/entry/2021/03/06/113531

例えばですが”parameter optimization loop KNIME”でネット検索すれば下記のサイトが見つかるでしょう。

https://nodepit.com/node/org.knime.optimization.internal.node.parameter.loopstart.LoopStartParOptNodeFactory

まっきーさんの記事を参考に進めます。

下の方にスクロールしていくと、Installationと言う項目があると思います。ここのURLが、このNodeが保存されているUpdate Siteになりますので、コピーしておきましょう。このUpdateサイトのURLは、KNIMEのバージョンが変わるごとにUpdateされていきます。

https://degitalization.hatenablog.jp/entry/2021/03/06/113531

2022年5月現在はページの右にインストール情報が表示されるようになりました。ホームページのデザインを見やすく改良したのかなと思います。

で、大事なのがバージョン確認です。
右上に小さく「v.4.5▼」とか表示されているところをクリックして、自分のKNIME AP(Analytic Platform)のバージョンに一致させてくださいね。

私はまだ4.4系なので下記のように選択しています。

今回は

の文字列をコピーしてきます。

https://update.knime.org/analytics-platform/4.4

Step2 - Preferenceに対象のUpdate Siteを追加する

https://degitalization.hatenablog.jp/entry/2021/03/06/113531

ここはまっきーさんの説明のみで充分でしょうから割愛します。いつもありがとうございます。

Step3 - Install KNIME extensions... 希望の拡張機能を指定してインストール

https://degitalization.hatenablog.jp/entry/2021/03/06/113531

も私からの補足は自分の設定画面のスクリーンショットのみの紹介でよさそうです。表示される項目などは各自の環境でまちまちですね。

「Step3.1 - File>Install KNIME extensions... を開く」

「Step3.2 - インストールしたいNodeのパッケージ名をNodePitから探す」
今回InstallしたいNodeはKNIME Optimization extensionsです。

KNIME & Extensionsの「>」をクリックすると

あまりExtensionsを入れていない方は下記のように大量に表示されますので、目的のExtensionsにだけチェックを入れます。

Extensionsは入れすぎ注意です。なぜなら

理由は下記の2点です。
他人にワークフローを共有するときに、受け取り側もその拡張機能をInstallしないといけない
KNIMEが重くなり、動作が悪くなる

https://degitalization.hatenablog.jp/entry/2021/03/06/113531

私は今回1つだけに絞っています。

チェックをつけたら「Next」を押してインストールを進めていきます。
次に確認画面が出てくると思います。ここでも「Next」を押して進めていきます。
最後にライセンス画面が出てきます。ここではライセンスの使用条件について「Accpet...」にチェックをつけた後、「Finish」を押して終了です。

https://degitalization.hatenablog.jp/entry/2021/03/06/113531

「Step3.4 - KNIMEを再起動してインストール完了」

そして下記のウィンドウでRestart Nowを押して完了です。

まっきーさんの説明文は過不足なく丁寧でいつもありがたく拝読し、引用させていただいております。あらためて感謝とともに。

【KNIME workflowの複製】

以前にもありましたが、TeachOpenCADDのワークフロー(WF)を大幅に改変するときは別名で保存しておくといいです。

今回は
TOC_W7_plus_Bayesian_Parameter_Opt
と命名しております。もちろん各自お好みで。

ではWFの編集を体験します。
以下は私が作業するときの好みで操作画面やWFを変えていますので参考まで。

【WF編集画面を使いやすく設定】

まずはWFの表示されているタブを最大化します。

逆に元に戻したい時の方法の一つとして、デフォルトに戻す方法も紹介しておきます。

「Reset Perspective」を選ぶと元に戻ります。

【表示倍率の調整】

表示倍率もお好みで変えてください。
今回のWFは75%にしてみます。

【WFの配置変更】

W7の「7. Ligand-based screening: machine learning」ノードを開き、
サポートベクトルマシン(SVM)のWF部分のみを下にずらしました。

この操作、最初慣れないと意外にできないです。以下に説明をしてみました。

どうしてもできないときは連絡ください。支援します(笑)

【Parameter Optimization Loop Startノードの設置】

やっと編集を始めます。WFのタブを全画面表示しているときは左端にNode Repositoryのアイコンがあるのでクリックしてウィンドウを開きます。

検索ウィンドウにParameterと打つと候補が表示されます。
一文字間違っても出ないので注意です。
私はよくParametorと誤記します。どうでもいいですね。

そしてParameter Optimization Loop Startを選んでお好きな場所へDrag & Dropしてください。

TeachOpenCADDは本当によくできたWFなので、6つノードを加えたらSVMのハイパーパラメーター最適化を体験できます。

【我に返る瞬間】

ここまで書いて、さすがにはしゃぎ過ぎではと気づきました。私の記事に興味を持つ方っておそらく既にWF編集は自力でやっていますよね。テンション上がりすぎてて恥かしい…。

次回は上記のように張り切って人様の作品をいじくりまわした結果の報告といたします。

WFはKNIME Hubに上げておきました。再実行すると1晩くらい待つことになりますのでご注意くださいね。


おまけ:

【凡人は模倣し、天才は盗む】

プログラミングの勉強を始めて1週間くらいの人が読むと幸せになるかもしれない豆知識3つ

https://wa3.i-3-i.info/column38.html

について書いて下さっている記事があり、紹介させていただきます。

https://wa3.i-3-i.info/column38.html

1.コピペで作ろう
2.先人の書いたコードをパクろう
3.こまめに動作確認しよう

https://wa3.i-3-i.info/column38.html

先人のプログラムを理解し、おいしいところを見つけてパクる。まさに今回私がWFを編集する際にやっていることですが、なかなかに有用な勉強になっています。

お仕事でやるプログラミングは、新しいプログラムを作ることばかりではありません。
既にあるプログラムを変更する場合もあります。

変更する対象は自分が作ったプログラムとも限りません。
他の人が作った「うわー、ごちゃごちゃ書いてて、何やってるか分からないよー」なプログラムに変更を加える必要に迫られる場合もあります。

そんなときに最初にやることは他人の書いたソースコード(プログラムの元ネタ)を見て「これは何をやってるのかな?」を読み取ることです。

https://wa3.i-3-i.info/column38.html

上記は今私が実業務で直面している課題そのものだと感じました。

パクるときは中身を理解して自分のものにしてから活用しましょう。

それを意識してパクっていると、自然と他の人が書いた処理を読み込むことになります。
「何をやっているのか」や「それを何故やっているのか」などを考えるようになります。

それを繰り返していると、他人の書いたコードの内容を読み取るのが速くなります。

https://wa3.i-3-i.info/column38.html

まだまだ模倣するので精いっぱいで、自分のものになるまで盗めたとは思えないことが多いですが、これもまた真っ当な修行なのかなと思いました。

がんばろっ。


この記事が参加している募集

記事を読んでいただきありがとうございます。 先人の智慧をお借りしつつ、みなさんに役立つ情報が届けられたらと願っています。 もしサポートいただけるなら、そのお金はKNIMEの無料勉強会の開催資金に充てようと思います。