【勉強会メモ】Beaconや機械学習によるセンサデータ活用体験

ワークショップURL<https://store.macnica.co.jp/contents/109873>

#サービス紹介(前座)
ワークショップ資料とデモ <http://ec2-52-69-106-203.ap-northeast-1.compute.amazonaws.com/index.html>

##AWS IoTの取り組みの紹介
###AmazonS3
* クラウドストレージサービス.
	* データ処理のデータハブに
	* 大量のデータを扱うときは、まずS3に入れる

###Amazon Kinesis
* 大量かつ連続したセンサデータを格納
* 一時的にバッファリングして貯めることができる

###DynamoDB
* NoSQL

###AWSLambda
* センサデバイスで発生したイベントをトリガーに処理実行
* 自分で作ったコードを置いておけば、イベント発生時に実行される

###Amazon Redshift
* 収集したデータを中長期的に分析することができる基盤
* 小さく初めて将来2ペタくらい貯められる
* KinesisでデータをためてRedshiftで分析する

###ElasticMapReduce(EMR)
* クラウドにあるHadoop

##DataSpiderの紹介
* データ連携のミドルウェア 
* GUIを用いたノンプログラミングで開発できる
* プロトタイピングに有効
* データ変換やクレンジングもアイコンベースで開発可能

##Jubatusの紹介
一度学習に使ったデータは捨てることができる  

###Sedue Predictor
* 機械学習を用いてデータを自動分類
* GUIの画面を用いて機械学習を行うことができる
* 商用製品
* 対象データはテキスト

### Jubatus
* 分散環境下で利用する興ができる
* 想定用途 ： 大量に生成されるデータ（センサデータ等）
* Raspberry Piやゲートウェイで動かすことが可能となる
* 対象データ：ログデータ、センサデータ

### Chainer
* 深層学習（ディープラーニング）
* 複数の隠れ層をもつニューラルネットワーク
* 音声認識、画像分類、機会制御で驚くべき成果を出している
* 最近DeepLearning用のフレームワークがリリースされている
* 対象データ：テキスト、画像、センサデータ

##TI & Advantechの紹介
* Kibo
	* 多種なセンサを搭載したCiP-iとCC3200のWi-Fiモジュール評価キット
	* 対象物のひずみを非接触でマイクロ単位の検出可能
	* 温度、照度、湿度の各種環境データを取得可能
* SensorTag
	* 8種類のセンサに対応（搭載）
	* Buletooth Low Energy
	* コイン電池で動くLow Power
	* 拡張機能を手軽開発可能
	* 照度センサはOPT3001を使用
		* 人間に視覚特性とほぼ同じ特性を有している
		* とりあえず高性能ってことだろきっと……
* UTX-3115
	* インテルMoon Island準拠の高性能IoTゲートウェイ
	* 屋外用と可能
	* データ処理、データ集約などを高性能マルチタスク

これらはMacNicaOnlineストアで買えるよ。Kiboはもう買える。

#ワークショップ(本編)
## センサノードを活用した室内環境監視方法
* kiboを使用したワークショップを行う
* 非接触歪みセンサはインダクタンスを使用している
	* インダクディブセンサ（LDC1612）
	* 導電性の物質を測れる
	* 導電性の基盤の表面に渦電流が発生し、磁界が発生し、うんたらかんたらで検出できる
	* 距離センサを使った歪センサだと、埃とか影響が出やすい
* Kinesis Bridgeをゲートウェイで使用（簡単にKinesisに接続できる）
* KiboからGatewayへのセンサ情報出力はMQTTを使用
	* publisher（kibo） と subscriber(MQTTクライアント)に別れるメッセージング
* JSON形式でkiboからゲートウェイに値を投げている
* <http://ec2-52-68-203-101.ap-northeast-1.compute.amazonaws.com/utx3110/>

###Jubatusの利用
* anomalyを使用
* あらかじめ2週間分の学習データを用意
* 照度センサを使えば、センサノードによってその近くにいる人の出勤とかわかるwwwww照度があがって出勤、下がって退勤wwww
* 学習モデル
	* 昼：温度、照度が高く、湿度は低い
	* 夜：温度、照度が高く、湿度が高い
* 異常値の値は学習モデルの分布から外れると異常値と判断している
* <http://ec2-52-68-203-101.ap-northeast-1.compute.amazonaws.com/mqtt/>
* MQTT Broket : kibo からのセンサ情報や、Jubatusによる監視結果などのPublishデータをSubscribeへ送信

###ひずみセンサの応用例
* 照度、温度が上昇すると、物質がひずむと仮定。
* 昼間は歪んでいない。なのに歪むと……異常値！  

###AWSのメリット
* 環境構築が簡単だった
* クリックひとつでプラットフォームが用意される

##機械学習による異常値検知入門（Jubatus）
###機械学習とは？
####既存手法：ルールベース  
* 人がルールを考える必要がある
* 複数のルール同士の干渉を確認するのが難しい

####機械学習：学習ベース
* ひとは正解を教えるだけで良い  

ルールなんて考えられない！！！特に複数センサ使った場合！そこで機械学習ですよ。

####バッチ学習
* データを全て読み込んでから学習を行う手法
* 学習データが追加されたら学習しなおさなければならない

####オンライン学習
* データを1件ずつ読み込んで随時学習を行っていく
* 少ないメモリで大規模データが扱える
* 学習し終えたデータは消しても良い

###異常検知の手法
####距離ベース
* データ同士の距離に注目して異常値を検知する
* 他のデータと離れているデータは異常値

####密度ベース
* データの密集度に注目して、異常値を検知する
* データが密集していない所にあるデータは異常値

####クラスタベース
* データの集まりに注目して異常値を検知する  

####データの正規化
* ダイナミックレンジの違うセンサを組み合わせる場合、データを正規化したほうが良い

###その他
* 学習データの寮が増えすぎると計算に時間がかかったりメモリが不足したりするようになる
	* 忘却機能という機能を使い、Jubatusにはあまり使っていない値などを忘れることで書いける
* アンサンブル学習というのがあり、色んな手法をやって多数決をとってくれる

##DataSpider Servistaでセンサデータを連携
* DataSpider Studioの利用でノンプログラミングで開発が可能
	* 入力 -> 変換 -> 出力をGUIで開発
* コンバータツール Mapper
* 対応データは多種多様
* cybozuのkintoneをチェックしてみよう

##IoTとしてのBeacon活用
* BluetoothLowEnergyを使用
* 通常のBLE機器は接続が必要がだ、Beaconは不要
	* 信号の方向が片方向である
	* より省電力になる
* SensorTag(8種類のセンサが載ってる)を使用してみないかい？
	* スマホアプリ提供中
*  <http://ec2-52-69-106-203.ap-northeast-1.compute.amazonaws.com/beacon/>
* iBeaconは毎度おなじみのMFi規格があり使いにくい
* ALT Beaconはオープンである（iBeaconのパクリ感すごい）
* Beaconにセンサ値を載せて飛ばそうよって話よ

###アイデア
1. 展示してある商品に加速度センサを付ける
2. お客さんが商品を取ると、Beaconを発信し、サイネージに商品詳細を表示みたいな