たなかさんからこんな問い合わせがありました。
かずきせんせー、Azure MLで異常値検出をしたいです
— たなか@ (@tanaka_733) 2015, 10月 8
@okazukiみんなの端末所持数一覧から異常な人をあぶりだすのはどうでしょう?
— たなか@ (@tanaka_733) 2015, 10月 8
なので手動でインタビューをしてサンプリングしたのと一般人を大量投入したデータを作ってみました。
おでさん(予測値)が際立ちますね。
クラスタリング
さて、教師なし学習の代表例?であるクラスタリング(要は分類)してみたいと思います。データをつっこむと勝手にデータをグルーピングしてくれるというやつですね。便利便利。
データのアップロード
先ほど作成したデータをML StudioのDATASETにアップします。
EXPERIMENTSの作成
ガジェクラ判定機という名前でEXPERIMENTSを作成して先ほどアップしたガジェクラ誰だというDATASETを置きます。クラスタリングをしてくれるアルゴリズムはK-Means Clusteringというのがあります。こいつをぽとっと置きます。
クラスタリングのトレーニングはTrain Clustering Modelでやります。こいつをつなぎ合わせます。
Train Clustering Modelに赤いびっくりマークが出るので右側のLaunch column selectorでクラスタリングの判定に使う列名を指定します。今回は端末所持台数であるcountを選びます。
これで、こんな感じになります。
K-Means ClusteringでNumber of Centroidsの数字をいじると何個に分類分けするか決めることができます。今回はライトユーザー、ヘビーユーザー、廃人の3パターンくらいにわけたいので3を設定しました。
最後に、結果を表示するためにProject Columnsで表示列を絞り込みます。Train Clustering Modelの右側のピンとつないでname, count, Assignmentsを選びます(Assignmentsが分類結果)
そしたら実行します。
実行してProject Columnsの出力をVisualizeすると以下のようになります。
どうやら0がライトユーザー、1が廃人、2がヘビーユーザーと分類されたみたいです。(ここらへん分類にどういう名前つけるかは人の仕事)
では、SET UP WEB SERVICEでPredictive Web ServicesでWebサービス化しましょう。以下のような感じになります。
ガジェクラ誰だと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台持ちの人はライトユーザー。
5台持ちの人はヘビーユーザー。
15台持ちの人は廃人っぽいです。
まとめ
スマートフォンの持ちすぎには注意しましょう。