簡單來說,即在資料集中存在不合理的值,又稱離群點。
我們舉個例子,做客戶分析,發現客戶的年平均收入是80萬美元。 但是,有兩個客戶的年收入是4美元和420萬美元。 這兩個客戶的年收入明顯不同於其他人,那這兩個觀察結果將被視為異常值。
每當我們遇到異常值時,處理這些異常值的理想方法就是找出引起這些異常值的原因。 處理它們的方法將取決於它們發生的原因, 異常值的原因可以分為兩大類:
人為錯誤人為錯誤(如資料收集,記錄或輸入過程中導致的錯誤)會導致資料中的異常值。 例如:客戶的年收入是10萬美元,但意外地,資料輸入操作附加乙個零。 現在的收入就是100萬美元,是10倍。 顯然,與其他人相比,這將是異常值。自然錯誤
這是異常值最常見的**。 當使用的測量儀器出現故障時,會引起這種情況。 例如:有10台稱重機。 其中9個是正確的,1個是錯誤的。 故障機器上的人員測量重量將高於或低於組內其餘人員。 在故障機器上測量的重量可能導致異常值。
異常值的另乙個原因是實驗誤差。 例如:在7名跑步者的100公尺衝刺中,有一名選手錯過了跑的口令,讓他開始延遲。 因此,這使得跑步者的跑步時間比其他跑步者要多, 總執行時間可能是乙個異常值。
通常在自我報告的措施中涉及敏感資料。 例如:通常青少年報告酒量,只有其中一小部分報告實際價值,這裡的實際值可能看起來像異常值,因為其餘的青少年正在假值。
無論何時執行資料探勘,我們從多個**提取資料。 某些操作或提取錯誤可能會導致資料集中的異常值。
例如,衡量運動員的身高,錯誤地在樣品中包括幾名籃球運動員。 這種包含可能會導致資料集中的異常值。
當異常值不是人為的(由於錯誤),它是乙個自然的異常值。 例如:注意到其中一家著名的保險公司,前50名財務顧問的表現遠遠高於其他人。 令人驚訝的是,這不是由於任何錯誤。 因此,每當與顧問一起執行任何資料探勘活動時,我們都會分別對待此細分。
對屬性值進行乙個描述性的統計,從而檢視哪些值是不合理的。比如對年齡這個屬性進行規約:年齡的區間在[0:200],如果樣本中的年齡值不再該區間範圍內,則表示該樣本的年齡屬性屬於異常值。
當資料服從正態分佈:
根據正態分佈的定義可知,距離平均值3δ之外的概率為 p(|x-μ|>3δ) <= 0.003 ,這屬於極小概率事件,在預設情況下我們可以認定,距離超過平均值3δ的樣本是不存在的。 因此,當樣本距離平均值大於3δ,則認定該樣本為異常值。
當資料不服從正態分佈:
當資料不服從正態分佈,可以通過遠離平均距離多少倍的標準差來判定,多少倍的取值需要根據經驗和實際情況來決定。
箱線圖(boxplot)也稱箱須圖(box-whisker plot),是利用資料中的五個統計量:最小值、第一四分位數、中位數、第三四分位數與最大值來描述資料的一種方法,它也可以粗略地看出資料是否具有有對稱性,分布的分散程度等資訊,特別可以用於對幾個樣本的比較。
具體含義如下,首先計算出第一四分位數(q1)、中位數、第三四分位數(q3)。
中位數我們都知道,就是將一組數字按從小到大的順序排序後,處於中間位置(也就是50%位置)的數字。
同理,第一四分位數、第三四分位數是按從小到大的順序排序後,處於25%、75%的數字。
令 iqr=q3−q1,那麼 q3+1.5(iqr) 和 q1−1.5(iqr) 之間的值就是可接受範圍內的數值,這兩個值之外的數認為是異常值。
在q3+1.5iqr(四分位距)和q1-1.5iqr處畫兩條與中位線一樣的線段,這兩條線段為異常值截斷點,稱其為內限;在q3+3iqr和q1-3iqr處畫兩條線段,稱其為外限。
處於內限以外位置的點表示的資料都是異常值,其中在內限與外限之間的異常值為溫和的異常值(mild outliers),在外限以外的為極端的異常值(li)的異常值extreme outliers。這種異常值的檢測方法叫做tukey』s method。
從矩形盒兩端邊向外各畫一條線段直到不是異常值的最遠點 表示該批資料正常值的分布區間點,示該批資料正常值的分布區間。
一般用「〇」標出溫和的異常值,用「*」標出極端的異常值。
首先我們定義下上四分位和下四分位。
上四分位我們設為 u,表示的是所有樣本中只有1/4的數值大於u
同理,下四分位我們設為 l,表示的是所有樣本中只有1/4的數值小於l
那麼,上下界又是什麼呢?
我們設上四分位與下四分位的插值為iqr,即:iqr=u-l
那麼,上界為 u+1.5iqr ,下界為: l - 1.5iqr
箱型圖選取異常值比較客觀,在識別異常值方面有一定的優越性。
1.刪除含有異常值的記錄
2.將異常值視為缺失值,交給缺失值處理方法來處理
3.用平均值來修正
4.不處理
import pandas as pd
import numpy as np
from collections import counter
defdetect_outliers
(df,n, features)
: outlier_indices =
for col in features:
q1 = np.percentile(df[col],25
) q3 = np.percentile(df[col],75
) iqr = q3 - q1
outlier_step =
1.5* iqr
outlier_list_col = df[
(df[col]
< q1 - outlier_step)
|(df[col]
> q3 + outlier_step)
].index
outlier_indices.extend(outlier_list_col)
outlier_indices = counter(outlier_indices)
multiple_outliers =
list
( k for k, v in outlier_indices.items(
)if v > n)
return multiple_outliers
df = pd.read_csv(
"data.csv"
)outliers_to_drop = detect_outliers(df,2[
"col1"
,"col2"
,"col3"
,"col4"])
df = df.drop(outliers_to_drop, axis=0)
.reset_index(drop=
true
)
異常值的處理
最近看到資料分析師秋招時關於異常值處理的問題,小白上網搜了以下,特在此做一下總結。何為異常值處理,小白要分異常值和處理兩步來介紹。異常值 對整體樣本資料結構表達時,通常抓住整體樣本一般性的性質,而在這些性質上與樣本整體表達不一致的點,稱其為異常點。異常值有好有壞,我們可以疾病 信用欺詐,網路攻擊等。...
異常值的處理
原理3西格瑪準則,對一組資料計算處理後,可以得到乙個置信區間,在此區間之外的部分應該被視為異常值。3西格瑪 0.68 0.95 0.99。處理方法 箱線圖 上下兩邊出現的點視為異常值.pandas中提供boxplot 方法繪製箱型圖 a 直接刪除 b 使用前後兩個邊界值的均值替換 c 不處理 d 視...
異常值檢查與處理
異常值,即在資料集中存在不合理的值,又稱離群點,如下所示 對屬性值進行乙個描述性的統計,從而檢視哪些值是不合理的。比如 對待乙個人的身高,不可能說有人的身高出現3m等以上的 如果是能使用影象直接顯示資料的話,可以直觀的直接直觀的從中得出異常值 當資料服從正態分佈 根據正態分佈的定義可知,距離平均值3...