いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【KNIME】Cross Validationしてみたい。

・モデルの汎化性能を評価する目的で、交差検証(Cross Validation)してみようと思った。

・通常、機械学習の際には、データを学習用とテスト用に分割する。Cross Validationでは、これを何度も実施して、予測性能を検証することになる。例えば、学習用データ:テスト用データを9:1の比で分割した場合、すべてのデータをテスト用データに入るようにするには10回回すことになる。

・ワークフローを組んでみた(下図)。

CSV ReaderでIrisデータセットを読み込み、今回は150行のデータセットを使った。機械学習手法はRandom Forestを適用した。

・上半分は通常の機械学習のフローにした。Partitioningで学習:テスト=9:1にデータを分割し、学習用データで学習・モデル構築し、残りの1割で予測し、結果をScorerで見た(予測結果とConfusion Matrixは下図)。

・テストに使ったデータ(大元150のうち10分の1である15)で予測された。

・下半分はCross Validationを含む機械学習のフローにした。X-Partitionerで学習:テスト=9:1にデータを分割し、学習用データで学習・モデル構築し、残りの1割で予測した。さらに、X-Aggregatorで異なるパターンのデータ分割で同様の処理を繰り返し、結果を蓄積する。結果をScorerで見た(予測結果とConfusion Matrixは下図)。

・すべてのデータで別個に予測した結果が統合されているので、予測結果が150個並んでおり、Confusion Matrixも150ある。

・ちなみに、X-Partitionerで分割数の設定やLeave One Outも設定できる(下図)。

・ちなみに、X-Aggregatorの下の出力ポートで、それぞれの分割時におけるエラー率などを見ることができる(下図)。

 

 

終わり。