@matsumotoryさんがmruby-changefinderってのを公開していたので、試してみた。元になる時系列データとして、異常検知でGo!と同じものを流してみる。
結果
以下の青いラインがGoogle TrendでのGolangという単語の検索トレンド。赤いのがChangeFinderによるスコア。大きな変化が起こったその時にだけビクンと反応して、そのあとはなだらか。
(最初の方で反応してるのは、学習し始めだから)
スコアだけで見ると以下のような感じ。いい感じに変化点検出できているようですね。
結果データの作成方法
mruby-changefinderを組み込んだmrubyにより、こんな感じでデータを作成した。
cf = ChangeFinder.new(5, 0.01, 10, 0.01, 5) File.open('result.tsv', 'w') do |f| File.open('go.tsv').each do |line| date, trend = line.chomp.split("\t") score = cf.score(trend.to_f) f.puts("#{date}\t#{trend}\t#{score}") end end
んでもって、できたTSVをGoogle SpreadSheetに貼り付けてグラフ化しました。
今後の課題
しきい値をどう設定するのがよいかということ自体を適応的に決定できるようにするのが次の課題って作者がいってました。