7K Views
April 06, 21
スライド概要
業務で使用したノンプログラミングツールのKNIMEの紹介スライドです。
作ったスライドを共有します
1 KNIMEについて
KNIME? Eclipseを魔改造して作られた、データ解析のためのツール (Eclipseのプラグインなどではなくて、それ単体でダウンロードして使うソフトで す。) もともとは、医薬系の研究者のために作られた。 ドイツのコンスタンツ大学が2004年に製薬業界に対して開発。 医薬系の研究者は、プログラミングは得意ではないので、 (なるべく)ノンプログラミングでデータ解析ができるツールとなっている。 単一の機能を持つノードを1つずつくっつけていくことで、行と列のテーブル状 のデータを整形したり結合したり、CSVやエクセル形式で出力したり、KNIME 上でグラフ表示したりすることができる。 例えば以下の機能のノードがある。 データの読み/書き用ノード データのフィルター、分割、編集、結合(Join) などのノード グラフ表示用ノード ループや例外処理などデータフロー制御用ノード 2
KNIMEの位置づけ 3 データ解析ツール界隈では有名 KNIMEはRapidMinerと共にリーダーポジションにいる (Gartner調べ) KNIMEとRapidMinerの比較 いろんなサイトの両者の評価はほとんど拮抗している UIの見た目では RapidMinerが良く、拡張性ではKNIMEが良 い 詳しくはこのブログを参照) https://www.ksk-anl.com/blog/rapidminer-vs-knime-%EF%BD%9E%E5%B8%82%E6%B0%91%E3%83%87%E3%83%B
https://knime-infocom.jp インフォコム株式会社のKNIME紹介サイト KNIMEの概要を知るためには、日本語でまとまっ ていて、わかりやすいかもしれない。(左の活用 事例もここから取得) 活用事例 4 世界中の様々な業種の企業がKNIMEを活用しているとのこと。 【データリテラシーの向上と意思決定の改善】データから新たな洞察を得て、あらゆる場所でより良い意思決定を行う [製造] Continental 【自然言語処理によるレトロフィットROIの定量化】作業指示書を手動で読む必要を無くす [サービス] BGIS 【データの民主化】シチズンデータサイエンティストアプローチを推進する [製造] Siemens Digital Industries [ヘルスケア] Chiesi Farmaceutici [小売・販売] Automotive Holdings Group 【物理化学的特性の計算と登録の自動化】化合物評価を完全自動化し、化学者にタイムリーに情報を提供する 【最適な在庫管理】陳腐化した在庫による損失を回避し、インサイトまでの時間を加速させる 【プラン管理のより良い意思決定】競争が激しい観光業界で競争力を維持する [サービス] thaltegos 【リスク情報の抽出】テキストベースの情報を自動的に収集・調和させ、手作業の手間を省く [ヘルスケア] S-IN Soluzioni Informatiche 【株価変動の予測】興味のある銘柄を監視し、変化を予測し、それに応じて対応する [金融] Crystalloids 【予測分析を活用した医療廃棄物の削減】終わりのない廃棄物サイクルに終止符を打つ [ヘルスケア] Z5 Inventory 日本では日本たばこ産業株式会社(JT)が導入 JTの医薬総合研究所 薬物動態研究所という研究所 がKNIMEを利用
ダウンロード ダウンロードはここから(メールアドレスとか登録 しなくてもダウンロード可) https://www.knime.com/downloads/downloadknime 5
動画のチュートリアル Udemy という動画サイトで、無料チュートリアル (英語)を視聴できます。 https://www.udemy.com/course/knimebootcamp/ これを見ればおおよそ内容がわかると思います。 全部で4時間あるので、必要なところだけ見ればよさそう です 動画再生にはUdemyのアカウント作成が必要です。 6
KNIMEの画面 7 おおまかにこんな感じです。 エクスプローラー ワークフローを 切り替える ワークフロー ノードをつなげて配置 するエリア ノードリポジトリ ここから各種ノード を選択してワークフ ローにドラッグアン ドドロップする
サンプルワークフローのダウンロード KNIME公式のKNIME HubやNodePitから色んなサ ンプルをダウンロードできます。 https://hub.knime.com/ https://nodepit.com/ 多種のノードがあるので、ノードの使い方がわか らないときは、上記サイトからサンプルをダウン ロードして、「こう使うのか」と使い方を調べる 必要があります。 上記サイトには公式が作成したものだけではなく、 個人が作成したワークフローもアップロードされて いる。 KNIMEアカウントを作ればアップロードできる KNIMEの拡張プラグインをインストールすれば基本 セット以外のノードも使える 8
KNIME HubやNodePitで見れること 9 1. ワークフロー ワークフローの処理の内容が説明さ れている (ダウンロード可能) 3. ノードの詳細説明ページ 2. そのワークフローで使用されてい るノード一覧 (クリックすると3.に飛ぶ)
サンプルワークフローの解説 • ここから超単純なワークフロー の解説をしていきます。 • このワークフローと同等のものは 以下からダウンロードできます。 • https://hub.knime.com/knime/s paces/Examples/latest/02_ETL_ Data_Manipulation/00_Basic_Ex amples/00_Visual_Analysis_of_Sa les_Data 10
ファイル読み込み (サンプルワークフロー) 11 ノードの使い方の例としてCSVのファイル読み込みを行います このサンプルでは、File Readerノードを使用していますが、CSV読み込み専用のCSV Reader ノードもあります。
ノードを右クリックし、Configure画面でファイルパスの 設定などを行います。 12 File Reader を右クリック して、Configureを選択 Configure画面が開く ファイルパスなどの設定を行う
設定が終わったら、再度ノードを右クリックして、Executeを選択し、ノードを実行。 13 ノード右クリックして、 Executeを選択、ノード を実行 実行後は、ノードの下のラン プが黄色から、緑になる。
実行後にノードに読み込まれたデータを確認 ノードを右クリックして、 File Tableを選択 14 テーブルとして読み込まれたデータが表示される。 (入力CSVで空欄だったセルは? (赤色)となっている。 この?はKNIME上ではmissingと呼ばれる)
Column Filter (サンプルワークフロー) 15 Column Filterノードは、処理に必要なカラムだけをフィルターすることができるノード です。 不必要なカラムは削除することで、その後の処理が分かりやすくなるし、処理も軽くなりま す。
16 その後の処理に必要なcountry, date, amountだけを残して、後は除外しています。 Column FilterのConfigure画面
実行後は、選択した3つのカラムだけがテーブルに残ります。 Column Filter実行後の出力テーブル 17
Row Filter (サンプルワークフロー) 18 このRow Filterでは、countryカラムがunknownとなっている行を全て除外しています。 ちなみに、この文章(Exclude rows where country unknown)のように、 各ノードに対して、自由に説明文を付けることができます。 ここに説明文を書かないと、いちいちConfigureでどんな設定をしたかを見 に行かなければならず面倒です。(時間がたつと、どんな意図で設定したか も忘れます)日本語OKです。
Row Filterの出力結果 Countryカラムがunknownになっ ている行が除外されました。 19
グラフ表示 (サンプルワークフロー) このサンプルでは2つのグラフ表示を行っている Stacked Area Chart Pie/Donut Chart Color Managerで色付け 20
Stacked Area Chart の表示 横軸が日時 縦軸がamount 21
円グラフの表示 国別のamountを表示 22
23 基本的には、サンプルワークフローのように、入力->処理->出力orグラフ表示 の流れで、ワークフローを作成する データ入力 何らかの 処理 データ出力 (or グラフ表示 or 表の表示)
入出力系ノード紹介 24 CSVやExcelファイル、テキスト ファイルなど CSVファイルにはCSV Reader, ExcelファイルにはExcel Reader。 入力には非定型のテキストファイル も可能でした。 File ReaderやFixed Width File Readerなどを使う。 入力を受け取ったあとで、整形を頑 張る必要がある 入出力系のノード
25 DBにアクセスすることも可能 今のところ使ったことはないですが DB用のノード
グラフ表示用ノード紹介 26 グラフ表示用ノードは、 普通のノードのほかに、 Plotly系のノードがあります。 PlotlyとはJavascriptやPython, Rで動くグ ラフ描画用のライブラリです。 https://plotly.com/graphing-libraries/ Plotlyのほうが使い慣れている人はこっちを 使うほうがいいのかなと思います 今回の仕事では先方がPlotlyに慣れているら しく、こっちが指定されてます。 Plotly系のグラフ表示用 ノード 普通のグラフ表示用 ノード
Generic JavaScript Viewノード 既存のグラフ表示用ノードでは満足で きない人、表示をカスタマイズしたい 人のためのノードです。 JavaScriptとCSSを記述できます。 Dependenciesで使用するライブラリ を選択できます。 D3, Plotly, jQuery, jQueryUI (注:これ以外のライブラリは使用でき ません) 27
よく使う処理ノード紹介 今までの仕事で、よく使ってるノード2つ紹介します String Manipulation Rule-based Row Filter 28
String Manipulationノード 入力から入ってきたデータを文字列操作する。 文字列操作はほぼこのノードできる汎用性の高いノード 正直、文字列操作はまずこのノード使ってみるって感じ 29
関数一覧から関数を選んで使用する。 substr remove join strip いろいろある。 • 入力の複数のカラムの データを処理すること も可能 • カラム1と2の文字列 を結合したりなど 右の設定は、 「column1カラムの”A”を 全て”Z”に置き換えたものを、 新規にcolumn3カラムを出 力テーブルに追加してから、 追加する」 という設定 Configure画面 30
31 • 前ページの設定で、String Manipulationを実行した結果 入力 出力
Rule-based Row Filterノード この条件に当てはまる行だけ欲しい!Or いらない!というときに使います。 左のサンプルの設定のように、 複数の条件式を書いて、 それに当てはまるもの行だけを抽出 したり除外したりすることができま す。 Filterでだけでなく、 Splitterというノードも あります。使い方は同 じです。 32
ワークフロー制御 ループや条件分岐のためのノードがあります • ループ用ノード • ループ用のノードは、 Loop StartノードとLoop Endノードで挟まれたフ ローを繰り返すノードです。 • 条件分岐用ノード • IF SwitchやCASE Switch といったノードがあります。 33
コンポーネント化 34 複数のノードをまとめて1つのコンポーネントとして扱うことができます。 コンポーネントにまとめると、ワークフローの見た目が抽象化されてわかりやすくなります。 巨大なワークフローになるとディスプレイ1画面に収まらないし読みにくくなるのでコンポーネント 化は必須です。 下図のグレーのノードがコンポーネントです。 コンポーネントの中身 (「Ask for file and email address」と書いてあるノード。 このタイトルは自由に付けられる。) (コンポーネントの出力はComponent Outputにつ ながっている) コンポーネントOpen
Flow Variables (機能) KNIMEにはノードの他に、Flow Variablesという概念・機能があります。 これは、実際にサンプルワークフローをダウンロードして動かしてみれば、わかり やすいのですが、なかなかスライドで説明するのが難しいです。 初めは何のために使うの?と思いましたが、意外と多用されます。 ノードに対して、ノードの外側から設定項目を変数で設定したりできる機能です。 35
Flow Variablesの例 CSV Readerが読み込むCSVのパスの値をFlow Variableで設定する Flow Variableを 生成するString Configuration の設定画面 Parameter Nameがfilepath とし、その値はDefault Valueに記載。 赤い線が Flow Variableの 流れを表している (黒い線は普通のデータを表す) 36
CSV Readerの設定 String Configurationノードから受け取ったFlow VariableのfilepathをInput locationに設定する。 37
例外処理 38 TryノードとCatchノード、その間にBreakpointノードを挟むことで例外処理を実現で きる。 図は、input-folderにsample.csvが無いときはダミーデータを作成して出力するワークフ ロー
その他の主なノード JavaやPythonスクリプトを実行できるノード 統計関係のノード 画像処理関係のノード バイオ系/化学系の拡張 39 もともとバイオ系/化学系の人達が使うために作られたせいか、 こちらが充実してるっぽい(他のバイオ系ツールとの連携等) KNIME Labs テキスト処理系ノード 深層学習系ノード(Keras, TensorFlow) ここらへんは実際に使用してないのでただ羅列。 別途、拡張インストールが必要なものがほとんど。 化学系のツールがKNIMEで使える例
カスタムノード KNIMEでは、ノードを自作することができます。 既存のノードだけでは要求を実現できないときの最終手段です。 KNIMEはEclipseをベースに作成されているので、カスタムノードは、 Eclipseのプラグイン拡張開発がベースとなっています。 必要な知識は、以下のような感じです。 Eclipseプラグイン開発の初歩的な知識 (Eclipse自体Javaで作られているのでJavaの知識) KNIMEが独自に拡張した部分についての知識 公式サイトにチュートリアルがある(サンプルのソースもダウンロード可) 40