今から始める Azure Machine Learning 最初の一歩(FESTセッションまとめ)

image

Microsoft FEST 2015 で、砂金さんが実施した「今から始める Azure Machine Learning 最初の一歩」をまとめてみました。

How-old.net という写真から年齢を抽出するサイトがあります。
まだ見たことがない人はぜひ見てください。
見て欲しいのは、年齢ではなくて、The magic behind How-Old.net という、How-Oldの技術構成を説明したページがありますので、そこはぜひ見てください。

Machine Lerningは、何に使えるのでしょうか?

いろいろ使えます。

  • 異常検知(ログが流れていて、ぽっと異常なログが出た時に検知)
  • パターン認識(ルールに基づいてモデルを作って、そのモデルにあたるのは何%ですか?)
  • リコメーションシステム
  • 売上予測(人間よりはよほどうまくやれます)

 

image

Machine Learning は、Azure Machine Learningだけ詳しくてもダメで、周辺のデータの扱い方やほかのアプリからどうやってAPIでアクセスするのかを理解する必要があります。
VisualizeではPowerBI、データ送信にはDataLakeというテクノロジーも抑えておく必要があります。

 

image

Azure Machine Learning がやろうとしていることは、機械学習の民主化です。
今までも、SassやSPSSでもできたけど、誰でも簡単にできるようにしようと思っています。

Azure Machine Learning は、皆さんに世の中を変えるようなアルゴリズムを0から考えてもらおうとは思っていません。
誰かが作ってくれたアルゴリズムを気軽に使えるAzure ML Studioがあって、ここでうまくデータを扱えるサイエンティストがいてくれたら良いと思います。

Azure ML との3つのかかわり方

image

  • APIをただ叩くだけでいい人
  • テンプレートを利用し、カスタマイズして利用する人
  • ゼロからモデルを作成する人

 

APIをたたく

image

http://gallery.azureml.net というサイトがあります。

image

例えば、コンピュータービジョンAPIで、Face APIというものがあります。
これは、アダルト画像ではありませんという判定です。
単に肌色識別だけでやっていると、ご認識しそうですがちゃんと判定されています。

 

image

Face APIを使ってみました。
Face APIからは属性データが返ってきます。
アプリケーションからロジックとして属性データを利用して、加工・抽出することができます。

 

image

難しいことはマイクロソフトが裏側でやってくれるというのを信じてもらえるのなら、すでに多くのAPIが組み込み可能な状態で多くのAPIが提供されています。

 

image

まだ日本語に対応していませんが、英語の文章を与えると気分が上がったり下がったりしているのを分析しましょうというAPIです。
Happy Friday と書くと、95%ぐらいの確率で能天気ですね。
悪いことをかくと残念そうねと判定した結果が返ってきます。

 

テンプレートを使う

image

やろうと思うとそれなりに大変です。
一見便利そうなんですが、いろんな前提知識がないとうまく扱えない代物です。

 

image

モデルを作るという作業は決められたとおりに組めば終わりという代物ではなくて、モデルを作って、精度が悪いので、もう少し工夫をしてモデルを改良して精度をあげましょうという形で、ぐるぐる繰り返す作業が必要になります。

 

image

実際にやってみましょうか。
ギャラリーにいくつかのサンプルが提供されています。

 

image

異常検知をするパッケージを見てみましょうか。上のほうで、データを読み込んでいます。

 

image

このあたりで、One-Class Support Vectorを使って予測学習モデルを作成しています。

 

image

一番下のほうには、モデルを評価するEvaluate Modelがあります。

image

これを実行しデータをみると、Rとかをしている人には見慣れたグラフが表示されます。

 

image

言葉的にわかりやすいところで、Accuracyで確からしさが70%というの示してます。

データを読み込むデータセットがついているので実行することができます。
データを増やしたり減らしたりしたらどうなるか?モデルを変えたらどうなるのかというのを繰り返しテストして評価できます。

 

image

今度は売上予測モデルを見てみましょう。
Rスクリプトというのがあります。

 

image
これはRスクリプトをぺろっとはっつけてあります。これはマイクロソフトのAPIをあまり利用せず、自分たちがすでに持っているスクリプト、ライブラリをそのまま使えます。

 

