『音による故障予知の教科書たたき台:6.8 One-Class SVM』LLMと一緒に書いてみた—AIが導く研究メモ

6. 故障予知のアプローチ  

6.8 One-Class SVM

One-Class SVMは、「正常データだけを学び、その範囲から外れたものを異常とみなす」考え方にもとづく異常検知手法である。多数派である正常のパターンに境界(ふち)を引き、その外側に落ちるデータを外れ値として判定するのが基本で、異常ラベルがほとんど無い現場でも導入しやすいのが長所である。直感的には、特徴量で表した点群を高次元空間に写し、その中で「正常領域」を包み込むような境界を作るイメージで、境界の内側が正常、外側が異常になる。[1][2][3]

仕組みをかみ砕いて説明する。One-Class SVMは、カーネルと呼ばれる写像を使って、元の特徴をより扱いやすい空間へ移し、そこで「できるだけ多くの正常点を含む最小の領域」を作るように学習する。新しい点に対しては、学んだ境界の内か外かを調べ、境界外なら異常の候補として扱う。実装では、決定関数f(x)が正なら正常、負なら異常という判定を返す形が一般的である。[2][4]

この手法で重要な設計要素は、カーネルとハイパーパラメータである。カーネルは境界の形の柔らかさを決める選択肢で、線形、RBF(ガウス)、多項式、シグモイドなどがあるが、複雑な非線形関係を扱いやすいRBFが標準的な選択になっている。RBFではγ(ガンマ)が境界の「細かさ」を支配し、γが大きいほど境界は細かく複雑に、小さいほどなだらかになるため、過学習と見落としのバランスをγで調整することになる。また、One-Class SVM固有のν(ニュー)は感度を司る重要パラメータで、「学習時に許される誤り(外れ)の上限」と「サポートベクタの下限」を同時に規定する役割を持ち、0<ν≤1の範囲で設定する。直感的には、νを大きくすると外れとみなす割合が増え検知は敏感に、νを小さくすると外れとみなす割合が減り保守的になる。現場では、RBF+(γ,ν)から試し、必要に応じて他カーネルやパラメータ探索を行うのが実務的である。[5][6][7][8][9][1]

なぜOne-Class SVMが故障予知に向くのか。第一に、異常例が希少でも「正常だけで学べる」ため、ラベル不足でも出発できる。第二に、カーネルにより高次元・非線形な境界を柔軟に作れ、特徴が多くても効きやすい。第三に、学習で得た連続スコア(決定関数値)を用い、しきい値次第で再現率(見逃し低減)と適合率(誤警報低減)のバランスを運用に合わせて制御できる。一方で、ハイパーパラメータ感度が高く、データ分布が変わると再調整が必要、正常が複数の離散クラスターに分かれる場面では境界設計が難しくなる、といった限界も認識しておく必要がある。[10][3][11][2]

導入手順を段階的にまとめる。1) 特徴量設計:RMS、短時間エネルギー、ゼロ交差率、スペクトル重心、バンドエネルギー、ピークトップなど、物理直感に基づく特徴を整理し、スケールを標準化でそろえる(前処理の統計は訓練集合から学び、検証・本番に適用する)。2) 分割と評価設計:訓練は正常データ中心、検証には正常と一部の擬似異常・既知異常を含める(層化や時系列分割を採用)。評価は再現率・適合率・F1やPR曲線を主指標にする(不均衡ゆえ正解率は参考にならない)。3) 学習:OneClassSVM(kernel='rbf')を初期設定とし、γとνの候補を広めに用意してグリッドまたはランダム探索で検証スコアを比較する。4) しきい値決定:決定関数の分布を見ながら、運用上必要な再現率下限を満たしつつ適合率を最大化する点を採用する(νの明示設定を併用して異常割合の上限を制御)。5) 点検と可視化:スコア上位のケースはスペクトログラムやピーク表で根拠を確認し、誤警報の共通要因があれば特徴・帯域やカーネル設定を見直す。6) 維持運用:季節・負荷・ライン変更に応じて再調整し、データ漂移を監視する(必要に応じて条件別モデルや条件別スケーリングを導入)。[6][8][12][9][13][1][2]

ハイパーパラメータの考え方をもう少し詳しく述べる。- ν(ニュー):訓練誤りの上限かつサポートベクタ比の下限で、0.1、0.2、0.5といった段階で感度を調べるのが出発点になる。νを上げると「外側」を広く異常と見なすため再現率は上がりやすいが、誤警報も増えやすい。- γ(ガンマ):RBFの幅に相当し、1/特徴次元、1/中央値距離、対数刻み(例:10^−3~10^1)などの候補で探索して、過学習(境界がギザギザ)と過小適合(境界がなだらかすぎる)の間を探る。- カーネル:RBFが第一選択だが、線形で十分分離可能なら線形が堅牢で、高次相互作用が効くなら多項式も選択肢になる。データの性質と計算資源に応じて比較する。大量データやオンライン性が必要な場合は、近似やSGD版(線形One-Class SVM+カーネル近似)の選択肢もある。[7][8][9][1][5][6]

