KnowledgeStudioで作成した学習モデルをActivateの1Dモデルに取り込む方法
簡単な問題を例に、KnowledgeStudioで作成した機械学習モデルをActivateの1Dモデルに取り込む方法を紹介いたします。
問題設定
y=u+0.2u^3の3次関数に対し、乱数で±100のノイズを付与したデータを作成しました。
uの範囲は-15~15としています。これを学習用データとしてKnowledgeStudioで機械学習モデルを作成してみます。
romAIとKnowledgeStudioの違い
Activateでは、romAIで動的な機械学習モデルを作成することはできますが、ディープラーニングモデルに限られています。
KnowledgeStudioではディープラーニングに限らず、様々な種類の機械学習モデルを扱うことができますが、静的なモデルに限られます。
romAI(Activate) | KnowledgeStudio | |
メリット | 動的/静的 どちらの現象にも対応 | ディープラーニングに限らず、様々な種類の機械学習モデルを作成可能 (Boosting,Bagging,RandomForest....etc) |
デメリット | ディープラーニングのみ | 静的なモデルのみ対応 |
KnowledgeStudioで機械学習モデルを作成
KnowledgeStudioのAutoMLを使って機械学習モデルを作成してみました。
AutoMLではBoosting,Bagging,DeepLearningなど様々な種類のモデルを自動で試してくれます。
今回はDeepLearningが最も精度が高いという結果になりました。
KnowledgeStudioの機械学習モデルのpythonコード出力
①Generate Codeブロックを置く
②対象モデルと接続(今回はディープラーニングモデル)
③CodeGenerationブロックをダブルクリックし、CodeTypeをPythonにする
④Runをクリック
以下のようなPythonコードが得られますので、コピーしてActivateに貼り付けします。
KnowledgeStudio学習モデルのActivateへの取り込み
①PyCustomBlockを置く
②入力、出力の数を合わせておく(今回は1入力→1出力なので変更なし)
③generate skeltonを押し、関数コード横のボタンをクリック
④pythonスクリプトエディターの2,3行目の間にKnowledgeStudioから出力したPythonコードを貼り付け
ここから少し編集を加えます。
最後のvssBlockOutputUpdateFlag以降を編集します。
102行目:入力変数を辞書形式で定義します。今回は入力は"X"のみです。"X"はpythonブロックの入力u1(93行目で定義)と等しいとしています。
103行目:KnowledgeStudioの機械学習モデルはPreditctiveModelクラスのpredictという関数で定義されています。PredictiveModel.predict(Input_dict)で予測結果を返します。
104行目:元々コメントアウトされている出力文をアクティブにします。ただし、y1はリスト形式なのでfloat型にするためにy1[0]としています。
編集は以上で終了です。
実行すると予測した結果を可視化できます。(青線:予測したい関数(ノイズなし)、赤線:予測した結果)
今回は予測モデルの精度を高めるための試行錯誤をしていないため、下図のような結果ですが、KnowledgeStudioのモデルをActivateで使用することができました。
ここで使用したサンプルモデルはこちらからダウンロードいただけます。