学習方法

image

ビジネスシナリオはいったんおいておいて、もっと学習したいんだ!って場合は、サンプルがたくさん提供されています。このサンプルをまずはいじり倒してください。

 

アーキテクチャ

image

いろんなビジネスシナリオで使えるのなのですが、バッチなのかリアルタイムなのかを意識してください。
学習結果に基づいて、リアルタイムに予測することはできます。
学習をリアルタイムにするのは結構大変です。
モデルを書き換えるのは、週次、月次でやろう。モデルを変えていくのはバッチでやろう。
予測は一か月に待ってくださいてのはビジネスに合わないのでリアルタイムでやりましょう。

 

ゼロからモデルを作成する

image

機械学習という広いカテゴリををなんとなく2つに分けると、教師あり学習(スーパーバイゾン)か、教師無し学習かの2つに分けます。

教師あり学習はラベルが重要です。
正解をわかっているデータを用意できるのなら、そのサンプルの正解(こういう行動をしたらやめる/やめない、こういう顔立ちは日本人だ男性だ)がわかるのなら教師あり学習。

まったく正解がない場合は、どーんとあるデータから特徴量を見つけながら、その特徴量がなぜ発生しているのかを紐といていって、パターンが分かっていくという分析の場合は正解がなくてもできる。
ただ、やれることは限られるので、なんとかラベルリングしたデータを用意できるといいですね。

 

image

レコメンデーションしましょう!となると、いろんな方法があります。
いろんな方法がある中で、どれを選びましょうかというのは自分で選ばないといけません。

ルールベースというのは、If文でロジックを書くものですね。
協調フィルタリングはAmazonで有名になったもので、自分と似たような人を見つけて、そこから購買パターンを導き出すものですね。

 

image

結果の評価が一般人には大変なんですよね。
どの値をどう見たらいいのかがわかりにくいですもんね。何がどう正解なのかがわからない。

基本的にはROC曲線てのがあって、AUCの値が大きければ大きいほど正解率が高いモデルというふうに規定されます。
正解率が高いであって、100%ではないんですね。
機械学習を通して、ビジネス的問題を解決するときに、100%保障しないといけないシナリオでは使いにくいですね。
正解率が例えば91%だとしたら、9%は外れることを前提に、どこに適用するのかを考える必要があります。

 

image

砂金モデルがあります。
砂金モデルに投入するデータは、モビルスーツです。
このモデルは二項分類で、このモビルスーツは連邦っぽいか、ジオンっぽいかを判定するものです。

データを用意するのに面倒な作業が発生します。
きちんとしたデータを用意しないといけないのですが、それをやりきるだけのパッションを与えてくれるデータが必要になります。
自分で学ぼうというときには、自分が楽しめるものを選定するといいでしょ。
(お金好きなら株、ギャンブル好きなら競馬etc

 

image

まずは、Readerでデータの入り口を定義します。
この例では、Azure Blobからデータを取得してきています。

 

image

次はノイズを減らしています。
利用するデータカラムを4列から2列にし、Nullや0だったらスキップするなどを定義しています。
データのクレイジングと呼んでいます。

 

image

スプリットという処理をしています。
学習するデータと、予測だけするデータに分けています。

 

image

どの項目を正解と定義するかを定義します。

 

image

モデルをスコアリングします。このモデルがどれぐらいの制度があるのかをスコアリングします。

image

スコアの評価結果を確認します。

 

image

実際に実行してみましょう。どのステップを今処理しているのかが見えます。
AzureMLは、実行している時だけに課金されます。モデルを作成している時には課金されません。

 

image

Web Service output っというのを定義しています。
Webフロント用にWeb Serviceとしてさらしてくれます。

 

image

特徴的なのは、Excelマークですね。
これをクリックしてダウンロードして開いて、マクロを実行してみましょう。

 

image

インプットとアウトプットを定義されています。
値をいれると結果が表示されます。

 

image

RX-75といれると、連邦ですねっと結果がでてきますね。

 

image

実際にやってみたい人はレコメンデンションシステムの丁寧な手順書がありますので、やってみてください。

 

image

マシーンアルゴリズムチートシートがあります。
http://aka.ms/AzureMachineLearningCheatSheet