post Image
非プログラマのための機械学習ツールKNIMEのご紹介

はじめに

誰向けの記事か

本記事は 前回のOrange紹介記事と同じく、非プログラマだけど機械学習してみたい、しなきゃいけない!という方のための記事です。Orangeより今回ご紹介するKNIMEの方が機能がリッチ、かつマシンパワーが必要なので、マシンスペックに自信のある方は是非こちらをお試しください。

実施事項

ドイツ出身の機械学習OSS、KNIMEをWindows7にインストールし、UCIのAdultデータセットを用い、様々な人の属性から、年収が5万ドル以上か?5万ドル未満か?を判定する分類器を作成し、評価を行います。

手順

ダウンロード

KNIMEのダウンロードサイトに行き、各入力項目に入力し、Submit & Downloadしてください。今回は、KNIME Analytics Platform + all free extensions for Windows (installer)を使ってインストールします。1.48 GBあるので、(64bit版)ダウンロードに少々時間がかかる場合があります。

インストール

.exeファイルを実行するといろいろ聞いてきますが、デフォルト設定でとりあえずはインストールしてください。

起動

インストール後に起動するか聞いてきますので、起動。Workspaceをどこに置くか聞かれますが、デフォルトでOK。(社員番号だけ塗りつぶしています)
キャプチャ.PNG

すると、こんな画面が現れます。
開始画面.PNG

クラスタリングフロー作成

1 新規ワークフローキャンバス作成

Ctrl+Nで新規ワークフローのためのキャンバスが作成できます。名前は今回はTESTとしておきます。

2 データの読み込み

File_reader.PNG

左下のNode RepositoryからIO>Readを選び、File Readerを選択します。キャンバスにドラッグ・アンド・ドロップで、

キャンバス1.PNG

このように置けますので、ダブルクリック。

Adult読み込み.PNG

UCIのAdultデータセットのURLを入れ、Column delimiterをコンマに設定すると、データが読み込まれます。URLから読み込むとColumn Nameが入らないので今回は手動で変更。OKを押します。

3 データの可視化

VIEW.PNG

Node RepositoryからViewsを選び、データの全体感を見るため、Histogram(interactive)を選択、キャンバスにドラッグ・アンド・ドロップします。

キャンバス2.PNG

Histogramノードをダブルクリックすると、
VIEW2.PNG

このような画面が。ここで、Display all rowsにチェックを入れ、OKをクリック。
キャンバスに戻ってHistogramノードを右クリックし、Execute and Open Viewsボタンをクリックします。
VIEW3.PNG

下のタブでセッティングを色々変えられるので、データに異常がないかチェックできます。

4 モデル作成

Node RepositoryのAnalytics>Miningグループを見ると、様々なモデリング手法が用意されていることがわかります。その中で、今回はシンプルなDecision Treeを選択してみます。

DT1.PNG

その前に、Cross Validationの準備をしなければいけないので、

CV1.PNG

ScoringのなかにあるCross ValidationからX-Partitionerノードを選択し、キャンバスに置きます。ダブルクリックすると、以下のダイアログが現れます。
CV2.PNG
ランダムシードを適当に入力します。

そして、先程のDecition Tree LeanerとDecition Tree Predictorをキャンバスに置き、
キャンバス5.PNG

ダブルクリックすると、以下のダイアログが現れます。
DT2.PNG

ここで、Target ColumnがしっかりTargetになっていることを確認。Tuningもここでできます。
OKをクリックし、Decision Tree Learnerノードを右クリックしExecuteします。終わったら、Decision Tree Predictorノードを同じようにExecute。

Predictionまで終了後、Predictorノードを右クリックすると、Classified Dataが見られます。
結果1.PNG

5 モデル評価

モデルの評価をしましょう。Node Repositoryから、Scorerを選びます。
scorer.PNG
これをキャンバスに置き、Predictorノードとつなぎます。
キャンバス6.PNG
Scorerノードをダブルクリックすると、
scorer2.PNG
Second Columnの入力を求められるので、Prediction(target)を選択。OKをクリックして、Execute。

終了後、右クリックをすると、Confusion MatrixとAccuracy statisticsが見られますので、見てみます。
まずConfusion Matrix。
CM.PNG

Accuracy statisticsがこちら。
ACR.PNG

こちらを見ながらTuningするなり、モデリング手法を変えるなりして、良い分析結果まで導きましょう。

最後に

Orangeとの比較

前回の記事で使ったOrangeよりも、機能がリッチで本格的な印象です。かつ、モデリング手法が豊富です。NNまであります。ループ処理などもできますし、ワークフローをまとめて一つのノードにしてしまうことも可能です。javaもRもPythonも書けるので、いざという時にも安心です。
しかし、最初この記事もXGboostを使って書く予定だったのですが、うまくClassificationしてくれず、途中で手法をDecision Treeに変えました。KNIMEの方が、見えない難しさが潜んでいるのは間違いないです。
ワークフローの汎用言語への変換は今回も見つからず。できる方は教えてください。

結論

お手軽感を求めるならOrangeの方がおすすめで、色々弄り倒したい方にはKNIMEがおすすめ。他にこんなOSS知ってるよ!という方は是非ご連絡ください。


『 機械学習 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。