たまにはちょっとソフトウェア

ワークフロー&スウィィート

KNIME 4.1 について

  

 

個人的にお気に入りのソフトウェア「KNIME Analytics Platform(以下 KNIME)」の最新バージョン 4.1.0 がリリースされました。早速新機能をチェックしてみましょう。

 

Navigation in the Workflow Canvas

ワークフローキャンバス上で Ctrl+F(Macの場合はCommand+F)を押して、ワークフロー内のノードを検索できるようになりました。ノード名、ノードID、コメントで検索できます。

f:id:tymsk3891:20191208015411p:plain

Ctrl+F を押すとワークフローのノード一覧が表示

f:id:tymsk3891:20191208015208p:plain

「抽出」をキーワードにして検索

 

Machine Learning

Binary Classification Inspector node

二項分類問題では、分類しきい値を調整して、分類タスクに合わせてモデルを最適化することが不可欠です。Binary Classification Inspectorノードは、機械学習アルゴリズムごとに最適なしきい値を適用することにより、二項分類子を比較するのを助けてくれます。

 

AWS Personalization Service

Amazon Personalize サービスと連携できるノード群がリリースされました。使用するには AWS 環境と資格情報が必要です。

aws.amazon.com

 

 

Components

 Component がワークフローと同様に KNIME Explorer 上でダブルクリックして編集できるようになりました。Component の説明に加え、カテゴリとアイコンも設定できるようになりました。 

f:id:tymsk3891:20191214143030p:plain

Component に色とアイコンを設定

 

Input Filtering and Validation

 Column Filter Configuration ノードと Column Selection Configuration ノードが拡張されました。選択対象とする列のタイプを選択したり、選択数の下限値を設定できるようになりました。

f:id:tymsk3891:20191214154432p:plain

KNIME 4.1 の設定画面

f:id:tymsk3891:20191214154519p:plain

KNIME 4.0 の設定画面

 

Nodes, Nodes, Nodes (新ノード)

MDF

 MDF(Measurement Data Format)はバイナリファイル形式で、測定およびキャリブレーションシステムの事実上の標準です。MDF Readerノードを使用すればMDF ファイルを読み込むことができます。

f:id:tymsk3891:20191214230503p:plain

.mf4 ファイルを読んだ状態

 Power BI

 Send to Power BI ノードを使えば、KNIMEで作成したデータをPower BIに簡単にアップロードできます。 ノードのダイアログでOAuthベースの認証を使用し、データをアップロードするワークスペース、データセット、およびテーブルを選択します。ノードを実行すると、すべてのデータがPower BIダッシュボードで利用可能になります。

 Row Filter (Labs)

Row Filter (Labs) ノードを使用すると、行インデックスや行IDなど、複数の列の条件で行をフィルターできます。 KNIME Labs Extensions として提供されているので、複数の条件に基づいてデータをフィルタリングする場合は、試してみると良いでしょう。

f:id:tymsk3891:20191214232247p:plain

複数条件を組み合わせてフィルター

 Webpage Retriever

 Webpage Retriever ノードは HTTP GET 要求を発行し、Webページを取得します。 XHTML 形式に変換できるので、XPath ノードを使用すれば取得した Web ページから必要な情報を抽出できます。 Web ページからCookieを抽出したり、リクエストにCookieを含めることもできます。

f:id:tymsk3891:20191215233858p:plain

得られた XHTMLXPath ノードで解析

 Top k Selector

 Top k Selector ノードを使えば、指定した並べ替え規則に従って上位 k 行を選択できます。Active Learning 拡張機能の Element Selector ノードをKNIME 標準ノードとして完全に書き直したものです。Sorter ノードと Row Filter ノードを1つにしたようなノードです。 

f:id:tymsk3891:20191215235859p:plain

上下とも同じ結果になる

 

KNIME Database Extension

 DB Connection Extractor ノードや DB Connection Closer ノードなどの実用的なノードが追加されましたが、大きな改良点はトランザクション管理ができるようになったことです。 DB Transaction Start ノードと DB Transaction End ノードでトランザクション限界を指定できるようになりました。

 

kni.me

 

 Technical Improvements

 Dynamic Ports

 一部のノード(Concatenateノードなど)でポート数が変更できるようになりました。 左下隅に3つの黒い点があるノードが対応しています。

f:id:tymsk3891:20191217001529p:plain

Concatenate のポートを増やした例

 New Flow Variable Types

KNIME Analytics Platform 4.1では、新しいタイプのフロー変数が導入されています。 これまでフロー変数は string、integer、および double が使用可能でしたが、新たにboolean、long、array タイプが使えるようになりました。

 

まとめ

 ユーザの使いやすさを向上させるアップデートとなりました。Component のアイコン部分に愛犬の写真など入れてみてはいかがでしょうか。

 

KNIME 4.0 について

 

www.knime.com

 

 

個人的にお気に入りのソフトウェア「KNIME」の最新バージョン 4.0 がリリースされました。早速新機能をチェックしてみましょう。

Components

