時系列データを触っているとなにか異常があった、モードが変わったことを検知したくなります。 そうすると機械学習に頼ることになるわけですが、できればパラメータチューニングを最小限にしたい。 調べてみると特異スペクトル変換(Singular Spectrum Transformation)という方法がよさそうです。 ノンパラメトリック(分布を仮定しなくてよい) ノイズに強い 決めるべき変数が少ない いいことづくし。 唯一欠点として計算量が多いというのがありますが、ビッグデータを扱うわけでもない個人の解析の範疇であればマシンスペックが潤沢な現代においてあまり気にする必要もないでしょう。 というわけで特異スペクトル変換をJavaScript(TypeScript)で行ってみます[1]。 サンプルページ 特異スペクトル変換 詳しい理論やアルゴリズムの説明は書籍[2][3]、論文[4][5][6]に譲り
![JavaScriptで変化点検出がしたい](https://cdn-ak-scissors.b.st-hatena.com/image/square/94f77c281bc61a46221b9cde560cbc277fd41c93/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--pNJOTl4f--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3AJavaScript%2525E3%252581%2525A7%2525E5%2525A4%252589%2525E5%25258C%252596%2525E7%252582%2525B9%2525E6%2525A4%25259C%2525E5%252587%2525BA%2525E3%252581%25258C%2525E3%252581%252597%2525E3%252581%25259F%2525E3%252581%252584%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3Ayonda%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2Q4ZmM1MDUwZGMuanBlZw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png)