K_DM Book
用語集
対象者 標準
対象者別の入口 →

対象者の設定はこのブラウザの中にだけ保存されます。

言語 JA

教師なしの手法

04.17

教師なしの手法

まとめ
「どの日が異常か」「どこで構造が変わったか」のラベルが用意されていない時系列に対して、データの形だけから答えを出す 2 つの手法を扱う章です。ruptures は「区間ごとのコスト + 区間数 × ペナルティ」を最小にする区切り方を Pelt や Dynp で探し、平均が 100 日ごとに変わる系列や分散だけが変わる系列の変化点を返します。IsolationForest はランダムな分割で各点が孤立するまでの深さを 100 本の木で平均し、浅く孤立する点を異常と判定します。どちらも数行で動き、pen・min_size・contamination といった少数の引数で感度を調整できます。

直感 #

異常値や変化点のラベルが事前に用意されていない場面は多く、監視やアラートの仕組みを作るときはむしろそれが普通です。Isolation Forest は「少ない回数のランダム分割で孤立する点は外れ値だ」という性質から異常を自動で見つけ、ruptures は「どこで区切ると区間内のばらつきの合計が最小になるか」という統計的な基準で系列の切れ目を見つけます。ラベルがなくても IsolationForest(contamination=0.01) や Pelt(model="rbf").predict(pen=10) の 1〜2 行で候補を出せるので、まずこれらで当たりを付け、人が確認したラベルを後から教師あり学習に回す、という流れの出発点になります。

詳細な解説 #

このチャプターで学べること #

  • Isolation Forestの仕組みと、時系列データへの適用方法
  • rupturesによる変化点検出のアルゴリズムと実装
  • 検出結果の可視化と閾値の調整方法

これがわかるとできること #

  • ラベルなしのデータから異常値を自動検出し、原因調査のトリガーにできる
  • 系列の構造変化を統計的に特定し、モデルの分割や再学習の判断に使える
  • 異常検知パイプラインのプロトタイプを素早く構築できる

学習の進め方 #

まず Isolation Forest で、365 日の人工データに混ぜた 6 日分の異常値を contamination と max_features の設定で検出し、plot_tree でどの特徴量の分岐が異常点を孤立させたかを読みます。次に ruptures で、pen を 0.1 から 1.0 に動かしたときの変化点の増減と、rbf と l2 のコスト関数で分散の変化を拾えるかどうかの違いを人工データと Datadog の株価で試します。