在數據處理與應用中(如訓練機器學習算法或應用統計技術),錯誤值或異常值通常會造成測量誤差或異常系統條件的結果。
有時數據集中含有一個或多個異常大或者異常小的觀測值,像這種極端的值被稱為異常值。通常異常值產生的原因可能有:
(1)觀測、記錄或錄入時不正確;
(2)測量值來自不同的總體;
(3)測量值是正確的,但代表一個稀有或偶然的事件。
目前有許多技術可以檢測異常值,并且可以自主選擇是否從數據集中刪除。
這篇文章首先介紹一下一維數據中檢測異常值的一個方法:標準分數法。
變量值與其平均數的差除以標準差的值稱為標準分數,或稱Z得分,公式如下:
當Zi的絕對值大于某個數值時,可以將第i個樣本看成異常值。
在具體使用時,可以使用下面的判別法則。
(1)經驗法則:若數據集近似于丘形對稱分布,則①大約有68%的測測量值位于平均值的1個標準差的范圍內;②大約有95%的測量值位于平均值的2個標準差的范圍內;③幾乎所有的測量值位于平均值的3個標準差的范圍內。
(2)切比雪夫法則:對于任意的數據集,無論數據的頻數分布是什么形狀的,則①可能有很少的測量值落在平均值落在平均值的1個標準差的范圍內;②至少有3/4的測量值落在平均值的2個標準差的范圍內;③至少有8/9的測量值落在平均值的3個標準差的范圍內;④對于任意大于1的數k,至少有1-1/k2的測量值落在平均值的k個標準差的范圍內。
通過z得分及這兩個法則,可以判斷哪些樣本是異常的。
這里使用一個具體的例子來說明標準分數法的具體使用過程。
某婦產醫院隨機地選取了100個新生兒,其體重數據存儲在名為birthWeight的文本文件中。找出這些新生兒體重的異常值。數據在文件中的存儲格式如下:
編寫R語言程序:
X <- scan("birthWeight.txt") #定義變量X讀取數據
names(X) <- 1:length(X) #給每個數據編號
Xjz <- mean(X) #均值
S <- sd(X) #標準差
Z <- (X - Xjz) / S #Z得分
X[abs(Z) > 3] #提取出得分絕對值大于3的值
其在R語言編輯器中的情景:
運行結果如下圖所示:
從運行結果來看,是第6個數據960屬于異常值。因為根據經驗法則來看,幾乎所有的觀測值Z得分的絕對值均小于3.
新聞熱點
疑難解答