概要
IBM Cloud Pak for Data as a Service(CP4DaaS)のWatson Machine Learningには自動機械学習のサービスとしてAutoAIがありますが、少し前から時系列データにも対応していました。2023/6に新たに「異常検出」にも対応しました(2023/6現在、ベータ機能)ので、今回試してみてわかったことを記述します。
マニュアル
日本語のマニュアルがありますが、翻訳したものなので実際の画面上の表記とマニュアルでの表記が違っていたり、一長一短あります。
https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/autoai-ts-ad.html
原文の英語で見たい場合は、URLの最後に ?locale=en を付ければよいです。私は日本語のマニュアルを見た後で、個別に英語の方を見てやっと理解できたところがありました・・
https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/autoai-ts-ad.html?locale=en
やってみた
上記のマニュアルを見ると、電力使用量の異常検出を題材としたサンプルデータが提供されていることがわかります。データをダウンロードしてWatson Studio内で可視化してみました。
ふむふむ。どこが異常なのか、の教師ラベルは要らないのですね。トレンドなどからの異常をモデル化するようです。日本語よりも英語マニュアルの方がわかりやすかったので参考にすると、こんな感じです。
異常タイプ | 説明 | AutoAIでの画面表示* |
---|---|---|
局所的な異常 | 局所的に、周辺のデータポイントから激しく外れている | ローカライズされた極値 |
レベルシフトの異常 | 一部分の平均値が外れている | レベル・シフト |
トレンドの異常 | 一部分が、それよりも前の部分と比べて傾向が変わっている | トレンド |
変動の異常 | 一部分が、変動の様子が変わっている | 分散 |
*これは、AutoAIでモデルをトレーニングしたときのモデル評価の画面表示に対応しています。
さて、マニュアルの手順にしたがってAutoAIでの異常検出モデルはできましたが、これを使って異常の予測をしてみようとして気付きました。予測では、将来の日付における電力使用量を入力として、それが異常か、異常ではないかを出力するということに・・・将来の日付分にあたるデータがないので、いったんここまで。
では済まないので
こちらの記事で投稿した「北京の交通量のオープンデータ」を流用して、交通量の異常を検証してみました。
トレーニングデータ
上記の記事にも書かれている通り、2015/6~2018/7をトレーニング用、2018/8~2018/9をテスト用としました。データは記事からリンクされているところから取得できます。
AutoAIでのトレーニング
これまでと異なるのは、「異常の予測」を選ぶところのみ。
予測する内容として、フィーチャー列(ターゲット列)としてtraffic_volume、日付/時刻列としてdateを選びます。
さて、モデルができたらデプロイメント・スペースに送って、オンラインデプロイを起動する・・・このあたりは、こちらの手順の通りです。
最後に、予測してみます。入力として必要なのは、後続する2018/8~2018/9のテストデータのうち、traffic_volume列のみを取り出したもの。これを「テスト」のタブから、「ローカルファイルの参照」でアップロードします。
さて、予測結果はというと・・・1日だけ異常で、残りは正常と出ました。
せっかくなので、これをグラフ化してみると・・・
まあ、そりゃそうですよねという結果ではありました。
まとめ
教師ラベルのない時系列データから、異常検出を行う機械学習をAutoAIの新機能を使って自動化することができました。