かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

Azure MLでガジェクラかどうか判定してみよう #azurejp #jazug

たなかさんからこんな問い合わせがありました。

なので手動でインタビューをしてサンプリングしたのと一般人を大量投入したデータを作ってみました。

f:id:okazuki:20151008224617p:plain

おでさん(予測値)が際立ちますね。

クラスタリング

さて、教師なし学習の代表例?であるクラスタリング(要は分類)してみたいと思います。データをつっこむと勝手にデータをグルーピングしてくれるというやつですね。便利便利。

データのアップロード

先ほど作成したデータをML StudioのDATASETにアップします。

f:id:okazuki:20151008224948p:plain

EXPERIMENTSの作成

ガジェクラ判定機という名前でEXPERIMENTSを作成して先ほどアップしたガジェクラ誰だというDATASETを置きます。クラスタリングをしてくれるアルゴリズムはK-Means Clusteringというのがあります。こいつをぽとっと置きます。

クラスタリングのトレーニングはTrain Clustering Modelでやります。こいつをつなぎ合わせます。

Train Clustering Modelに赤いびっくりマークが出るので右側のLaunch column selectorでクラスタリングの判定に使う列名を指定します。今回は端末所持台数であるcountを選びます。

f:id:okazuki:20151008225420p:plain

これで、こんな感じになります。

f:id:okazuki:20151008225520p:plain

K-Means ClusteringでNumber of Centroidsの数字をいじると何個に分類分けするか決めることができます。今回はライトユーザー、ヘビーユーザー、廃人の3パターンくらいにわけたいので3を設定しました。

f:id:okazuki:20151008225727p:plain

最後に、結果を表示するためにProject Columnsで表示列を絞り込みます。Train Clustering Modelの右側のピンとつないでname, count, Assignmentsを選びます(Assignmentsが分類結果)

そしたら実行します。

実行してProject Columnsの出力をVisualizeすると以下のようになります。

f:id:okazuki:20151008230738p:plain

どうやら0がライトユーザー、1が廃人、2がヘビーユーザーと分類されたみたいです。(ここらへん分類にどういう名前つけるかは人の仕事)

では、SET UP WEB SERVICEでPredictive Web ServicesでWebサービス化しましょう。以下のような感じになります。

f:id:okazuki:20151008231211p:plain

ガジェクラ誰だとAssign Data to Clustersの間にProject Columnsを入れて入力をcountのみに絞り込みます。そしてAssign Data to ClustersとWeb service outputの間にProject Columnsを入れてAssignmentsのみに絞り込みます。(Assignmentsが出ない場合は適当な列を選んでから一度実行するといい)

RUNしてエラーがないことを確認したらDEPLOY WEB SERVICEをします。

Excelで動作確認

ダウンロードできるエクセルを使って動作確認をします。 0がライトユーザーで2がヘビーユーザーで1が廃人です。

1台持ちの人はライトユーザー。 f:id:okazuki:20151008232447p:plain

5台持ちの人はヘビーユーザー。 f:id:okazuki:20151008232559p:plain

15台持ちの人は廃人っぽいです。 f:id:okazuki:20151008232647p:plain

まとめ

スマートフォンの持ちすぎには注意しましょう。