他手法との位置づけも押さえる。Isolation Forestは木の分割深さ(パス長)で外れを測るため計算が軽くスケーラブルだが、密な近傍に紛れる異常や非線形境界の精緻化が苦手なときがある。Local Outlier Factorは局所密度差に敏感で、局所的外れに強いがパラメータ感度が高い。One-Class SVMは高次元・非線形境界を作れる汎用性が強みだが、γとνの選定に労力が要る。現場では、まず軽量なスクリーニング(Isolation Forestなど)で候補を絞り、One-Class SVMで精査する二段構えも有効である。[2][10]

教育的観点からの“つまずきやすい点”を挙げる。- 前処理の漏えい:分割前に全データで標準化すると、検証・本番の情報が訓練に混じる。必ず訓練の統計で変換を学び、他集合に適用する。- しきい値固定の罠:決定関数のしきい値はデータ分布に依存する。環境が変わればPR曲線を再確認し、しきい値やνを見直す。- 正解率偏重:不均衡では正解率が高く見える。再現率・適合率・F1やAUPRCを主に評価する。- γの過大設定:境界が細かくなり過学習しやすい。検証曲線で汎化が落ち始める手前のγを選ぶ。- 正常の多峰性:正常が複数クラスターに分かれる場合、単一境界が難しい。条件別モデルやクラスタ別のOne-Class化を検討する。[11][12][1][10][6][2]

最後に、簡潔なレシピを記す。1) 正常データを十分に集め、特徴量を作って標準化(訓練基準)。2) OneClassSVM(RBF)でγ∈{10^−3,…,10^0}、ν∈{0.05,0.1,0.2,0.5}を探索。3) 検証セットでPR指標を比較し、目的の再現率を満たす設定を選ぶ。4) 決定関数のしきい値をPR曲線から確定。5) スコア上位を可視化で点検し、誤警報要因があれば特徴・帯域・パラメータを微調整。6) 運用で分布を監視し、定期的に再評価・再学習する。この流れは、One-Class SVMの原理と主要実装の解説に沿った標準的手順であり、ラベルが乏しい故障予知の現場で、見逃しと誤警報のバランスを取りつつ異常の早期抽出に役立つ。[8][12][2] [1] https://www.geeksforgeeks.org/machine-learning/understanding-one-class-support-vector-machines/

[2] https://spotintelligence.com/2024/05/27/anomaly-detection-one-class-svm/

[3] https://www.mathworks.com/help/stats/oneclasssvm.html

[4] https://sci2s.ugr.es/keel/pdf/specific/congreso/cohen_one-class_2004.pdf

[5] https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.SGDOneClassSVM.html

[6] https://www.numberanalytics.com/blog/advanced-one-class-svm-techniques

[7] https://www.ni.com/docs/en-US/bundle/labview-analytics-and-machine-learning-toolkit-api-ref/page/lvaml/aml_initialize_anomaly_detection_model_one_class_svm.html

[8] https://scikit-learn.org/stable/modules/generated/sklearn.svm.OneClassSVM.html

[9] https://stackoverflow.com/questions/11230955/what-is-the-meaning-of-the-nu-parameter-in-scikit-learns-svm-class

[10] https://www.numberanalytics.com/blog/mastering-one-class-svm-for-anomaly-detection

[11] https://ieeexplore.ieee.org/document/9360960/

[12] https://scikit-learn.org/stable/auto_examples/svm/plot_oneclass.html

[13] https://www.alibabacloud.com/help/en/pai/user-guide/one-class-svm-outlier-detection

[14] https://www.geeksforgeeks.org/machine-learning/support-vector-machine-svm-for-anomaly-detection/

[15] https://www.youtube.com/watch?v=pxRw7zeKUuo

[16] https://ceur-ws.org/Vol-2289/paper12.pdf

[17] https://www.slideshare.net/slideshow/one-class-svm/91274206

[18] https://ieeexplore.ieee.org/document/9696151/

[19] https://github.com/scikit-learn/scikit-learn/issues/3466

[20] https://py-palette.jp/sklearn-1svm/

※本ページは、AIの活用や研究に関連する原理・機器・デバイスについて学ぶために、個人的に整理・記述しているものです。内容には誤りや見落としが含まれている可能性もありますので、もしお気づきの点やご助言等ございましたら、ご連絡いただけますと幸いです。

※本ページの内容は、個人的な学習および情報整理を目的として提供しているものであり、その正確性、完全性、有用性等についていかなる保証も行いません。本ページの情報を利用したこと、または利用できなかったことによって発生した損害(直接的・間接的・特別・偶発的・結果的損害を含みますが、これらに限りません)について、当方は一切責任を負いません。ご利用は利用者ご自身の責任でお願いいたします。

おすすめの記事