2022年12月号特集 第1部 サポート・ページ3…IoTデータを機械学習で分析

サポート・ページ3「IoTデータを機械学習で分析」

本サイトでは,Interface2022年12月号特集 第1部に関して,Amazon Web Services(以下,AWS)を活用したIoTデータ・サーバ構築手順の詳細を説明します。MQTTプロトコルを利用して,クラウドでデータを受け付け,それを順次蓄積していく構成を実現します.
サポート・ページ3では,Amazon Web Services(以下,AWS)を活用した,IoTデータを機械学習で分析する際の環境構築手順の詳細を説明します.
AWSの機械学習サービスであるAmazon SageMaker(以下,SageMaker)を利用して,時系列データに対する予測および異常検知を実現します.

事前準備

AWSアカウントの作成
AWSを初めて利用する方は,以下のサイトを参考にしてアカウントを作成してください.アカウントの利用には,クレジットカードまたはデビットカードの登録が必要になります.

– AWS アカウント作成の流れ
https://aws.amazon.com/jp/register-flow/

また,本サイトでは,AWSのリージョン(AWSサービスの提供地域)は「東京リージョン(ap-northeast-1)」を利用することを前提としています.

関連ファイルのダウンロード
本サイトでは,IoTデータとなるCSVファイルおよび機械学習の処理を実装したJupyterNotebokのファイルを利用します.以下のサイトから,予めダウンロードしてください.

https://www.cqpub.co.jp/interface/download/contents.htm

ステップ1:Amazon SageMaker Studio の利用を開始する

AWSコンソールにログインして「SageMaker」の設定画面を開きます.SageMaker Studioは,ウェブ・ブラウザ上で機械学習の処理の実装および実行を行える統合開発環境(IDE)です.

SageMakerの設定画面が表示されたら,「SageMaker Studio を起動」ボタンを選択します.
初回利用時は,セットアップメニューが表示されるので,「高速セットアップ」を選択します(業務で利用する場合は「標準セットアップ」を推奨).

 

セットアップが完了すると,以下のような画面が表示されるので,「アプリケーションを起動」から「Studio」を選択します.

 

SageMaker Studioが起動すると,以下のような画面が表示されます.

これで,準備は完了です.

ステップ2:IoTデータをクラウドへアップする

IoTデータの登録先となる,Amazon S3(以下,S3)のバケットを作成します.
ここでは,「cqpub-ml-example-{yourname}」というバケットを作成します(S3のバケットは,グローバルで一意になる必要があるため,{yourname}には読者ご自身のお名前を設定してください).また,バケット作成時は,AWSリージョンで「アジアパシフィック(東京)」を選択してください.

 

このバケットの配下に,以下のような構成になるようにフォルダを作成し,「事前準備」でダウンロードした「cqpub-sensordata-example01.csv」ファイルをアップロードしてください.

```
cqpub-ml-example-{yourname}/
  sensordata/
    cqpub-sensordata-example01.csv
```

 

また,このデータに,SageMakerからアクセスをできるようにするため,IAMポリシー(AWSのユーザ・アクセス管理)の設定を行う必要があります.
AWSコンソールから「IAM」の設定画面を開きます.

 

「ポリシー」メニューから,「AmazonSageMaker-ExecutionPolicy-XXXXXXXXTXXXXXX」という名前のポリシーを開きます.このポリシーは,ステップ1のSageMakerのセットアップ時に自動で作成されます.
このポリシーを以下のように編集してください.

 

 ステップ3:ノートブックを作成する

「事前準備」でダウンロードした「cqpub-ml-example.ipynb」ファイルを,SageMaker Studioにインポートします.

ノートブックがインポートできたら,「Run」メニューから「Run All」を実行することで,ノートブックに記載された処理が順次実行されます.
ここで,ノートブックを途中から動作させている場合にエラーが出ることがあります. この場合は「Kernel」→「Shut Down Kernel」または「Shut Down
All Kernels」で,一度動作しているカーネルがあれば停止し,「Run」→「Run All Cells」で最初から実行してみてください.

ステップ4:処理の流れを理解する
今回の機械学習の処理は,次のような流れになっています.

①データを読み込む→IoTデータを読み込みます.
②移動平均を取得する→センサの測定値のゆらぎの影響を少なくするために,読み込んだIoTデータから移動平均を計算し,それを学習データとします.
③不快指数の時系列予測を行う→不快指数のデータに対して,DeepARを利用した時系列予測を行います.
④ダスト・センサの異常検知を行う→ダスト・センサのデータに対して,RandomCutForestを利用した異常検知を行います.

ステップ5:データを読み込む
本誌にて処理内容を解説しておりますので,そちらをご確認ください.

ステップ6:移動平均を計算する
本誌にて処理内容を解説しておりますので,そちらをご確認ください.

ステップ7:時系列予測を行う
本誌にて処理内容を解説しておりますので,そちらをご確認ください.処理に成功すると,ノートブックにて以下のようなグラフが表示されます.

ステップ8:異常検知を行う
本誌にて処理内容を解説しておりますので,そちらをご確認ください.処理に成功すると,ノートブックにて以下のようなグラフが表示されます.

ステップ9:プロセスのシャットダウン

操作が完了したら,今回利用したリソースを停止します.ノートブックを開いたままにしていたり,処理を実行したままであったりすると,AWS上ではサーバが立ち上がった状態となり,課金され続けてしまいます.そのため,必ず仕様したリソースの停止・削除をおこなってください.

まず,SageMaker Studioの「File」メニューから「Shut Down」を選択して,プロセスを終了させます.次のようになっていることを確認してください.

 

併せて,SageMakerの「推論」→「エンドポイント」メニューで,以下のようにリソースが残っていないことも確認してください.

 

最後に今回作成した以下のリソースを削除します.

– SageMakerのノートブックのファイル
– S3 に蓄積されたファイル