2016年9月19日月曜日

SPSS Modelerだと「Kohonenネットワーク」が超簡単。

今年、一気にブレイクした「ディープラーニング(深層学習)」。どなたでも耳にされている言葉だと思いますが、合わせて「ニューラルネットワーク」や「ニューロン」というワードもかなり広まりましたよね。

<「ディープラーニング」に引きづられるように伸張する「ニューラルネットワーク」(google trend)>

実は、SPSS Modelerの中にも「ニューラルネットワーク」の技術を使ったクラスター分析として、「Kohonen(コホーネン)ネットワーク」という機能があります。
今回は簡単にその作業手順をご紹介してみます。

 ※本エントリーは、私、小田一弥が一個人として勉強を兼ねて記載したものです。私の勤務先である日本アイ・ビー・エム株式会社の見解・見識ではない、個人としての記載内容としてご覧ください。  


Kohonen(コホーネン)ネットワークとは


(Self-organizing maps, SOM, Self-organizing feature maps, SOFM)
フィンランドのコホーネン教授が考案したニューラルネットワークの一つであり「教師なし学習」に分類されます。生物の脳を構成する神経細胞(ニューロン)の動きをアルゴリズムで模しており、その特性上、クラスター分析にも活用することが出来ます。

今回使ったサンプルデータとPC環境


<サンプルデータ概要>
・サンプルデータ名:Bank Marketing Data Set
・データ概要:ポルトガル銀行が電話を使ったダイレクトマーケティングを実施した際の計測データ。
・データ作成時期:2012年2月

 当データですが、あまり事例として少ない「ダイレクトマーケティング」の実測値でして、インスタンス数(45,211)やattribute(17)も多く、欠損値も含まれていないのでとても有用なデータかと思います。
(以前、重回帰分析を「airquality」データセットで行いましたが、こっちでやれば良かったなぁと)

<PC環境>
・OS:Windows7 Professional
・SPSS Modeler ver18 Premium

作業手順


「ニューラルネットワーク」と聞くと、なんだかとても難しいと思うかもしれませんが、手順自体は拍子抜けするほど簡単です。
サンプルデータもダウンロード後にデータ加工が殆ど不要なため、是非、一度お試しください。


1.「可変長ファイル」ノードを配置
今回は、CSVファイル形式を読み込みますので、「入力」パレットから「可変長ファイル」ノードをストリーム上に配置してください。

また、プレビュー欄を見ると各フィールドは「;」で区切られているため、ダイアログ左下にある「フィールド区切り文字」の「その他」に「;」を入力してください。


2.「データ検査」ノードを配置
いつもどおり、「出力」パレットから「データ検査」ノードを配置して、データの分布や欠損値等を確認してください。


3.「データ型」ノードを配置
次に、「フィールド設定」パレットから「データ型」ノードを配置し、各フィールドのデータ型が完全に指定されているかチェックしてください。


4.「Kohonen」ノードを配置
「モデル作成」パレットから「Kohonen」ノードを配置し、「データ型」ノードからストリームをつなげてください。

その後、「Kohonen」ノードを開いて「モデル」タブで「ランダムシードの設定」を変更してください。
「ニューラルネットワーク」を使う際は、最初に初期値を設定する必要がありますが、このシード値を固定で入力しないと毎回異なる結果になってしまいます。変に混乱しないよう、「シード値は毎回1,000を入れる」といった決まりにすると宜しいかと思います。


5.「エキスパート」タブで「幅」と「長さ」を指定
「Kohonen」の出力層の格子数を設定します。デフォルトは格子数が多すぎるため、「縦:3」×「横:3:の合計9マスに変更します。


上記画面だけでは「格子」感が伝わらないと思ったので、この設定で計算させた場合の「Kohonen」出力層の様子も掲載しておきます。「縦3つ」「横3つ」になっていることがわかりますよね。


6. 「フィールド」タブでフィールドを選択
今回は、「age」「balance」「duration」「pdays」を選択してください。
各フィールドの意味はこちらのリンクを御参照ください。
フィールドの入力が済みましたら、「実行」ボタンを押してください。


7.「Kohonen」ナゲットをクリック
以前、当ブログで紹介したK-Meansと比べると計算量が多いので若干時間がかかりますが、ある程度のスペックがあればそれ程気にはならないと思います。
ナゲット(「Kohonen」)が生成されましたらダブルクリックで開いてください。

(参考)SPSS Modelerでクラスター分析をやってみた(K-Means)
http://sapporomkt.blogspot.jp/2016/08/spss-modelerk-means.html


8.モデルの確認
ナゲットを開くと、下記のような画面になると思います。

「Cohesionと区切りのシルエット指標」というSPSSが独自に生成するクラスター品質を見ると、まずまずのモデルであることがわかります。
(「Cohesionと区切りのシルエット指標」の詳細はこちらをご覧ください)


また、左下の「モデル要約」を「クラスター」に変更すると下記数表が出力できます。
色の濃さは、クラスター分類における重要度の高さを表しており、「age(年齢)」や「pdays(前回キャンペーン時に接触してからの経過日数)」の影響度が高いことが見てとれます。
逆に「duration(最後に電話で話した時の秒数)」はあまり影響がないことがわかりますね。


このような手順で拍子抜けするほど簡単に 「ニューラルネットワーク」の技術を使ったクラスターを作ることが出来ます。ただ、先人が今までマニュアル的に行っていた試行錯誤を行う手間がない分、「どのようなロジック・考え方でクラスターが生成されたか?」「欠損値の取扱いは?」など充分考慮して使うことも大切だよ!・・・と大先輩から日々御指導を頂いております(笑)

その他:SPSS Modeler関連エントリー


(無料)Watson StudioでSPSS Modeler flowの決定木を動かす

(Watson)Personality InsightsのJSONをR言語でパースしてみた

Watson Studioの「Data Refinery」機能で「馬の疝痛(せんつう)」データを眺めてみた。

SPSS Modelerでアソシエーション分析がしたいっ! (前処理編〜縦持ちを横持ちへ)
http://sapporomkt.blogspot.jp/2017/06/spss-modeler.html


(参考)SPSS Modelerでクラスター分析をやってみた(K-Means)
http://sapporomkt.blogspot.jp/2016/08/spss-modelerk-means.html


SPSS ModelerからStatistics用ファイルを出力する方法
 http://sapporomkt.blogspot.jp/2016/08/spss-modelerstatistics.html

(SPSS Modeler)馬の疝痛データを誰でもカンタン決定木♪
http://sapporomkt.blogspot.jp/2016/07/spss-modeler.html

「SPSS Modeler Text Analytics」によるテキストマイニング(データ読み込みからグラフ化)
 http://sapporomkt.blogspot.jp/2016/07/spss-modeler-text-analytics.html

「SPSS Modeler」におけるデータ操作及びシーケンスデータの取り扱いまとめ
http://sapporomkt.blogspot.jp/1970/01/spss-modeler_1.html

SPSS Modelerでリーディングサイアーデータ分析:前処理(レコード追加等)
http://sapporomkt.blogspot.jp/2016/05/spss-modeler.html

SPSS Modelerで「サイアー/ブルードメアサイアー」データをレコード結合
http://sapporomkt.blogspot.jp/2016/05/spss-modeler_13.html

0 件のコメント:

コメントを投稿