Technology Topics by Brains

ブレインズテクノロジーの研究開発機関「未来工場」で働くエンジニアが、先端オープン技術、機械学習×データ分析(異常検知、予兆検知)に関する取組みをご紹介します。

SORACOM Funnel ときどき 異常検知

本記事はSORACOMサービスリリース1周年記念ブログの11月2日分です。



皆さん、こんにちは。ブレインズテクノロジーの林です。
今日はSORACOMリリース1周年のブログに寄稿させていただくことになり、以前から気になっていたSORACOM Funnelに関する記事を書かせていただきます。

KYOSOの辻様の記事(RaspberryPi +SORACOM FunnelでIoTデータを閉域網でS3やDynamoDBに格納する)ですでに詳しく説明いただたいておりますので、重複する部分は割愛して、SORACOM Funnelを利用するメリット、データを活用する部分にフォーカスして寄稿いたします。

SORACOM Funnel を利用するメリット

SORACOM Funnelを利用しない場合の、IoTデータの収集〜可視化するまでの流れは、以下の通りです。各デバイスからエージェントを介して、AWS IoT や 独自のGatewayへデータを送信し、ハブとしてKinesisを利用し、各データアプリケーションが可視化・分析等を行うのが一般的な構成になるかと思います。

f:id:brains-tech:20161102022443p:plain

が、しかし、SORACOM Funnelを利用すれば、アーキテクチャーで考慮しなければならないポイントがかなり減ります。

  • 通信経路・データセキュリティに関する考慮(閉域網での接続)
  • データを収集する部分の可用性・拡張性に対する考慮(AWS IoTであれば問題ないが・・・)
  • バイスと収集層との通信プロトコルに関する検討(mqtt / tcp / udp ?)

f:id:brains-tech:20161102022451p:plain

他にも勿論あると思いますし、SORACOMだからこそ可能な、SIM単位での通信ON/OFFの制御、アクセスコントロールの割当の容易さなど、メリットをあげればキリがないですね。つまり、異常検知・データ分析を主戦場とする我々とデバイスの距離が縮まったような気がします。

というわけで、SORACOM Funnel を利用してデバイスからデータを収集し、データの特性分析を行い、異常検知を行う流れをやってみたいと思います。

SORACOM Funnel を介した 異常検知

今回は、RaspberryPi上にセンサーデータが集まるという過程で、SORACOM Air → SORACOM Funnelを経由して、Kinesisへ流れているデータをImpulseが蓄積、分析、リアルタイムの異常検知をかけていくシナリオです。

f:id:brains-tech:20161102030130p:plain

※ Device〜Kinesisへの設定方法は、前述のKYOSOの辻様の記事(RaspberryPi +SORACOM FunnelでIoTデータを閉域網でS3やDynamoDBに格納する)をご参照ください。


複数個の照度センサーデータを一定間隔:5分でデータを送信し、収集したデータ特性を分析し、相関崩れによる異常検知を行うまでの流れになります。照度センサー4つを時系列でほぼ同じような値を取ることを前提として、データ送信をしています。(夜間帯は低く、日中にかけて照度の値が大きくなるような形)

まずは、RaspBerryPi から以下のデータをSORACOM Funnel のエンドポイントに対してデータを送信します。

{
    "description": "illuminance_data"
    , "illuminance_4": 3.88
    , "illuminance_3": 3.67
    , "illuminance_2": 4.63
    , "illuminance_1": 4.59
    , "time": 1477752900
}

そうすると、Kinesisへ以下の通りデータが入ってきます。
各種情報が付与され、送り出したデータは payloads に入っています。
便利ですね!!

{
    "operatorId": "xxxxxxxxxxxx"
   ,"timestamp": 1478055514828
   ,"destination": {
       "resourceUrl": "https://kinesis.us-west-2.amazonaws.com/soracom_funnel"
      ,"service": "kinesis"
      ,"provider": "aws"
    }
    ,"credentialsId": "funnel_kinesis"
    ,"payloads":{
        "description": "illuminance_data"
       ,"illuminance_4": 3.88
       ,"illuminance_3": 3.67
       ,"illuminance_2": 4.63
       ,"illuminance_1": 4.59
       ,"time": 1477752900
     }
     ,"sourceProtocol": "http"
     ,"imsi": "9999999999999999"
}

さて、Kinesisに流されたデータをImpulseへ取り込み、データの特性を分析します。図の右側の通り、特性分析を行うと、照度センサー1〜4の値は非常に高い相関を示していることがわかります。

f:id:brains-tech:20161102134833p:plain

収集データから異常検知を行うために、シュミレーションを行って初期モデルを作成します。作成されたモデルで、Impulseのリアルタイム検知機能を有効にします。有効にした後、RaspberryPiから流すデータの照度を一つだけ小さくすると、相関が崩れたとImpulseが判定し、"異常(いつもと違う)"と判定てくれます。

f:id:brains-tech:20161102134839p:plain

まとめ

SORACOM / SORACOM Funnelを利用することで、本来やりたいことに注力できるようになります。
つまり、データの分析・活用という部分に注力することができるようになるわけです。今後も継続して、新しい技術をウォッチしていこうと思います。

ビバ、SORACOM

おまけ

今回使ったRaspberryPi + SORACOM Sim のセットの写真です。
f:id:brains-tech:20161102162950j:plain