SPSS Modeler ヒモトク

ブログで学ぶSPSS_Modeler #05- LightGBMや地図表示!拡張ノードでPythonやRの機能を取り込む

記事をシェアする:

 

 

みなさん、こんにちは。IBMの河田です。SPSSやWatson Studioのテクニカル・セールスをしています。

 

さて今回は、Modelerの中でPythonやRを使うことができる「拡張ノード」を紹介していきたいと思います。

 

拡張ノードとは

拡張ノードは、ModelerからPythonやRなどのデータサイエンスで人気のスクリプト言語を呼び出すことができるノードです。

Modelerは豊富な機能をもっているので、ほとんどのことは完結します。ですがどうしてもそこにないアルゴリズムやサポートしていないデータソース接続などを使いたい場合に、PythonやRで補えるのがこの「拡張ノード」です。

「拡張ノード」には、インポート、変換、モデル、出力、エクスポートの5種類が用意されています。

 

 

主な用途としては以下のようなことが考えられます。

「インポート」と「エクスポート」

  • サポートしていないデータベースへの接続
  • 特殊形式ファイルからの読み出し書き出し(例:複雑なJSON、バイナリファイル)
  • Webサービスからデータ取り込み、書き込み(例:天気、株価、Google,TwitterなどのSNS、Amazonから商品や価格情報)

「変換」

  • 特徴量生成
  • 正規表現による加工
  • テキスト処理。分かち書き、ベクトル化(例:TD-IDF、Word2VEC)

「モデル」

  • 未サポートのアルゴリズムの利用(例:LightGBM, prophet)

「出力」

  • Modelerでサポートしていないグラフ出力(例:相関行列ヒートマップ)
  • 地図出力

 

実際の例を以下のQiita記事に集めて紹介しています。

→SPSS ModelerのPython拡張ノード関連記事へ

→SPSS ModelerのR拡張ノード関連記事へ

 

R拡張ノードの使い方

以下の内容を動画でも説明しています!

 

事前設定

1.R導入

Modelerのバージョンに対応したバージョンのRを導入します。
2.Essentials for Rを導入します。

パスポート・アドバンテージにログオンして、対応するバージョンのご利用のOSのIBM SPSS Modeler – Essentials for R をダウンロードして、導入します。

3.必要なライブラリを追加

利用したいRのパッケージをRのコンソールから導入します。

 

詳細は以下のQiita記事を参考にしてください。

→SPSS Modelerの拡張ノードでRを利用する

 

サンプル実行

ここでは「拡張の出力」ノードを使ってみます。Rのleafletというパッケージを使って、Modelerのデータを地図にプロットします。

サンプルストリームは→こちらです。

 

まず、Rコンソールから以下のコマンドで’leaflet’のパッケージを導入しておいてください。

(環境によって、依存するその他のパッケージが一緒に導入されますので時間がかかることがあります)

 

install.packages(‘leaflet’,dependencies = TRUE)

 

今回用意したデータは以下です。店舗ごとに緯度経度と売上が記録されています。

 

 

このデータに「拡張の出力」ノードを接続し、シンタックスとしてRを選び、Rシンタックスの入力欄にRのコードを入力し、実行します。

 

 

以下のように各店舗の売り上げサイズが地図に表示されます。

 

 

詳細は以下のQiita記事をご覧ください。

→Rのleafletを使ってSPSS Modelerのデータを地図にプロットする

 

Python拡張ノードの使い方

以下の内容を動画でも説明しています!

 

 

事前設定

一般的には以下の二つの手順が必要です。

1.Python導入

Modelerに含まれているPythonがデフォルトで使えますが、ライブラリの追加などのカスタマイズを行いたいと思いますので、別に導入することがおすすめです。

 

2.Options.cfgのeas_pyspark_python_path に設定

導入したpythonのパスを指定します。

 

3.Pythonに必要なライブラリを追加

利用したいPythonのパッケージをpipコマンドやcondaコマンドで導入します。

 

詳細は以下のQiita記事を参考にしてください。素のpythonとanacondaで手順が若干異なります。

→SPSS Modelerの拡張ノードでPythonを利用する ①セットアップと可視化

→SPSS Modelerの拡張ノードでPythonを利用する conda編

 

使い方

ここでは「拡張モデル」ノードを使ってみます。PythonのLightGBMというパッケージを使って、ModelerでLightGBMのモデルを作ります。

サンプルストリームは→こちらです。

 

まずコンソールから以下のコマンドで、python導入フォルダにcdしてから、lightgbmのパッケージを導入しておいてください。

(環境によって、依存するその他のパッケージが一緒に導入されますので時間がかかることがあります)

cd <python導入フォルダ 例”C:\Program Files\Python37″>

python -m pip install lightgbm

 

また、モデルを保存するパスを作っておきます。

mkdir c:\temp\modelpath

 

今回はサンプルでついている以下のデータを使います。AgeやIncome、Credit_cards, Education, Car_loansからCredit_ratingを予測するモデルを作ります。

 

 

 

「拡張モデル」ノードを接続し、シンタックスとしてPython for Sparkを選び、「Pythonモデル作成シンタックス」と「Pythonモデルスコアリングシンタックス」の入力欄にpythonのコードを入力し、実行します。

 

 

