很多應用需要決定新的觀測值是否屬于已有的觀測集,這種能力經常被用來清洗數據。
兩個很重要的區別:
- 奇異值探測(novelty detection):
訓練數據不受異常值的污染,我們感興趣的是在新觀測中發現異常。 - 異常值探測(outlier detection):
訓練數據含有異常值,我們需要擬合訓練數據的中心模式,忽略偏差觀測值。
奇異值探測
一般來說,奇異值探測是要學習一個繪制在高維空間上的粗糙、近似的輪廓來定義初始觀測值的分布。然后,如果進一步的觀測在邊界內,則認為他們與初始觀測值來自于同一分布,如果落在邊界外,判定他們是異常的。
One-Class SVM 可以使用 svm.OneClassSVM 來實現。 它需要選擇核和參數來定義邊界,通常使用RBF核。
異常值探測
異常值探測和奇異值探測都是將一些污染的“孤立點”和常規觀測的核心分開。但是,在異常值探測中,我們沒有一個能代表常規觀測分布的干凈數據集來進行訓練。
橢圓包絡線擬合
一種常規的異常值探測方法是假定數據都來自于一個已知的分布(比如高斯分布),按照這個假設,我們試著去定義數據的形狀,定義那些與形狀足夠遠的觀測值為異常值。
sklearn 提供了covariance.EllipticEnvelope 對數據進行穩健的協方差估計,從而將橢圓與中心數據點匹配,忽略中心模式以外的點。
例如,假定內層數據是服從高斯分布的,將能夠魯棒地估計位置和協方差(不包括異常值的影響)。Mahalanobis 距離被用來衡量異常值。
Isolation Forest
在高維數據集上進行異常值探測的一種有效方法是使用隨機森林。ensemble.IsolationForest 通過隨機地選擇特征,然后在所選特征的值域區間隨機地選擇分割值來“孤立”觀測值。
由于遞歸分割可以用樹結構來表示,需要的分割次數等于從根節點到目標節點的長度。
路徑的長度是森林中隨機樹的平均值,是對正態性和決策函數的衡量。
隨機切分對于異常值產生明顯短的路徑,因此,如果隨機森林在特定的樣本上生成了較短的路徑長度,他們很可能是異常的。
總結
嚴格來說,One-Class SVM不是異常值探測方法,而是奇異值探測方法,它的訓練集不應該被異常值污染,因為它可能擬合異常值。就是說,高維數據或者沒有假設分布的異常值探測是很有挑戰的,One-Class SVM在這些情況下能得到有用的結果。
- 對于中心化和橢圓化的內在模式,svm.OneClassSVM無法從 the rotational symmetry of the inlier population獲益,擬合了一些訓練集中的異常值。相反,covariance.EllipticEnvelope和ensemble.IsolationForest 表現較好。
- 對于雙峰分布的內在模式,covariance.EllipticEnvelope不能很好的擬合,然而,ensemble.IsolationForest 和svm.OneClassSVM也很難探測這種模式,svm.OneClassSVM會產生過擬合,因為它沒有正確的模型,它解釋了一些異常值湊巧聚集在一起的區域。
- 對于非高斯分布的內在模式,svm.OneClassSVM和ensemble.IsolationForest能夠合理的近似,但是covariance.EllipticEnvelope幾乎是失敗的。
http://scikit-learn.org/stable/modules/outlier_detection.html