IoT ハンズオンコンテンツVer3のMachine Learning
未だに、Ver2を実践されている方もいらっしゃるようですが・・・
https://aka.ms/IoTKitHoL から公開しているIoTの要素を一通り学ぶ自学自習が可能なハンズオンコンテンツは、現在、Version 3です。IoTデバイス(PinKit/NETMF、Raspberry Pi2/Win10IoTCore)、または、Wpf EmulatorでIoT Hubに送ったセンサーデータを元に、デバイス識別子、計測時間、加速度からの温度状態予測をStep 7でMLを使っています。このコンテンツでは、IoT Hubで受信したセンサーデータをStream Analyticsで決めうちで温度の状態をHot、Coldに分類してストレージに格納したデータを使っています。
ハンズオンセミナーの時間の制約があり、こうしているのですが、実際には、デバイスごとの実測値を元に、温度のHot、Coldは決める必要があります。SASSensorテーブルには温度も含め蓄積されているので、R Scriptを使って、ML Studioの中で温度の高い低いを決めることが可能です。
Step10まで一通り終わった方は、是非、以下の方法を試してみて、よりリアルなMachine Learningにチャレンジしてください。
実は私は、データアナリストのプロフェッショナルでもなく、R Scriptのプロでもなく、未だ手探りの状態で、「あぁこれなら動くね」的な感じで作っています。もっといい書き方あるよーってかた、是非、フィードバックお願いします。
テーブルからのデータ読み込み
まずは、ML StudioでExperimentsを一つ新たに作成します。そして、”Data Input and Output”の”Import Data”をドラッグ&ドロップし、
プロパティで
- Data Source → Azure Table
- Account Name、Account Keyは、SASSensorのストレージの情報を入力
- Table name → SASSensor
- Rows to scan ... →ScanAll
とします。プロパティの入力が終わったらRUNで実行します。
データの分割
これがAzure MLのせいなのか、R Scriptがもともとそうなのか、ちょっとわからないのですが、時間がR Scriptを通すと、1970年1月1日からのTick数になってしまうので、分割します。
まず、Data Transformation→ManipulationのSelect Columns in Datasetを二つ追加してImport Dataに接続します。
左側は、timeを抽出します。後でマージする必要があるので、msgIdも一緒に抽出します。ちなみに、msgIdは計測時に、全ての計測レコードが一意に特定できるようにデバイスに付与している値です。左側のSelect Columns in Datasetのプロパティは、
右側は、timeだけを排除します。
設定したら、またRUNします。これで、左側のSelect Columns in Datasetから、timeとmsgIdのデータセットが、右側からはtime以外のデータセットが出力されます。
R Scriptで温度のHot、Coldを決定し新しくカラムを追加する
まずは、R Language ModulesのExecute R Scriptを追加し、右側のSelect Columns in Datasetの出力とつなぎます。
Execute R Scriptのスクリプトには、
と入力します。これで、各deviceId毎の温度の平均値を求めて、その平均値より温度が高ければHot、低ければColdという値を持つ、TempStatusというプロパティが追加されます。この段階で学習モデルの教師データが作成できます。
R言語の実行の過程で、tempmeanというプロパティが追加されています。この値は、deviceId毎に計算された温度(temp)の平均値です。ハンズオン資料の中で、TempStatusのカテゴリに変換するパートがありますが、このR言語内でカテゴリに変換しても構いません。
時間をマージする
Data TransformationのManipulationのJoin Dataを追加し、二系統のデーターセットをマージします。
プロパティで、双方のmsgIdをキーにしてデータを結合します。
各項目、設定したらRUNするのをお忘れなく。
結果をデータセットとして保存する
Join Dataの下の○を右クリックし、”Save as Dataset”を選択し、
変換した結果をデータセットとして保存します。名前は適当に付けて構いません。例えば、”Categorized Temp Status Data”とか。すると
保存が完了すると、”Saved Datasets”→”My Datasets”の下に現れます。
後は、ハンズオンのStep 7の冒頭のImport Dataをこの保存したデーターセットに置き換えれば、変換したデータを使った予測モデルが作成可能です。