異常值檢測(Outlier Detection)

2022-06-06 16:03:11 字數 2134 閱讀 4172

什麼是異常值?

對於定性變數來說,異常值是出現次數非常少的類別;對於定量變數來說,異常值是明顯大於或小於其他觀測值的數值。

異常值產生的原因: a. 人為錯誤:在資料收集,記錄或輸入過程中導致的錯誤。

c. 實驗誤差 

d. 資料處理錯誤:某些操作或提取錯誤。

e. 抽樣錯誤

f. 自然異常值:不是人為的(由於錯誤)導致的。

異常值的型別:

單變數(univariate)

多變數(multivariate)

異常值檢測:

單變數:

1. 使用pandas的describe()方法來檢視資料的描述統計量。

2. 使用各種視覺化方法,如box plot。

3. 用四分位數檢測。任何超出q1-1.5 x iqr~q3+1.5 x iqr範圍的數值都可以被認為是異常值。可以使用numpypercentile()方法。

4. 用z值(標準差)檢測。如果資料服從正態分佈,那麼距離平均數3個標準差及以上的數值被認為是異常值。

多變數:

1,基於模型的檢測

這種方法一般會構建乙個概率分布模型 ,並計算物件符合該模型的概率,把具有低概率的物件視為異常點。如果模型是簇的集合,則異常是不顯著屬於任何簇的物件;如果模型是回歸時,異常是相對遠離**值的物件。

2,基於近鄰的檢測

確定資料集的有意義的鄰近性度量比確定它的統計分布更容易。這種方法比統計學方法更一般、更容易使用,因為 乙個物件的異常點得分由到它的k-最近鄰(knn)的距離給定。

需要注意的是:異常點得分對k的取值高度敏感。如果k太小,則少量的鄰近異常點可能導致較低的異常點得分;如果k太大,則點數少於k的簇中所有的物件可能都成了異常點。為了使該方案對於k的選取更具有魯棒性,可以使用k個最近鄰的平均距離。

3,基於密度的檢測

從基於密度的觀點來說,異常點是在低密度區域中的物件。基於密度的離群點檢測與基於鄰近度的離群點檢測密切相關,因為密度通常用鄰近度定義。 一種常用的定義密度的方法是,定義密度為到k個最近鄰的平均距離的倒數。如果該距離小,則密度高,反之亦然。 另一種密度定義是 使用dbscan聚類演算法使用的密度定義,即乙個物件周圍的密度等於該物件指定距離d內物件的個數。

4,基於距離的檢測

原理:計算每個點與中心點的距離,距離較遠的可判斷為異常點。

計算距離的公式有很多,我們這裡採用馬氏距離。

python實現:

from scipy.spatial importdistance

deffunc_mahalanobis(df,n_outliers):

#n_outliers:異常值的個數,df:dataframe

#計算出異常值所對應的索引,越靠前的越異常

m_dist_order = pd.series([float(distance.mahalanobis(df.iloc[i], df.mean(), np.mat(df.cov().as_matrix()).i) ** 2)

for i in range(len(df))]).sort_values(ascending=false).index.tolist()

#假設n_outliers =2,說明你認為有2個異常,然後篩選出來

error_index =m_dist_order[:n_outliers]

error =df.iloc[error_index]

return error

5. 專門的異常點檢測

有兩個專門用於檢測異常點的方法:one class svmisolation forest

異常值的處理:

1,刪除含有異常值的記錄:適用於資料輸入錯誤,異常值資料非常少的情況。

2,變數轉換:比如取自然對數,進行分箱。

3,插值:用平均值,中位數或眾數替換。

4,封頂:對於那些取值超過1.5倍四分位距的數值,可以分別用該變數5%和95%的分位數替代原資料。

5,**:將異常值先替換為缺失值,再將其視作被解釋變數進行**。

6,不處理。異常值可能是欺詐檢測中有價值的資訊**,某天某產品的銷售額異常高,這時通常需要把會把離群值拿出來,單獨做文字說明。用估值代替或刪除不是乙個好主意。

R中異常值檢測

data1 complete.cases selectdata 布林判斷 true代表1,false代表0 sum complete.cases selectdata 完整資料200條 sum complete.cases selectdata 不完整資料1條 mean complete.cases...

常用異常值檢測方法

方法 1 均方差 在統計學中,如果乙個資料分布近似正態,那麼大約 68 的資料值會在均值的乙個標準差範圍內,大約 95 會在兩個標準差範圍內,大約 99.7 會在三個標準差範圍內。方法 2 箱形圖 箱形圖是數字資料通過其四分位數形成的圖形化描述。這是一種非常簡單但有效的視覺化離群點的方法。考慮把上下...

機器學習 異常值檢測

在生產生活中,由於裝置的誤差或者人為操作失當,產品難免會出現錯誤。然後檢查錯誤對人來說又是乙個十分瑣碎的事情。利用機器學習進行異常值檢測可以讓人類擺脫檢錯的煩惱。sum limits m sum limits m p x prod limits n sigma j 2 異常檢測演算法是乙個非監督學習...