【W7.5】Bayesian_Parameter_Optimization_with_SVM_02_executed
【TOC_W7_plus_Bayesian_Parameter_Opt】
前回張り切ってworkflow (WF) 編集を一から記録し始めたものの、ただでさえ遅筆な私の記事更新でこの進行はだれも耐えられない遅さになると気づきました。
そこで編集後のWFをKNIME Hubにアップロードしました。
実は昨冬のうちに作ってあったので、既に十数名がダウンロードしてくださった様ですね。興味を持っていただいて嬉しいです。ありがとうございます。
(補足: Optimidzation extensionが入っていない方へ)
もしまだextensionをインストールしてない方はWFを開いたときに出るウィンドウで「OK」を押すと下記のようにOptimidzation extensionを入れることになると思います。
こうやって誰かが作ったWFをインポートすることで必要なextensionsを自動検出してインストールを指示してくれる機能は便利です。前回報告したextentionの完全手作業での導入より楽ですよね。
【デモデータの格納先】
TeachOpenCADDのW7のSVMに関係する部分のみを抽出するため、デモデータとしてW2の出力データを.table形式でworkflow内に格納しています。
もし.tableファイル自体を見たい場合は皆さんご自身の環境のknime-workspace内のdataフォルダを探してください。
【TeachOpenCADDのデータ前処理】
フローの内容はすでに報告している通りです。
【ハイパーパラメータ最適化ループ】
グレーの四角の中はすでに説明したフローです。
そこで残りの6ノードを中心に設定を示します。
【Parameter Optimization Loop Start】
t-kahiさんの素晴らしい記事があるのでノードの説明は省いて良さそうです。
t-kahiさんとは異なる点は、ha-te-knimeさんに倣ってベイズ最適化を試みたことと、ハイパーパラメータを2のn乗で設定するためMath Formula2つを使ったことです。
設定:
機械学習の10分割交差検証部分は既に紹介済みですが、random seedをTeachOpenCADD (TOC) の他のアルゴリズム (ランダムフォレストと人工ニューラルネットワーク) と合わせました。
そして、最適化ループを回すための指標ですが、Scorer(JavaScript)で算出したOverall Accuracyを選びました。
マシンパワーによるのですが、上記のループは一晩位かけて回しました。
結果:
ノードを右クリックしてAll Parametersで今回の結果を見てみると
43種の検討がされた結果、Best Parameterは
C_powerとsigma_powerともに1なので、実際は2の1乗すなわちCとσはどちらも2の時となったようです。
このハイパーパラメータを使ってモデルを再構築したのが一番右下のパートですので割愛します。
ROC Curveノードの設定もTOCの他のアルゴリズムと一致させています。
正解率はTOCオリジナルの56.33%から84.88%まで向上したので、チューニングした効果は十分あったと思います。
このように、皆さんのお知恵を借りることでいろいろと機械学習の技術を実装して体験することができました。
あらためて感謝して機械学習パートのW7を終えたいと思います。
次回はW7全体の振り返りをします。
おまけというかお願い:
【生兵法は大怪我の基】
素人が見よう見まねで先人の皆さまのWF からのツギハギをして機械学習を体験しただけなので、本来のあるべき様とは異なるのではないかと不安です。
もし間違った設定をしていたり、よりよいWF構成方法があるなどの改善案がありましたら、下記twitterへのDMなどでご教示いただけないでしょうか。
https://twitter.com/Note_of_KNIME
あるいは本記事にコメントいただくと言う形でも助かります。
記事を読んでいただきありがとうございます。 先人の智慧をお借りしつつ、みなさんに役立つ情報が届けられたらと願っています。 もしサポートいただけるなら、そのお金はKNIMEの無料勉強会の開催資金に充てようと思います。