Azure Machine Learningを使ってラブライブのキャラのスリーサイズを元にクラスタリングを行う


Azure Machine Learningのクラスタリング機能を使うわかりやすい例として、アニメキャラのスリーサイズ値から「スタイルが良さそう」「普通」「残念」な3つのグループにクラスタリング分けをしてみます。

CSVファイルを用意

元データ
http://www.lovelive-anime.jp/otonokizaka/member/member01.html

LL.csvに保存

ExcelでCSVファイルを作るとSJISになるのでUTF8に変換しておく。

nkf -Lu LL.csv > LLu.csv

Azure Machine Learning Stdioにデータを登録

DATASETSを押下し左下の+ボタンから登録

Experiment のキャンバスにパーツを配置

K-Means Clusteringの「Number of Centroids」は3に変更する。(クラスタを3つに分けるので3にする)

Train Clustering Modelのカラム設定

クラスタリングの計算対象のカラムを設定します

Project Columns カラム設定

結果を出力させたいカラムを設定します

AssignmentsがクラスタリングのグループIDになるので必須です。

RUNボタンを押下して実行

計算が終わったら(1分ぐらいで完了)「Project Columns」ボタンを右クリックしてResult Dataset->Visualizeを押下。

Assignmentsにクラスタリング化されたグループIDが格納されています。

絵でわかりやすく表示するとこうなります。

ラブライブのキャラに関してはウェストがメンバー全員ほとんど変わらないので、単純にHとBのスコアでのグループわけになっててわかりやすく、うまくグループ化されています。
個人的には納得の結果です。

念のためスリーサイズ値を正規化して再度実施

スリーサイズは H <-> W <-> B 間の数値レンジのバラつきはそこまでないですが、年のため数値に正規化をかけて平等に比較されるようにします。

LLu.csvの後に「Normalize Data」(正規化)を追加
正規化対象のカラムを W B H に設定する

正規化の結果

RUNで実行

数値が正規化されてクラスタリングされているのがわかります。
絵でわかりやすくするとこうです

元々のスリーサイズ値をみても、そこまでおかしなグループ分けにはなっていません。
正規化をかけなかった時とくらべて更に正確にグループ分けがされた感じです。

Azure ML クラスタリング機能の応用例

  • 戦闘機のスペック表からクラスタリング 「格闘機、地上攻撃機、マルチロール」などに区分け
  • アイドル事務所の人が大量の応募者の女性のスリーサイズデータからとりあえずAzureMLを使ってスタイルのクラスタリングを作って面接候補リストを作る→「グラマー」「スレンダー」「残念」
  • 婚活の候補一覧のスペック表からクラスタリング
  • 飲食店の感想データからクラスタリング 「高いけどうまい店」「高いけどまずい店」「安いけどうまい店」「安くてまずい店」

・・など

今回は9人をターゲットとしましたが、もっと大量の人数をさばくときに特に有効でしょう。
それ以外にもクラスタリングの元となる計算方法がよくわからん!って人もAzureMLの基礎知識だけでクラスタリングが行えるのは超ベンリだと思います。