LOF異常検出

Local Outlier Factorによる異常検出. Local Outlier Factor(LOF)を使用して、近傍に対するデータポイントの局所密度偏差を測定します。密度が著しく低いポイントが異常として分類されます。

Local Outlier Factor(LOF)を使用して、近傍に対するデータポイントの局所密度偏差を測定します。密度が著しく低いポイントが異常として分類されます。

LOF(局所外れ値因子)とは?

Local Outlier Factor(LOF、局所外れ値因子)は密度に基づく異常検知アルゴリズムであり、ある点の局所密度をその近傍点の密度と比較することで外れ値を特定する。大域的な手法とは異なり、LOF は密度の異なるクラスタが混在するデータセットでも外れ値を検出できる。ある点は疎なクラスタの中では正常でも、密なクラスタの近くでは異常となりうるからである。

このアルゴリズムは、各点について k 近傍に基づく到達可能距離と局所到達可能密度(LRD)を計算する。LOF スコアは、その点の LRD と近傍点の LRD の平均との比である。LOF ≈ 1 は近傍と同程度の密度(正常)を意味し、LOF >> 1 は密度が著しく低いこと(異常)を意味する。

近傍点の数(k)は局所性を制御する。k が小さいとごく局所的な構造に着目し、k が大きいとより広い近傍にわたって平滑化される。contamination(汚染率)は、LOF スコアの順位に基づいて異常と分類される点の割合を決める。

Formula: reach-dist(A,B) = max(k-dist(B), dist(A,B)) LRD(A) = 1 / (Σ reach-dist(A,Oᵢ) / k) LOF(A) = (Σ LRD(Oᵢ) / LRD(A)) / k LOF ≈ 1: normal, LOF >> 1: outlier

計算例

k=5 の近傍を用いた場合:密なクラスタ内の点 P₁ は LRD=10、その 5 個の近傍点の LRD の平均は 9.5。LOF = 9.5/10 = 0.95(正常)。クラスタ縁辺の点 P₂ は LRD=2、近傍点の LRD の平均は 8。LOF = 8/2 = 4.0(明らかな外れ値)。contamination=0.05 とすると、LOF スコアが上位 5% の点が検出される。

この計算機を使用する場面

よくある間違い

結果の解釈方法

関連規格・参考文献

よくある質問

近傍点の数(k)はどのように選べばよいですか?

まずは妥当な既定値として k=20 から始めます。k が小さい(5-10)とごく局所的な異常を検出できますが、ノイズに敏感になります。k が大きい(50+)と結果は滑らかになりますが、局在した異常を見逃すおそれがあります。実務的には、複数の k 値を試し、同じ点が一貫して検出されるかを確認するとよいでしょう。異なる k 値でも残り続ける外れ値は、真の異常である可能性が高くなります。

Isolation Forest ではなく LOF を使うべきなのは、どのような場合ですか?

データに密度の異なるクラスタが含まれる場合は LOF を使います。LOF は各点をその局所的な近傍に対して相対的に評価するためです。密なクラスタからは遠いが疎なクラスタには近い点は正常でありうるため、大域的な手法が誤って検出しかねない状況でも LOF は正しく扱えます。高次元データや、LOF の O(n²) の計算量が許容できないほど大規模なデータセットには Isolation Forest を使ってください。