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

2016年9月18日日曜日

ありそで無かった? Watson API(Bluemix)のデモ一覧まとめ

お客様先で「Watson API」の簡単なデモ等をする際、都度、検索エンジンで調べてアタフタしないよう、「Watson API」のデモURL一覧をまとめてみました。

なお、私の独断と偏見(お客様先で「おーっ!」とか「わかりやすいねぇ」と言ってもらえそう感)でピックアップ・ソートしておりますので、そのあたりは御了承ください。

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

おすすめデモページ一覧(2016年9月18日記載)


Personality Insights
・API概要:
言語学的分析とパーソナリティ理論を応用し、テキストデータから、その筆者に関する特徴の推測が可能です。

・デモサイトで出来ること:
以下のデータソースを元に、Personality Insightsの「性格特性」と「サンバースト」図をアウトプットできます。

ツイート分析:
 「@Oprah(英語)」
 「@KingJames(英語)」
 「@DonFranciscoTV(スペイン語)」
 「@pontifex_es(スペイン語)」
 「@trikaofficial(アラビア語)」
 「@faridyu(ダルビッシュ有、日本語)」

テキスト入力:
 「2012ディベート-バラク・オバマ(英語)」
 「スピーチ-ガンジー(英語)」
 「道草-夏目漱石(日本語)」
※「任意のテキスト」では御自分でお好きなテキストをペーストして分析も可能です。

https://personality-insights-livedemo.mybluemix.net/



Conversation
API概要:
自然言語を理解し、Watsonと対話形式で会話することが出来ます。

デモサイトで出来ること(英語):
自動車に組み込まれたWatsonに対し、ワイパーやラジオの起動等を入力ボックスから指示することが出来ます。Watsonからの返答は音声・テキスト・操作の挙動でフィードバックされます。
英語での指示入力が難しい方は、画面右上の「What can I ask?」から指示を選択してください。

https://conversation-demo.mybluemix.net/



Visual Recognition
API概要:
ディープラーニング(深層学習)のアルゴリズムを使って画像を解析し、その画像が何を表しているかを確度と共にフィードバックします。

デモサイトで出来ること(英語):

下記方法でインプットした画像の認識を行います。
-サイトに提示されている画像(セレブリティー、動物、スポーツ等)
-画像URLを直接指定
-デモ行う端末にある画像ファイルをアップロード

https://visual-recognition-demo.mybluemix.net/



Speech to Text
・API概要:
入力した音声データから文字を書き起こします。

・デモサイトで出来ること(英語):
以下のデータソースを元に、入力された音声データを文字に書き起こします。
※デモページ自体は英語ですが、入出力データは日本語にも対応しています。

-デモページから録音した音声
-事前に録音された音声データ
-デモページで用意された録音データ

https://speech-to-text-demo.mybluemix.net/?vm=r&s=1



Text to Speech
API概要:
入力したテキストデータから音声を出力します。

デモサイトで出来ること(英語):

・テキストボックスにペーストした文字を指定した言語・性別の音声で出力します。
・「Expressive SSML」を使うと、「ウキウキした口調で」「謝罪するときの口調で」「確信のない口調で」といった表現の読み上げが可能となります。
※デモページ自体は英語ですが、入出力データは日本語にも対応しています。

https://text-to-speech-demo.mybluemix.net/?vm=r&s=1



Tone Analyzer
API概要:
入力したテキストのトーンを以下のドキュメントレベルに分けて分析します。

デモサイトで出来ること(英語):
以下のデータソースを元に、Document-levelに沿った分析データをアウトプットします。

-Customer service chat(sample)
-Language Style(sample)
-Social Tendencies(sample)
-Your own text(自分で入力したテキスト)

https://tone-analyzer-demo.mybluemix.net/
 


Natural Language Classifier
API概要:
日常会話などに含まれる微妙なニュアンスも含めた文脈・意味も解釈した分類を実現します。

デモサイトで出来ること(英語):

入力した天気に関する質問を読み込み、「何のことであるか」を理解し、「該当する分類」と「確信度」を出力します。

http://natural-language-classifier-demo.mybluemix.net/