IoTストリーミングデータに対する異常検知について

こんにちは。Kouです。

最近IoTの投稿が増えてきましたが、ご覧頂いていますでしょうか。今回の記事は、異常検知というIoTでよくあるトピックに着目したいと思います。異常検知と言えば、機械学習の手法により、複雑なデータの前処理とか、予測モデルの学習などのイメージが多いではないでしょうか。実は、Alibaba Cloud IoTプラットフォームのLink Analyticsクラウドサービスを活用すると、今までの煩雑な作業が楽になれます。

 さて、今回はAlibaba CloudのIoTプラットフォームにて、異常検知の便利な機能を皆さんに紹介させて頂きたいと思います。

Link Analyticsとは

Link Analyticsとも呼ばれるIoTデータ分析は、Alibaba CloudがIoT開発者に提供するデバイスインテリジェンス分析サービスです。また、デバイスデータ管理、ETL、分析、可視化などの沢山の機能を網羅しています。

今回の記事では、PM2.5空気品質計測器を実例として、PM2.5の測定のストリーミングデータで実施したいと思います。

事前準備

まず、IoTプラットフォームのコンソールから、空気品質計測器のプロダクトと関連するデバイスを作成します。プロダクトとデバイスの名前はそれぞれLADemoとDevice001にします。

 

f:id:sbc_kou:20200325111804p:plain

f:id:sbc_kou:20200325115135p:plain

 

次は、検知された異常データをデータベースに保存する為、既存のRDSもしなければ、RDS(MySQL)を作成します。作成できたら、下図のように、「データ管理」から「外部データソース」を新規追加します。こちらにLA_RDSという名前のデータソースを追加しました。 

f:id:sbc_kou:20200325135113p:plain

 

f:id:sbc_kou:20200325135940p:plain

 異常検知

「ストリームデータ分析」から「タスク」を新規作成します。 タスクのタイプからコンポーネントオーケストレーションを選択するようにすると、下図のコンポーネント可視化ツースが起動されます。

 

f:id:sbc_kou:20200325142259p:plain

まず、importコンポーネントに、プロダクトとデバイスを選定します。そして、input parameterのところに、測定したいデータのPM2.5濃度を選択します。

f:id:sbc_kou:20200325182440p:plain 

次は、データフィルタリング コンポーネントで、PM2.5濃度に対して、フィルタリングしたいデータ範囲を設定します。データ範囲は、デバイスの実際の観測範囲によりますが、こちらには、一応0以上、500までの範囲を指定しました。f:id:sbc_kou:20200325182705p:plain

さらに、異常検知コンポーネントで、実際の検知ルールを設定します。つまり、どういた条件で異常値として検知されるかを設定します。後ほどのテストをシンプルにする為に、こちらには3 つの連続したデータがしきい値 300を超えた場合は異常値として検知するように設定しました。

f:id:sbc_kou:20200325183409p:plain

最後、exportコンポーネントで、検知されたデータの保存先(外部RDS)を指定します。こちらには、先ほど作成したLA_RDSを指定し、事前に作成したテーブル「abnomal」を選択しました。f:id:sbc_kou:20200325182950p:plain

動作確認

下図のように、バーチャルデバイスを起動して、動作確認を行いましょう。具体的には,「Debug Virtural Device」から「PM25Value」に毎回それぞれ350、360、370を入力してプッシュします。

 

f:id:sbc_kou:20200325161746p:plain 

そして、MySQL Workbenchを起動して、下図のSQL構文で実行すると、上記の異常データが出てくることがわかりました。

f:id:sbc_kou:20200325174544p:plain

 

最後

いかがでしたでしょうか

上述のように、IoT Link Analytics内臓のコンポネートを活用することだけで、ソースコードを書かずに、ストリーミングデータ分析を一通りに実施することができました。Alibaba Cloud IoTをお試してみる方は、ぜひ体験してみてください。