Windows Azure の モバイルサービス


モバイル サービスについて

Windows Azure で利用できるサービスの一つに モバイル サービス というのがあります。

モバイルサービスと書かれてしまうとなんなのか判りづらいのですが、

  • REST 経由で使用可能なデータベース(20MBytes の場合は無料)
  • 認証機能
  • モバイルへのプッシュ通知
  • スケジュール

といったサービスをセットで提供してくれるものとなります。

ちなみにウェブサービスを提供するものなので、ウェブサイト用のスペースは提供されません。(ウェブサイトが必要な場合は、別途 web sites や virtual machines の契約が必要です)

モバイルサービスを開始すると、以下の様な画面が表示されてサンプルコードや組み込み例を提供してくれます。

azure_mobileservice

提供してくれるのはありがたいのですが、 Python 用のサンプルコードがありませんでした。

というわけでメモがてら記述しておきます。

REST insert / select / update / delete

 ■

どうという事のないコードですが、適当に記述するとこのような感じです。

Azure モバイル サービスの REST API リファレンス

http://msdn.microsoft.com/library/jj710108.aspx

上に記載したコードには select に関して単純なフィルターしか指定していませんが、色々な条件を指定する事が出来ます。

$filter の指定方法は、OData の URL Conventions に記載されています。

 

Azure Machine Learning による判定処理


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

Azure Machine Learning

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

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

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

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

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

マシンラーニングの追加

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

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

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

作成してみたもの

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

やっていることは、

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

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

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

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

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

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

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

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

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

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

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

動かした結果…

azure_ml_data_03

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

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

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

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

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

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

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

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

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

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

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

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

HDInsight 用のインスタンスが立ち上がらないです…


昨日 HDInsight をセットアップ使用としたのですが、自分のアカウントだと作成に失敗してしまいました。

作成しようとしたのは、以下の様な感じです。

  • Storage Accout を East US に作成。
  • Cluster Size を 4 data nodes に設定。
  • Storage Account を East US のものを指定。

[ Create HDInsight Cluster ] を押すと、作成がはじまるのですが、 Safari だとそのまま何事もなく終わってしまいました…( IE や Chorome だとまた違った挙動なのですが、やはり失敗してしまいます。)

自分の環境に問題があるのかもしれないけど、ちょっと残念…

 

このページへのリンクやツイートによる共有はご自由にどうぞ