Wrapped Metanodes の呼び名が Components に変更されました。右クリックメニューの Metanode の内容などが変更になっています。使用感は変わらず、普通の Metanode はそのままのようです。(細かい変更理由はこちら

f:id:tymsk3891:20190629155024p:plain

KNIME 4.0 - Components

f:id:tymsk3891:20190629155307p:plain

KNIME 3.7 - Wrapped Metanodes

Performance

KNIME のパフォーマンスが大きく改善しました。

  • できる限り直近に読み込んだテーブルをメモリに保持
  • テーブルをメモリに保持できない場合、高度なファイル圧縮アルゴリズムを使用
  • ノードのデータ処理量の大部分を並列化
  • ガベージコレクションアルゴリズムの更新によってフリーズが減少
  • Parquet カラムナフォーマットのテーブルを利用

数倍スピードアップした例が紹介されています。

KNIME Database Extension

KNIME Labs でリリースされていた DB ノードが正式なノードとしてリリースされました。旧 Database ノードからパワーアップしているようです。

  • データタイプマッピング
  • データベーススキーマの操作性
  • ドライバー管理
  • データベース接続管理
  • 全 Reader / Writer ノードのストリーミング対応
  • 進化した SQL エディタ(シンタックスハイライト、プレビュー)

f:id:tymsk3891:20190629172653p:plain

KNIME 4.0 - DB vs. KNIME 3.7 - Database

Machine Learning

機械学習モデル解釈と自動化のためのノードと新しいアルゴリズムが追加されました。

Machine Learning Interpretability (機械学習解釈可能性)

LIME / SHAP / Shapley Values Loop ノードを使うと、予測モデルが行ごとにどのように動作するかの説明が得られ、モデルの予測結果についての理解を助けてくれます。

Partial Dependence/ICE Plot (JavaScript) ノードを使うと、モデル予測が単一列の変化にどのように反応するか調べることができます。

 

Machine Learning Algorithms

以下が追加されました。

  • Isolation Forest (H2O)
  • t-SNE 
  • ONNX フォーマットの読み込み

 

Machine Learning Automation

Parameter Optimization Loop ノードで Bayesian Optimization (ベイズ的最適化)が使えるようになりました。

 

Plotly Integration

Plotly のライブラリがバンドルされ、Plotly ライブラリを使った View ノードが追加されました。

f:id:tymsk3891:20190704014151p:plain

JavaScript Views - Plotly

f:id:tymsk3891:20190704014035p:plain

3D Scatter Plot (Plotly)

 

Duplicate Row Filter

Duplicate Row Filter ノードが追加されました。重複行を除くシンプルなノードですが、コミュニティからのリクエストに応えて作成されました。GroupBy ノードを使うよりも直感的に重複除去できます。

 

AdoptOpenJDK

KNIME Analytics Platform 4.0 から Java ランタイムが AdoptOpenJDK に変更されました。以前は Oracle Java を使用していました。

 

クラウド系、ビッグデータ、商用版の機能については割愛します。

 

まとめ

機械学習を自動化するための機能が強化され、KNIMEによって分析が完全自動化できる日がすぐそこまで来ているような気がします。

 

 

KNIME メモ:固定値の列を追加する

 

個人的によく使う、KNIMEで固定値の列を追加する方法をメモしておきます。

 

Constant Value Column ノードを使う

一番シンプルな方法。

f:id:tymsk3891:20190430010403p:plain

 

Java Snippet ノードを使う

Java のコードを書かなければならないが、return 文1行でいける。

f:id:tymsk3891:20190430010751p:plain

f:id:tymsk3891:20190430010842p:plain

 

String Manipulation ノードを使う

これも string() 関数を使って1行で書ける。

f:id:tymsk3891:20190430011431p:plain

f:id:tymsk3891:20190430011515p:plain

 

Table Row to Variable ノードを使う

別テーブルの列名と固定値を使って、列を追加する。変数を使わなければいけない。

f:id:tymsk3891:20190430012433p:plain

 

Column Appender ノード + Missing Value ノード を使う

昔作ったワークフローから発掘した今思えば非効率な方法。2つの警告マークがあるのがチャームポイント。

f:id:tymsk3891:20190430013032p:plain

 

まとめ

 個人的には Java Snippet ノードまたは String Manipulation ノードを使う方法がプログラマーみたいでかっこいいと思います。

 

 

KNIME メモ:Int To Double

 

KNIME で列を Integer 型から Double 型に変換する方法をメモしておきます。

 

「値段」列を Integer 型から Double 型に変換する。

f:id:tymsk3891:20190216150121p:plain

 ↓↓↓

f:id:tymsk3891:20190227235419p:plain

 

(方法)

Round Double ノードを使う。

f:id:tymsk3891:20190227235904p:plain

Round Double ノードの設定例

f:id:tymsk3891:20190227235931p:plain

 

ちなみにこの逆の Double To Int ノードは存在する。

 

KNIME メモ:値を欠損値に置き換える

 

KNIME で値を欠損値*1に置き換える方法をメモしておきます。 

 

(品名「みかん」を欠損値に置換した例)

f:id:tymsk3891:20190216150121p:plain

 ↓↓↓

f:id:tymsk3891:20190216150217p:plain

 

(その1)

Java Snippet (simple) ノード等を使って、値を null に置き換える。*2

f:id:tymsk3891:20190216150847p:plain

 

(その2)

String Manipulation ノードの toNull 関数*3を使う。toNull 関数は空文字("")を null に置換する関数なので、その前に String Replacer ノード等で欠損値にしたい文字列を空文字にする。

f:id:tymsk3891:20190216152407p:plain

f:id:tymsk3891:20190216152858p:plain

 

 

 

*1:赤色の?マーク

*2:文字列と数値どちらにも使える。

*3:toNull 関数は Column Expressions ノードでも使える。

KNIME 3.7 について

 

 

個人的にお気に入りのソフトウェア「KNIME」の最新バージョン 3.7 がリリースされました。早速新機能をチェックしてみましょう。

www.knime.com

 

New Statistics Nodes

KNIME Labs の Statistics に3つの検定ノードが追加されました。

f:id:tymsk3891:20181216000440p:plain

 

Jupyter Integration

Python 関連ノードで Jupyter Notebook(.ipynb)をインポートし、そのまま実行できるようになりました。

例えば、下図のような Jupyter Notebook を「getIris.ipynb」ファイルとして出力します。  

f:id:tymsk3891:20181216003305p:plain

次に Python Source ノードで knime_jupyter.load_notebook 関数を使って「getIris.ipynb」ファイルを読み込み、getIris 関数の戻り値を output_table に渡すコードを書きます。

f:id:tymsk3891:20181216005656p:plain

Python Source ノードを実行すると、Irisデータが出力されます。

f:id:tymsk3891:20181216010239p:plain



XGBoost Integration

XGBoost が使えるようになりました。Linear Ensemble と Tree Ensemble の2タイプがあり、どちらも分類と回帰に対応しています。

f:id:tymsk3891:20181216011213p:plain

 

Google Authentication and Google Drive Connectivity

新しい Google Drive Connection ノードは Google ドライブに保存したファイルをKNIMEリモートファイル処理ノードと一緒に使用できます。マイドライブとチームドライブの両方に対応しています。Google Authentication ノードは Google Sheets / Google Drive / Google Analytics.など様々なサービスに使用できます。

 

Updated Tableau Integration

Tableau との連携が強化されました。*1

 

Usability Improvements

Zooming with the Keyboard

ワークフローエディタの拡大・縮小がキーボードショートカットでもできるようになりました。CTRL + で拡大、CTRL - で縮小できます。

 

Guided Analytics and New Views

Heatmap

JavaScript Views にヒートマップを作成できる Heatmap ノードが追加されました。カラーマップを変更したり、他の Views ノードと連携することもできます。

f:id:tymsk3891:20181216130608p:plain

Hierarchical Cluster Assigner

Hierarchical Cluster Assigner ノードを使うと、階層型クラスタ樹形図を視覚化し、ユーザーがクラスタ数を決定するしきい値を対話式に設定できます。 他の Views ノードと連携することもできます。

f:id:tymsk3891:20181216132150p:plain

 

Tile View

Card View ノードは KNIME テーブルの代わりとなるビューを提供します。Table View ノードと似ていますが、画像が表示できるという特徴があります。

f:id:tymsk3891:20181216121453p:plain

「Card View」は商標の都合上、KNIME 3.7.1 では「Tile View」に変更されるようです。

 

CSS Editor

JavaScript ビューのスタイルシートを編集するためのノードです。シンタックスハイライトやオートコンプリートが使えます。

f:id:tymsk3891:20181216132912p:plain

 

Interactive Layout Editor and Nested Wrapped Metanodes

ラップメタノードのレイアウトエディタに「Visual Layout」機能が追加されました。ドラッグ&ドロップでレイアウト操作したり、ラップメタノードをラップメタノード内に配置できるようになりました。

f:id:tymsk3891:20181216124109p:plain

 

いつもどおり、ビッグデータ系の話、商用版の機能については割愛します。

 

まとめ

JavaScript を使った機能拡張が順調に進んでいるようです。

 

 

*1:Tableauは有償ソフトウェアなので省略

KNIME メモ:圧縮ファイルを扱う

 

KNIME で圧縮ファイルを扱うときの注意点をメモしておきます。 

  • .zip / .gz / .tar 形式で圧縮されたテキストファイルは Reader 系ノードで直接開ける。*1
  • zip の中に複数のテキストファイルが含まれていると、File Reader ノードの場合、1つ目のファイルが開かれる。*2
  • 非テキストファイル(.xlsx など)や複数ファイルからなる圧縮ファイルを展開するには Unzip Files ノードを使う。Unzip Files ノードは .zip / .jar / .tar / .tar.gz / .tar.bz2 / .cpio / .ar  の形式に対応している。
  • 圧縮ファイル内のテキストが欲しいだけなら、対応形式が多い Tika Parser ノードを使うのもアリ。

 

f:id:tymsk3891:20181017010804p:plain

*1:これをメモするためにブログ書きました。

*2:ノードによって挙動が違うかもしれません。