モデルナゲットが作成され、「Pythonモデルスコアリングシンタックス」に「拡張モデル」で書いたスクリプトがコピーされています。

 

 

指定したパスにpkl形式でモデルが作成されています。

 

 

テーブルノードをつないで実行すると以下のように予測結果がスコアリングされます。

 

 

詳細は以下のQiita記事をご覧ください。

→LightGBMをSPSS Modelerで使用する

 

注意点

RとPythonの違い

RとPythonの二つが選べますが、違いを比べると以下のようになります。基本的には使いたい機能がある言語、慣れた言語を選んでいただくのがよいと思いますが、Pythonの方がやや重いため、まずはRで実現することを検討するのがよいと思います。

 

 

 

カスタムノード

「拡張ノード」はスクリプトをノードの中に書き込むので、プログラムになじみのないユーザーにはやや敷居が高く感じられるかもしれません。プログラムをカプセル化して、オリジナルのノードを作ってしまうのがカスタムノードです。拡張機能のメニューから「カスタムノードダイアログビルダー」を起動して作ることができます。

 

 

以下のようなエディターでオリジナルのノードを作ることができます。

 

 

カスタムノードをつくればModelerのユーザーとしてはプログラムを意識する必要がなくなります。

一方でストリームを共有したり、配布したりする際には、カスタムノードのファイルも一緒に共有、配布する必要があります。特に修正した場合には面倒が増えることには気を付ける必要があります。

 

その他注意点

・「拡張ノード」はSQLプッシュバックが効きません。

「拡張のインポート」ノードでRDB接続するノードをつくっても、SQL文はプログラム内に書く必要があります。また、「拡張の変換」ノードも、そのノード以降の処理はSQLプッシュバックの対象外になります。なるべくSQLプッシュバックが終わった後に配置することが、パフォーマンスの観点からは重要です。

 

・コード作成やデバッグ

「拡張ノード」のスクリプト入力エリアは単なるテキスト入力の機能しかありません。コード作成やデバッグは、可能な限りRPythonの専用エディターで行っておき、できたものをコピーペーストで貼り付けてからインターフェースを書き足すのが効率的だと思います。

 

・Modelerスクリプトとの違い

ModelerスクリプトでもPythonを使えます。ModelerスクリプトはModelerでノードのプロパティを変更したり、実行したりというModelerの操作を自動化するスクリプトです。「拡張ノード」は、Modelerで扱うデータに対するモデル作成や加工などの操作が目的です。

行いたい操作によって使い分けたり、組み合わせて使ったりしてもらえればと思います。

 

 

 まとめ

今回は、「拡張ノード」で、PythonやRの機能をModelerに取り込んでしまう方法を紹介しました。プログラミングをしなくても様々なデータ加工や分析ができることが、Modelerのメリットですが、PythonやRを一部利用することで、ぐっと活用範囲が拡大し、さらに便利にお使いいただけることを感じていただけたら幸いです。

また、作ったスクリプトや処理は、ちょっとしたものであっても皆さんの役に立つことがよくあります。ぜひ公開してシェアしていただけるとありがたく思います。

 

 

次回は日立ソリューションズ東日本の南雲さんによる「モデル作成をもっと楽に!特徴量の選択もSPSS Modelerにおまかせ」です。

そして「身近な疑問にヒモトク」連載では5月下旬にAIT西村さんが「コロナ禍の教育現場。データでリモート授業をサポートできないか?」について執筆されます。

どちらもお楽しみに!

 

→SPSS Modelerの詳細についてはこちら

→これまでのSPSS Modelerブログ連載のバックナンバーはこちらから

→SPSS Modelerノードリファレンス(機能解説)はこちらから

 

河田 大

日本アイ・ビー・エム株式会社

テクノロジー事業本部 データ・AI・オートメーション事業部
Data & AI 第一テクニカルセールス

共著書に「実践! 異常検知と故障予測―IBM SPSS ModelerによるIoT時系列データ活用」

 

 

 

More SPSS Modeler ヒモトク stories

データ分析者達の教訓 #19- ちゃぶ台返しを受けないため「最初に」現場と握っておく

Data Science and AI, SPSS Modeler ヒモトク, アナリティクス...

皆さんこんにちはIBM の斉藤です。IBM Data&AIでデータサイエンスTech Salesをしています。 このリレー連載ブログはSPSS Modelerの実際のユーザーで第一線で活躍するデータ分析者に、デー ...続きを読む


データ分析者達の教訓 #18- データの向こうにある社会的背景や因果関係を洞察せよ

Data Science and AI, SPSS Modeler ヒモトク, アナリティクス...

こんにちは。IBM Data&AIでデータサイエンスTech Salesをしている西牧です。 このリレー連載ブログはSPSS Modelerの実際のユーザーで第一線で活躍するデータ分析者に、データ活用を進める上で ...続きを読む


データ分析者達の教訓 #17- データ分析はチーム戦。個々がミス最小化の責任を持つ

Data Science and AI, SPSS Modeler ヒモトク, アナリティクス...

皆さんこんにちは。山下研一です。IBM Data&AIでデータサイエンスTech Salesをしています。 このリレー連載ブログはSPSS Modelerの実際のユーザーで第一線で活躍するデータ分析者に、データ活 ...続きを読む