いろいろ倉庫

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

【KNIME】データをピックアップしたい。

・KNIMEでデータからモデルを作成する際に、データ全体ではなく、その一部からピックアップして使いたくなることがある。

・例えば、「100行ある表から、30行だけピックアップして何らかの解析に使いたい」、「被りありで50行ピックアップしたい」、「分類問題でデータ数に偏りがあるので、多い方のラベルデータを、少ない方のラベルデータの数に合わせてピックアップしたい(不均衡データをアンダーサンプリングしたい)」など。

・KNIMEには、それらのピックアップを実行するノードが搭載されている(下図)。

f:id:choron81:20220108221554p:plain

・Row Samplingノードは、ピックアップするデータのサイズやピックアップの仕方を指定することができる(下図)。

f:id:choron81:20220108221704p:plain

・Bootstrap Samplingノードは、被りあり(同じ行がサンプリングされる可能性がある)でピックアップする(下図)。ピックアップされなかった行は下の出力ポートに出てくる。

f:id:choron81:20220108221834p:plain

・Equal Size Samplingノードは、指定した列にグループ情報があると判別し、そのグループ内のデータサイズが最も少ないものに合わせて他のグループからデータをサンプリングする。「だいたいでサンプリングする」こともできる(下図)。

f:id:choron81:20220108222001p:plain

・私の場合は、不均衡データをアンダーサンプリングしたかったので、Equal Size Samplingノードが便利だった。

・ちなみに、データをピックアップするのではなく、2つの表に分けたいのであれば、Partitioningノードが便利(下図)。このノードは、機械学習のワークフローを構築する際に、データを学習データとテストデータに分割する際に用いられることが多い。

f:id:choron81:20220108222749p:plain

 

終わり。