KNIME: PMMLノードの利用方法

By | 2015年9月9日


PMML(Predictive Model Markup Language)は、異なるアプリケーションの間でもデータマイニングモデルを共有可能にするための規格です。KNIMEにもPMML関連のノードが用意されていますので、いくつか利用してみたいと思います。

knime_pmml01_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 SDF blocksにチェックを入れます。

knime_pmml01_02

Property handlingタブを選択し、scan filesボタンを押します。
SDF内のタブ名が表示されますので、ID、NAME、SOL_classificationにチェックを入れ、OKボタンを押します。

knime_pmml01_03

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

RDMol

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

knime_pmml01_04

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

記述子の計算

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

knime_pmml01_05

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

列の抽出

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

knime_pmml01_06

正規化1

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

knime_pmml01_07

学習

SVM Learnerノードを使って、学習を行います。
Class columnにSOL_classificationを指定します。この値が教師データとなります。

knime_pmml01_08

PMML出力

正規化1ノードと学習ノードの出力をPMMLでファイル出力します。

knime_pmml01_09

PMML入力

PMML Readerを使って、PMMLファイルの読み込みを行います。

knime_pmml01_10

正規化2

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

予測

PMML Predictorを使って、テストデータのlogS値のカテゴリーの予測を行います。
特に設定は必要ありません。

評価

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

knime_pmml01_11

以上で設定は終わりです。
まずは、上半分の学習ワークフローを実行し、PMML_MODEL.pmmlを出力します。
次に、下半分の予測ワークフローを実行し、PMML_MODEL.pmmlを入力し、評価を行います。
評価の結果は、ScorerノードのView: Confusion Matrixを選択すると結果を見ることができます。

knime_pmml01_12