python離群點檢測例子 異常點 離群點檢測演算法

2021-10-11 12:20:30 字數 1579 閱讀 9141

異常點/離群點檢測演算法

瀏覽次數:456

sklearn中關於異常檢測的方法主要有兩種:

1)、novelty detection:當訓練資料中沒有離群點,我們的目標是用訓練好的模型去檢測另外新發現的樣本;

2)、outlier detection:當訓練資料中包含離群點,模型訓練時要匹配訓練資料的中心樣本,忽視訓練樣本中的其它異常點;

sklearn提供了一些機器學習方法,可用於奇異(novelty )點或異常(outlier)點檢測,包括oneclasssvm、isolation

forest、local outlier factor (lof) 等。其中oneclasssvm可用於novelty

detection,而後兩者可用於outlier detection。

參考一、oneclasssvm

1、嚴格地講,oneclasssvm不是一種outlier detection方法,而是一種novelty

detection方法:它的訓練集不應該摻雜異常點,因為模型可能會去匹配這些異常點。

但在資料維度很高,或者對相關資料分布沒有任何假設的情況下,oneclasssvm也可以作為一種很好的outlier detection方法。

2、其實在分類問題中,當兩類樣本及其不平衡時,也可以將個數比例極小的那部分當做異常點來處理,從另外一種角度來完成分類任務

二、isolationforest

孤立森林(isolation

forest)是另外一種高效的異常檢測演算法,它和隨機森林類似,但每次選擇劃分屬性和劃分點(值)時都是隨機的,而不是根據資訊增益或者基尼指數來選擇。在建樹過程中,如果一些樣本很快就到達了葉子節點(即葉子到根的距離d很短),那麼就被認為很有可能是異常點。因為那些路徑d比較短的樣本,都是因為距離主要的樣本點分布中心比較遠的。也就是說,可以通過計算樣本在所有樹中的平均路徑長度來尋找異常點。

三、local outlier factor(lof)

基於密度或距離的方法,適用於二維或高維座標體系內異常點的判別,例如二維平面座標或經緯度空間座標下異常點識別

主要是通過比較每個點p和其鄰域點的密度來判斷該點是否為異常點,如果點p的密度越低,越可能被認定是異常點。至於密度,是通過點之間的距離來計算的,點之間距離越遠,密度越低,距離越近,密度越高。

lof通過計算乙個數值score來反映乙個樣本的異常程度。這個數值的大致意思是:乙個樣本點周圍的樣本點所處位置的平均密度比上該樣本點所在位置的密度。比值越大於1,則該點所在位置的密度越小於其周圍樣本所在位置的密度,這個點就越有可能是異常點。

四、基於高斯分布的方法

如果乙個物件不服從該分布,則認為他是乙個異常。有單元高斯分布和多元高斯分布

參考在上、下α分位點之外的值認為是異常值,

五、如何設計選擇features

異常檢測演算法其實就是對符合高斯分布的資料建模,如果樣本不是很符合高斯分布,演算法也可以很好的執行,但是如果把樣本轉換成高斯分布,演算法的效果會更好。有時候我們會遇到樣本不符合高斯分布的情況,而且偏的有點遠,因此這時通常來講我們需要對資料進行轉換,讓其符合高斯分布,一般可以通過對數轉(log(x))進行轉換。例如:

有時候我們還需要根據實際應用情況設計新的特徵變數來幫助異常檢測演算法更好的檢測離群點。

離群點檢測梳理

描述 離群點檢測,是發現於大部分其他物件顯著不同的物件。大部分分析都會把這些差異資訊丟棄,然而在一些場景中,這些資料可能存在巨大的價值 應用範圍 詐騙檢測 貸款審批 電子商務 網路入侵 天氣預報等領域 分類標準 分類標準 分類描述 資料範圍 全域性離群點和區域性離群點 離群特徵是從區域性和總體來看的...

離群點檢測方法 R語言單元序列離群點檢測

對於一組資料,要找到它的離群值,有很多方法。對於一組資料,要找到它的離群值,有很多方法。這裡在cran上蒐集了一些有趣而易用的離群點檢測包以供後續使用,基本每個r包都有自己的理論和實踐材料做支撐。cran package routliers cran.r project.org cran packa...

異常點 離群點檢測演算法 LOF

在資料探勘方面,經常需要在做特徵工程和模型訓練之前對資料進行清洗,剔除無效資料和異常資料。異常檢測也是資料探勘的乙個方向,用於反作弊 偽基站 金融詐騙等領域。異常檢測方法,針對不同的資料形式,有不同的實現方法。常用的有基於分布的方法,在上 下 分位點之外的值認為是異常值 例如圖1 對於屬性值常用此類...