のた犬のうまい猫めし

どら猫が作る、のた犬のための飯、略称、どら飯について語りつつ、各種技術、経済系セミナーに参加した報告、OSSいじってみた等のネタを入れていきます。更新情報はtwitterの@nota_inuにて。

db tech showcase 2014 Tokyo「センサーデバイスのデータを使ったMicrosoftAzureMachineLearning実装入門」Microsot 笹木幸一郎氏

db tech showcase 2014 Tokyo「センサーデバイスのデータを使ったMicrosoftAzureMachineLearning実装入門」Microsot 笹木幸一郎氏

 

  • マイクロソフトのフィールドエンジニア。Microsoft内のSE。設計書レビューとかバッチ遅いから何とかしろとかトラブルシュートとか。DataPlatform製品担当。
  • デバイス、収集、変換/集約、格納、分析。.NET Gadgetter、Event Hubs、Web API……


【Azure Machine Learning】

 

  • Azure Machine Learning:機械学習の実装を支援するMicrosoft Azure上のサービス。現在プレビュー期間中。そろそろ正式にサービスインする。ブラウザだけでトライアンドエラーしていろいろとできるのが売り。
  • 特徴:簡単。ブラウザだけですぐ始められる。環境準備、設定不要。Machine Learning Studio。複雑なモデルをGUI操作だけで実装可能。ボタン一つでWebサービス化し、システムとして組み込んだりできる。ほかの要素技術と連携できる。Rとか。いろいろなものをつなぐのはR。過去データを基にクラスタリングしたりする場所と連携が容易。Azure Blob、Table、Azure SQL Database、HiveQL、Power Query、HTTP。価格は一時間あたり\38.76か\76.50.サブスクリプションなしで使えるFreeTrierあり。Azureサブスクリプションなしでお試しできる。
  • 基本的な流れ:入力データの読み込み(WikipediaからWebサービスで、データベースで……)、モデルの初期化(アルゴリズム選択)、モデルトレーニング、モデルスコアリング、モデルの評価(選んだアルゴリズムによってROC曲線、誤差ばらつき、複数クラス分類のヴィジュアライズ化。こんなに誤差あるならあってないね、とか判断できる。こっちのモデルなら何点とかマトリックスで表せるのが「複数クラス分類」)。トレーニング済みモデルの保存ができる。
  • アルゴリズムとしては、クラス分類、クラスタリング(K-Means Clustering)、回帰に大きく分けられ、それぞれいろいろとある。

Web API

 

  • Web APIの公開も簡単。入力、出力箇所を指定(業務データが流れるところならどこでも選択可能)、HTTPのWebAPIとして利用可能になる。Publish Web Serviceボタンひとつ。これいいかなあれいいかなをすぐにアプリに魅せられる。WebAPIにはRRS(Request-Response Service)、BES(Batch Execution Service)。
  • RRS:REST API、POSTリクエスト、HTTPのReq/ResのbodyはJSON形式。Web画面の一部の項目として入れたい場合にはRRS。ただMachineLearningは数秒-数十秒はかかるので、非同期大気実装も考慮すること。
  • BESは入力として各種データソースが指定可能。ここにでーたがあるから処理よろしく、と投げる。(Azure Blob、Table、HiveQL、HTTP。)レスポンスとしてJOBIDが返ってくるのでバッチ処理の状態を定期チェックできる。こーりんぐし、状態がFinished、Failedになったら結果を取得できる。結果はBlobストレージに書き込まれるので取りに行く。
  • WebAPI用ヘルプページ(RRS、BESごとに)ができ、サンプルリクエスト、コード(R、C#Python)も表示される。

Rの利用

 

  • Execute R Scriptモジュール。410のパッケージ(20141112時点が利用可能、独自のRスクリプトやRDataファイル取り込み可能。zipで圧縮してExecute R Scriptの入力に指定。書けば動く。標準出力、グラフィックス関数(ヒストグラムとか)の出力も参照可能。標準で準備されていないならRで書けばよい。BESで画像ファイル保存も可能。

 

 


デモ

 

  • 10段階の映画評価(あらかじめ準備されている)。Inputは採点結果。splitで100件中50件ごとに分ける。クラスタ分けするためトレーニングの箱を準備する。アルゴリズムを置く(K-Means)。トレーニングした結果を評価する。csvのどの列を評価軸とするか指定する。RUNボタンでジョブが流れる。流れている途中での結果も確認できる。Visualizeで可視化。高い点数をつけるグループ、低いグループに分ける。思った結果でなければまた追加する。

 


【.NET Gadgeteer(センサーデバイス)】

 

  • .NET Gadgeteer(ガジェッタとよむ):。NET Micro Framework(OSS)を使ったプロトタイプ開発デバイス群。Visual Studio使って開発できる。物理デバイスの差し替え可能。組み換え可能。メインボードに加速度センサ、カメラを足したいときには足して、抜いて、でつぶしが聞く。SDKを使ってカメラやタッチディスプレイに接続できる。.NET Frameworkと同様のAPIが利用可能(日常使うようなものはサポートされている。実際は。NET MICRO Framework)で既存技術が使える。位置づけとしてはラズベリーパイと同じようなもの。LED、Ethernet、ボタン、タッチディスプレイ、USB、カメラ、加速度、コンパスなどが使える。
  • 開発の流れ:デバイスの設計、物理接続、コード開発。デバイス(の画像っぽいもの)を置いて、線を引いてコネクトし、その通りに物理接続する。USB経由でプログラムデプロイ(ボードに)。ステップ実行も可能。コード実装としては、モジュール読み込み(自動生成)、センサーイベント登録、イベント処理(秒間隔で実行、など)
  • .NET Gadgeteeerは現在は打っていないが、12月中に販売予定。(IoT Kit(アイオーティーキットと読む)。メインボードと一部センサーを付属した入門者用セット。9000円くらい)若松通商で販売予定。IoT学習コンテンツは11月末には提供予定。


【そのほかの構成要素】

 

  • EventHubs+StreamAnalyticsでリアルタイム取り込み。(収集、変換/集約部分)
  • ASP.NET Web APIで収集。(AzureWebサイト)Restfulなアプリを構築するためのプラットフォーム。容易にHTTPサービスを実装可能。リクエストメソッドとURLに従った実装。(中身は書く必要があるが。)スケールしない。大規模向けではあるが。
  • Event Hubs:データをストリーミング受信する窓口。Amazonのキネシスと同じポジション。これに投げておけばよい、というもの。HTTPS、AMQPで受信。キューイング。最大7日。2014/10に正式リリース。デバイス、クライアントが増えようが、スケールアウト、スループットをあげられる。ある程度大きくなることが想定される場合に。
  • Stream Analytics:2014/10にPublic Preview。Event Hubsと連携してリアルタイムデータ取り込み。バッチ処理をほぼリアルタイムにした感じ。Azure Blob Storageから取り込んですぐにSQLDatabaseで見るとか。IoTの取り込みにフィット。Stream Analytics Query Languageで変換、集約処理実装。スケール動的変更。コードを書かなくてよい。(入出力の指定がGUISQLっぽいものは書く。(例:平均加速度を5秒間隔絵集約、とか))Webアプリの準備やメンテがいらないのがメリット。
  • Azure HDInsight(Hadoop