コンテンツへスキップ

Azure Machine Learning による判定処理

タグ:

以前に RapidMiner を使用して、リリカルなのはの登場人物の魔導士ランクを判定してみたのですけど、同じ様な事が Windows Azure 上で利用可能になりました。

Azure Machine Learning

こちらは Windows Azure で使用可能な機械学習ツールで、 RapidMiner で使用していたベイズ推定などを使用する事が出来ます。

この記事を書いている時点(2014-07-22現在)では、プレビュー版と言うことで米国中南部でしか使用する事が出来ません。また、各種ドキュメントも英語のみとなります。

英語版ではありますが、データ自体には日本語を使用する事が出来ますので早速遊んでみました。

ストレージアカウントの設定

Azure Machine Learning の設定や生成されたデータは指定したストレージに保存されていきますので、まずはじめに保存先のストレージを用意しておきます。(プレビュー版では米国中南部にしておく必要があります。)

マシンラーニングの追加

次にマシンラーニングの追加を行います。

データサービスカテゴリの中に「MACHINE LEARNING」というのがあるので選択します。このときに事前に作成しておいた、ストレージアカウントを指定します。

ここまで作成すると、あとはウェブ上から機械学習の設定を行えるようになります。

作成してみたもの

 過程をすっとばしていきなり図

やっていることは、

  • csv の読み込み。
  • Project Columns で必要なカラムのみに抜き出し。
  • Missing Values Scrubber で内容が不足(未設定)しているデータを除外。
  • Train Model に Two-Class Bayes Point Machine とデータを与えて学習。
  • Score Model を使用して学習結果を適用。

繋げられるものと繋げられないものの区別は、接続しようとする先の色が緑(接続可能)か赤(接続不可)かで判断が出来るのですが、実際にどういった結線をすれば良いのかはチュートリアルを読んだり、同様のソフトウェアを操作した経験がないと、やや難しいかも。

 読み込んだ CSV を Azure ML で開いてみたもの。

カラム名称、データ共に日本語も大丈夫。

データは以前に使用視した CSV ファイルをそのまま読み込んでいます。

プレビュー版は英語なのですが、データだけでなくカラム名にも日本語を使用することが出来ていて一安心。(ちなみにエンコードは UTF-8 にしてあります。)

さっそくベイズにかけてみる

魔導士レベルは以前に試したので、今回は Two-Class Bayes Point Machine を使用して、性別を判定してみます。

性別については既に全員のデータが埋めてあるので意味が無いように思えるのですが、与えられた情報を元に性別を推定させてみます。

ちなみに性別の項目を選んだのは特に理由はなく、データ上二種類に分離されているもの(Unique Values が 2)を選んだだけです。

魔導士レベルの時と同じで、与えられた情報(魔力光、どのシリーズに登場しているか、種族、術式等)の組み合わせと性別を比較して最終的な性別を数値として判定します。

動かした結果…

一番右端にあるものが、 Azure Machine Learning が算出した性別となります。

0 に近いほど女性、1に近いほど男性という見方をします。(0.5 は女性となります。)

これをみると、ヴァイスとエリオは男性判定がされているのに、ユーノは女性と判定されてしまいました。ちなみに上の方にザフィーラもいるのですがこちらも女性判定となってしまっています。

サンプル数が少ないのとアニメキャラクターに対して妥当性を検証しても仕方ないのですけど、与えられたデータからは性別を推定する事は出来なさそうです。

例えば時空管理局にいる魔力資質を持つ職員全員分のデータを用意出来たとして、同じ様な処理にかけていくことで、

  • 古代ベルカ式の使い手の女性は魔導士ランクが高くなる傾向がある。
  • 男性の魔力光は青系統に寄っている。

とかが出てくるかも知れません。

(わりと適当な事言ってます)

前回の魔導士ランクもそうなのですけど、サンプル数が少なすぎるためにあんまり面白い結果になりませんでした…というか、やっぱり魔導士ランクでやり直した方が良いかも。

Azure Machine Learning のドキュメントをみると、 Microsoft では XBOX live の対戦時のマッチングや Bing 等で培われた物がフィードバックされているそうです。

機械学習モジュールの中には Hive からの読み込みや R のスクリプト記述が出来るモジュールがありますし、簡易的な ETL としても使用できそうなのですが…やはり手持ちに大量のデータがないと面白くないですね。

(どの程度巨大なデータで活用可能なのかや、データ数に応じた料金もまだ調べてなかったりして…)