「KNIME Analytics Platform(KNIME)」はインフォコム株式会社が提供する、データサイエンスをするための誰でも無償で利用できるオープンソースソフトウェアです。
KNIMEはエンドツーエンドのワークフロー構築、データのブレンド、データ整形、機械学習とAIの活用、洞察の発見と共有、動的な規模拡張が可能です。データソフトウェア開発者やエンジニア、データサイエンティストたちの直感的な共同作業を実現します。
本ソフトウェアは、ライフサイエンス、金融サービス、出版社、小売業者、インターネット、小売業者、製造、コンサルティング会社、政府、研究など幅広い業界で活用されています。
KNIMEのツールの全容については、下記の記事でまとめています。どんなデータ分析ができるのか、KNIMEツールを使った事例の紹介などを記載しているので、本稿と合わせてご覧いただくことで、KNIMEの使用感がわかります。
今回は犬と猫を判別するモデルを作成してみた
今回はKNIMEでKaggleの「Dogs vs. Cats」の画像を判別します。手順は以下のとおりです。
1.KNIMEとAnacondaのインストールする
2.KNIMEの環境を構築する
3.テーブルデータを作成する
4.3で作成したデータをCNNによるモデルで学習させる
5.4で学習させたモデルにテストデータを予測させる
画像データのダウンロードはこちら。
1.KNIMEとAnacondaをインストールする
まずはKNIMEとAnacondaをインストールします。
KNIMEのインストールはこちら。
Anacondaのインストールはこちら。
2.KNIMEの環境を構築する
次は、今回必要なKNIMEのExtentionsのインストールと、AnacondaでKNIME用の仮想環境の作成をします。詳しくは本ドキュメントをご覧ください。
3.テーブルデータを作成する
ここからはKNIMEのアプリ上で進めていきます。KNIMEでは、赤い四角の部分から必要なノードを選択し、黄色の四角の部分にドラッグしてつなげていくことでさまざまな作業ができます。
今回はまず画像データをテーブルデータに加工する「01_Preprocess_image_data」を作ります。今回使用するデータは、犬と猫の画像データがそれぞれ12500枚ずつあり、犬の画像には「dog.<数字>」、猫の画像には「cat.<数字>」という名前が付いています。
具体的に「01_Preprocess_image_data」で実行している作業は
・画像データを読み込む
・画像を名前でソートし、前半の12500枚を猫、後半の12500枚を犬とする
・ランダムに4000枚選び、正規化する
・「preprocessed_150x150.tbl」というテーブルデータを作成する
です。
4.3で作成したデータをCNNによるモデルで学習させる
次は、「02_Train_simple_CNN」というワークフローを作ります。
黄色の四角の部分でCNNのモデルを作成し、青色の四角の部分で学習と保存をしています。
具体的に「02_Train_simple_CNN」で実行している作業は
・CNNモデルを作成する
・テーブルデータを読み込み、訓練データとテストデータに分ける
・CNNモデルに訓練データを学習させる
・モデルの精度を出力する
・学習したモデルを保存する
です。出力結果は「Scorer」ノード上で右クリックをし、「View: Confusion Matrix」を選択すると確認できます。
5.4で学習させたモデルにテストデータを予測させる
最後に保存したモデルに、学習の時に使用しなかったテストデータの予測をさせる「03_Predicted_Cats_and_Dogs」というワークフローを作ります。
具体的に「03_Predicted_Cats_and_Dogs」で実行している作業は
・保存したモデルとテストデータを読み込む
・モデルにテストデータの予測をさせる
・予測結果付きのテーブルデータを作成する
です。結果は「Joiner」ノード上で右クリックをし、「Joined table」をクリックすると確認できます。
見事、予測結果を確認できました。
簡単なドラッグ操作のみでデータ分析ができるKNIME
今回はKNIMEを使い、簡単なドラッグ操作のみで、画像認識のモデルを作成できました。本アプリを使うと、プログラミングの知識がない方でも、直感的にデータ分析から出力まで実行できます。Kerasノードの設定ダイアログ画面を表示して、ディープニューラルネットワークをGUIで構築可能です。
また、KNIMEは利用できるデータの形式も多様です。最初に触れたとおり、ライフサイエンス、金融サービス、出版社、小売業者など、さまざまな業種の方が利用できるので、ぜひ試してみてください。