Tanimoto-kernelを使ったベイズ最適化を思いついた!

データ分析

こんにちはnissyです

前回のブログでTanimoto-kernel 搭載 サポートベクター回帰を紹介させてもらいました。

この手法について勉強していた時にふと考えが浮かんだのです!
「これってベイズ最適化に応用出来んじゃね?」

ということで、Tanimoto-kernelを使ったベイズ最適化の手法について解説して行きます!

大変申し訳ございませんが、ベイズ最適化については既知の提で書かせていただきましたm(_ _)m

ベイズ最適化について興味のある方は、こちらの書籍がおすすめです。

 

 

Tanimoto-kernel 搭載 ガウス過程回帰

やり方は非常にシンプルで、Tanimoto-kernelを搭載したガウス過程回帰でモデリングを行います。

それでは早速ライブラリを読み込みます。

データセットの準備

SMILESのフィンガープリントに変換するまでは、過去のブログで紹介してるのでそちらも参照してください。

この手法は非常に計算コストがかかるので、全1290サンプルを分割しました
学習データ:50サンプル、テストデータ:1240サンプル
目的変数は標準化すると学習が上手いこといかない感覚があるので、中心化のみしています
Tanimoto-kernelの関数を設定します。

ダブルクロスバリデーションで予測精度を確認

Tanimoto-kernelを搭載したガウス過程回帰での予測精度を確認したく、ダブルクロスバリデーション(DCV)を用いて予測精度を評価します。

ダブルクロスバリデーションの詳細については論文を参照ください。

DCVのコードは明治大学 金子弘昌先生のGitHubをだいぶ参考にしています

結果を表示します。

予測精度が高いとは言い難い結果でした。

Tanimoto-kernel搭載ガウス過程回帰のモデリング

それでは実際にTanimoto-kernelを搭載したガウス過程回帰を実装して行きましょう!!

学習はうまくいっているように感じますね。

それでは構築した機械学習モデルを使って、事前にテストサンプルとして取り分けてた1240サンプルの予測平均値と標準偏差を出力してみましょう。まずはテストサンプルのSMILESをフィンガープリントに変換するまでを実施します。

続いてテストサンプルにたいして目的変数の予測値を出力します。

この結果を標準偏差で降順に昇順ソートし、可視化してみます。

右に行くほど標準偏差が大きくなるように並び替えています。

グラフの結果より、不確実性が高くなるほど予測値は学習データの平均値(グラフ赤点線)に収束していってるようにも見えますね。これはガウス過程回帰の持つ性質でもあるので、まぁいい感じなのかなと。

この予測結果を用いて獲得関数を算出し、次の実験計画を行うことでTanimoto-kernelを使ったベイズ最適化を実施することができます!

これは私自身実際の実験に応用したことが無いので効果は検証できていませんが、興味はありますね。

実際にテストデータの実測値と予測値の関係も確認してみました。

まぁ、50サンプルで学習した結果なのでこんなものかなと・・・

まとめ

今回はTanimoto-kernelを使ったベイズ最適化を思いついたので紹介してみました!実際に材料開発で応用したこと経験は無いのですが、なんとなく有効な気がしています。

また、何か閃いたら紹介して行きたいと思います。

参考文献
P.Filzmoser, B.Liebmann, K.Varmuza, J.Chemom.,22,160(2009)

データ分析
未経験の壁をぶっこわ〜す!化学系データサイエンティスト転職ブログ

コメント

タイトルとURLをコピーしました