IBM TechXchange Data Science Japan

IBM TechXchange Data Science Japan

 View Only

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

By YOICHIRO NISHIMAKI posted Mon December 23, 2024 02:02 AM

  


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

さて今回は、Modelerの中でPythonRを使うことができる「拡張ノード」を使っていきたいと思います。

拡張ノードとは

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

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

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

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

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

       サポートしていないデータベースへの接続

       特殊形式ファイルからの読み出し書き出し(例:複雑なJSON、バイナリファイル

       Webサービスからデータ取り込み、書き込み(例:天気、株価、Google,TwitterなどのSNSAmazonから商品や価格情報)

「変換」

       特徴量生成

       正規表現による加工

       テキスト処理。分かち書き、ベクトル化(例:TD-IDFWord2VEC

「モデル」

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

「出力」

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

       地図出力

実際につくられた例は以下で集めて紹介しています。

SPSS ModelerPython拡張ノード関連記事へのリンク - Qiita https://qiita.com/kawada2017/items/055ace72f9e1949004f3

SPSS ModelerR拡張ノード関連記事へのリンク - Qiita https://qiita.com/kawada2017/items/131d7769ecb44043556e

R拡張ノードの使い方

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

事前設定

1.R導入

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

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

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

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

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

SPSS Modelerの拡張ノードでRを利用する - Qiita https://qiita.com/kawada2017/items/0bb68e0b577e02bb8c6a

サンプル実行

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

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

https://github.com/hkwd/spsssample/raw/master/220316leaflet/220316leaflet.str

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

install.packages('leaflet',dependencies = TRUE)

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

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

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

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

Rleafletを使ってSPSS Modelerのデータを地図にプロットする - Qiita https://qiita.com/kawada2017/items/3b40b0fc595482deeb66

Python拡張ノードの使い方

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

事前設定

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

1.Python導入

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

2.Options.cfgeas_pyspark_python_path に設定

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

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

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

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

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

https://qiita.com/1000aki/items/72c3c9ea0fe00edd6d19

SPSS Modelerの拡張ノードでPythonを利用する conda - Qiita https://qiita.com/kawada2017/items/04f525727725d199723c#5-%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB

使い方

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

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

https://github.com/hkwd/210224PythonExtension/raw/master/lightgbm/210323lightgbm.str

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

python -m pip install lightgbm

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

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

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

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

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

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

LightGBMSPSS Modelerで使用する - Qiita https://qiita.com/kawada2017/items/b75cd4191ba90b91983b

注意点

RPythonの違い

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

R

Python

パフォーマンス

軽量

Sparkのオーバーヘッドがあるためやや重い

グラフ出力

可能

可能だが、ストリームが終了しない

導入

Essentials for RRの導入必須

Pythonを導入することがおすすめだが、デフォルトのままでも使える

カスタムノード

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

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

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

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

その他注意点

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

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

・コード作成やデバッグ

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

Modelerスクリプトとの違い

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

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

まとめ

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

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

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

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

 

0 comments
13 views

Permalink