今回は「異常値検出の手法」について、簡単に4つの代表的な方法を紹介したいと思います。異常値検出、あるいは異常検知と呼ばれる手法にはさまざまなものがありますが、今回はその中でも特に有名な4つの手法に絞ってお話しします。
具体的には、「ホテリング法」「LOF(ローカルアウトライヤーファクター)」「1クラスSVM」「アイソレーションフォレスト」の4つを取り上げます。それぞれの手法について簡単に解説しながら、どういった場面で使えるのかをお伝えしますね。
なお、今回の話は、時系列データや画像データではなく、点データに対する異常値検出を対象としています。つまり、どの点が異常値かを判定することを目的とした手法です。また、今回紹介する手法はすべて教師なし学習のアプローチです。
1. ホテリング法
まず最初に紹介するのは「ホテリング法」です。
この手法はデータが正規分布に従うことを前提としています。ホテリング法では、データ点が平均からどれくらい離れているかを基準に異常値を検出します。この距離は、マハラノビス距離という指標を使って計算されます。

具体的には、その異常度が自由度1のカイ二乗分布に従うことを利用します。このカイ二乗分布に基づいて、閾値を設定し、その閾値を超えるかどうかで異常か正常かを判定します。たとえば、異常度が閾値を超えるデータ点は異常値とみなし、それ未満の点は正常値とみなすといった具合です。
この手法はシンプルでわかりやすい反面、データが正規分布に従っていることが前提となるため、データの分布が正規分布から外れる場合には適用できない点に注意が必要です。
もっと詳しく知りたい方は日立製作所のQiita記事がわかりやすいですよ。
https://qiita.com/MasafumiTsuyuki/items/2677576849abf633e412
2. LOF(Local Outlier Factor)
次に紹介するのは、「LOF(ローカルアウトライヤーファクター)」です。こちらは正規分布に依存せず、データの局所的な密度に基づいて異常値を検出する手法です。距離ベースで考える手法の一つで、ある点が他の点と比べてどれくらい密集しているかを評価します。

具体的には、各データ点に対して、その近傍にある点を含む円を描き、その円の半径が他の点と比べて大きい場合、その点は異常値とみなされる可能性が高いと判断します。逆に、円の半径が小さい場合、その点は正常値と判断されます。
LOFの優れた点は、データの密度が異なるクラスターが存在する場合でも、適切に異常値を検出できる点です。たとえば、KNN(k-Nearest Neighbors)では単純な距離ベースのアプローチですが、LOFでは密度を考慮することで、より精度の高い異常検出が可能になります。
3. アイソレーションフォレスト(Isolation Forest)
続いて紹介するのは「アイソレーションフォレスト」です。こちらはランダムフォレストに似たアプローチで、決定木をたくさん作り、データを分割していく手法です。アイソレーションフォレストの特徴は、異常データは正常データよりも早い段階で分割されやすいという性質を利用している点です。

具体的には、データをランダムに分割していく過程で、飛び出している異常値は少ない分割で見つかるため、早い段階で分割が完了します。この分割の早さを基に、異常かどうかを判断するのがアイソレーションフォレストの基本的な考え方です。
この手法は、データがどのような分布に従っているかに依存せず、異常データを効果的に検出することができるため、幅広い応用が可能です。
4. 1クラスSVM(One-Class SVM)
最後に紹介するのは「1クラスSVM」です。名前の通り、サポートベクターマシン(SVM)の一種で、教師なし学習に適用される手法です。
1クラスSVMでは、データを高次元空間に写像し、その空間内で異常値と正常値を分離します。具体的には、正常値をなるべく遠くに配置し、異常値は原点付近に集めるようにマージンを最大化することで、異常検出を行います。

この手法は、特にデータが非線形な場合や、複雑な分布を持つ場合に効果を発揮します。異常値と正常値を明確に分けることができるため、さまざまなデータセットに対して高い精度で異常検出を行うことが可能です。
まとめ
今回は、「ホテリング法」「LOF」「アイソレーションフォレスト」「1クラスSVM」の4つの異常値検出手法について簡単に紹介しました。それぞれの手法には独自の強みがあり、データの特性や目的に応じて使い分けることが重要です。
異常値検出は、データ分析や機械学習において非常に重要なステップです。時系列データや画像データなど、データの種類によっても適用すべき手法は異なりますが、今回紹介した基本的な手法を理解しておくことで、多くのケースに対応できるようになると思います。
Youtubeでも紹介しています!ぜひご覧ください。
======================================================
さらにデータサイエンスを学んでいきたいという方向けに「Pythonによるデータサイエンス」動画を提供しています。
基礎編・応用編それぞれ35時間以上の動画となっており、今なら50%OFFですので、ぜひチェックしてみてください!
>>>Pythonによるデータサイエンス基礎編
>>>Pythonによるデータサイエンス応用編