変化点検出ChangeFinderのインストール&動かしてみた①

こんばんは、ロードローラーです。

今日は変化点検出を試したので紹介します。

IoTでデータを取得できる場面は広がりました。特に多いのが正常/異常を検出したいといった取り組みですが、いずれも「What is 異常?」を定義できずに悩んでいるようです。

そんな状況で私が注目したのが変化点検出のChangeFinder。これは「具体的にはわからないけど何かしら変化があった。」という瞬間を検出をする処理です。閾値処理のように高周波な変化やノイズに反応しにくく、傾向の変化を捉えるので、サンプルデータを入手しにくく定義困難な異常の検出に向いています。

 

インストール方法

私が実行した環境はUbuntu14.04です。以下を実行すればOKです。

が、しかし、これだけでは動かないこともあります。だいたいこのあたりを追加すれば動きます。(うろ覚えでスイマセン。。。)

 

サンプルソースと実行結果

ガウス分布で疑似的にデータを作り出してChangeFinderするサンプルがよく公開されてます。ソースと実行結果は以下の通り。

赤色がデータ値、青色がChangeFinder結果。データ値(赤色)の高周波な変動には反応せず、元となるガウス分布が変化しときにChangeFinder(青色)が反応しているのがわかります。こういった「そもそものデータ発生源の傾向変化」は単純な閾値処理では検出できません。

 

手持ちのデータに適用してみた

これだけじゃ面白くないので適当に採取したデータにChangeFinderを実行してみました。csvファイルを読み込んで実行するようにpythonプログラムを少々変更しています。

対象データは、とある楽曲演奏時のdB値を加工したものです。イントロ⇒メロ⇒サビといった雰囲気の変化を「やかましさの傾向変化」でキャッチできないかなという実験です。

う~ん、微妙。。。07:00:00と22:00:00にサビで盛り上がる場面がくるのですが、捉えられているといえば捉えられてる・・・か??

ここから先はChangeFinderの3パラメータ調節が必要そうですね。このあたりはまた次回に調べてみます。

それではまた

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です