給定資料集異常檢測方法
簡介
異常是指與現有資料集中其他觀測值存在很大差異的值或資料觀測值。在構建機器學習模型時,檢測和處理異常變得至關重要,因為傳遞給模型的資料質量應該足夠可靠。人們認為,高質量的資料集可以提供準確可靠的資訊,即使在效能非常差的演算法上也能取得成果,如果資料集本身質量很差,那麼獲得高效能模型的可能性就非常小。
本文將討論異常值、它們背後的核心思想、我們為什麼要檢測它們以及檢測它們的方法。這將幫助人們瞭解異常值的概念、它們在模型構建中的作用以及進一步檢測和處理它們。
什麼是異常?
異常或離群值是指給定資料集中不符合現有其他資料觀測值的資料點。異常值是指非常高、非常低或與其他資料觀測值非常不同的資料值或觀測值。
異常值對模型效能的影響最大,因此應妥善檢測和處理。資料清洗和預處理在構建準確可靠的模型中發揮著重要作用;在這裡,異常值檢測和去除是最複雜和最重要的階段之一。這裡需要注意的一點是,異常值檢測也是一項風險很大的任務,因為我們在這個階段檢測的是不符合正常資料的值。但有時異常值也可能對我們有所幫助,並提供正常資料無法提供的資訊,因此檢測和處理異常值需要技術和領域專家的共同努力。
異常檢測:方法
異常檢測和去除主要有兩種方法:
修剪
截尾
修剪是一種方法,我們對資料集進行修剪,並透過確定資料集的上限和下限來去除異常值或排除異常值。此技術是檢測和去除異常值的最快技術之一。
截尾是一種方法,我們用一些資料觀測值對資料進行截尾,顧名思義。在此,確定資料的上限和下限,並根據這些限制對資料進行截尾。
異常檢測:Z 分數
Z 分數是最古老、最可靠的異常值檢測方法之一。在這裡,我們使用統計方法來檢測資料集中異常值。每個具有數值的資料都將具有一定的分佈或方差,我們可以使用 Python 中的不同庫輕鬆地繪製這些分佈。在這裡,我們可以使用公式計算資料的 Z 分數,並將值大於 3 和小於 -3 的資料觀測值選為異常值。
Z 分數的公式可以是:
Z = Xi - Mean(X)/ StdDev(X)
Z = Z 分數
Xi = 資料觀測值
Mean(X) = X 的均值
StdDev = X 的標準差
示例
df['zscore'] = (df[‘x’] - df[‘x’].mean())/df[‘x’].std() df[(df['zscore'] > 3) | (df['zscore'] < -3)] new_df = df[(df['zscore'] < 3) & (df['zscore'] > -3)]
異常檢測:截尾
截尾也是最常用的異常值檢測和去除方法之一。在這裡,我們使用資料觀測值的標準差和均值來檢測並去除異常值。在這種方法中,我們計算資料的均值和標準差。然後根據我們從上限和下限獲得的值,我們設定閾值,對於這些閾值,具有高於上限的值的資料觀測值將被視為異常值,反之亦然。
此處使用以下公式計算資料的上限和下限:
上限 = Mean(X) + 3*(StdDev(X))
下限 = Mean(X) - 3*(StdDev(X))
示例
upper_limit = df[‘x’].mean() + 3*df[‘x’].std() lower_limit = df[‘x’].mean() - 3*df[‘x’].std() df[‘x’] = np.where( df[‘x’]>upper_limit, upper_limit, np.where( df[‘x’]<lower_limit, lower_limit, df[‘x’] ) )
我們可以看到,在上面的程式碼中,資料的均值和標準差的值決定了上限和下限。具有高於上限的值和低於下限的值的資料觀測值將被移除。
異常檢測:IQR 方法
四分位距方法也用於檢測資料分佈傾斜的異常值。在這種情況下,資料的上限和下限是根據資料的四分位距來確定的。在這裡,具有高於 Q3 + 1.5IQR 的值的資料觀測值被視為異常值,而具有低於 Q1 - 1.5 IQR 的值的資料觀測值被視為異常值。
上限 = Q3 + 1.5IQR
下限 = Q1 - 1.5IQR
這裡 IQR = 四分位距 = Q3 - Q1
Q3 = 資料集的第 75 個百分位數
Q1 = 資料集的第 25 個百分位數
示例
percentile25 = df['placement_exam_marks'].quantile(0.25) percentile75 = df['placement_exam_marks'].quantile(0.75) upper_limit = percentile75 + 1.5 * iqr lower_limit = percentile25 - 1.5 * iqr df[df[‘new_data’] > upper_limit] df[df[‘new_data’] < lower_limit] new_df = df[df['placement_exam_marks'] < upper_limit] new_df = df[df[‘new_data’] < upper_limit] New_df.shape
關鍵要點
異常值是指資料集中具有非常高或非常低的值的資料觀測值。
異常值是在資料清洗和預處理過程中處理的最關鍵的引數之一。
應妥善檢測和處理異常值,以避免模型效能不佳。
我們可以計算資料的 Z 分數,然後將值大於 3 或小於 -3 的異常值進行分類。
我們還可以使用截尾方法,其中我們根據資料的標準差和均值使用上限和下限對資料進行截尾。
在資料傾斜的情況下,也可以使用四分位距方法。這裡,上限和下限是根據 IQR、第 25 個和第 75 個百分位數資料來確定的。
結論
在本文中,我們討論了異常值、什麼是異常值、我們為什麼要檢測它們,以及希望我們可以如何處理它們。我們還討論了三種基於資料集的 Z 分數、截尾方法和四分位距方法的異常值檢測和去除方法。這將有助於人們更好地理解異常值的概 念,並幫助處理它們。