KNIME: ブースティング

By | 2015年9月23日


今回は、集団学習法の1つであるブースティングを行うワークフローを構築してみます。

knime_boosting_01

訓練データ、テストデータは、以下のサイトにある化合物のlogS値(Huuskonen dataset)を利用しています。

入手先:
https://github.com/rdkit/rdkit-orig/tree/master/Docs/Book/data
ファイル名: solubility.train.sdf, solubility.test.sdf

各ノードの設定方法を説明します。
各ノードを配置、接続した後、ノードをダブルクリックするとConfigureが開き、設定を行うことができます。

訓練データの入力

SDFの読み込みには、SDF Readerノードを使います。
File selectionタブでsolubility.train.sdfファイルの場所を指定し、Extract molecule nameとExtract SDF blocksにチェックを入れます。

knime_bagging04

次に、Property handlingタブにおいて、Scan filesボタンをし、SOL_classificationにチェックをいれます。

knime_bagging05

テストデータの入力ノードの設定におきましても、選択するファイルをsolubility.test.sdfにするだけで、残りの設定は同じです。

RDMol

SDFからRDKitのMol形式(RDMol)にRDKit From Moleculeノードを用いて変換します。

knime_bagging06

ワークフローの中に2つのRDMolノードがありますが、設定は同じです。

記述子の計算

RDKit Descriptor Calculationノードを使って、記述子の計算を行います。

knime_bagging07

ワークフローの中に2つの記述子の計算ノードがありますが、設定は同じです。

列の抽出

Column Filterを用いて、学習に必要な列だけ抽出します。

knime_bagging08

正規化1

Normalizer(PMML)を使って、入力データの正規化を行います。
ここで生成された正規化に関わる情報は、PMML出力ノードでPMMLとして出力されます。

knime_bagging09

ループ開始1

Boosting Learner Loop Startノードを用います。
特に設定は必要ありません。

学習

Decision Tree Learnerノードを用いて、決定木による機械学習を行います。

knime_bagging11

予測

Decision tree Predictorノードを使って、予測を行います。

knime_boosting_03

ワークフローの中に2つの予測ノードがありますが、設定は同じです。

ループ終了1

Boosting Learner Loop Endノードを用います。
Boostingにおけるパラメータの設定は、本ノードで行うことができます。
Number of iterationsに指定した数だけモデルが作成されます。

knime_boosting_02

ループ開始2

Boosting Predictor Loop Startノードを使います。
Model columnで、Boostringで学習したモデルを指定し、Weight columnでモデルの重みを指定します。

knime_boosting_04

正規化2

Normalizer Apply(PMML)ノードを使って、テストデータの正規化を行います。
特に設定は必要ありません。

ループ終了2

Boosting Predictor Loop Endノードを使います。

knime_boosting_05

評価

Scorerノードを使って、予測結果の評価を行います。

knime_boosting_06

以上で設定は終わりです。
ワークフローを実行した後、スコアノード上で右クリックしConfusion matrixを選択します。

knime_boosting_07

Accuracyは0.856であり、バッギングよりも若干良いスコアとなりました。


利用したソフトウェア:
KNIME 2.11.3