如何從大量資料中找出異常值
機器學習中資料預處理階段,首先要考慮的就是將資料集中的異常值找出來,然後再做額外處理。當然,異常值的處理並不存在什麼銀彈,只能具體情況具體分析再根據效果選擇處理方法。
直方圖
看看資料集直方圖也許能看出點端倪,比如下面這個圖,下方的是原始資料集,上面的是對應直方圖,可以看到大多數都分佈在11000左邊,它的右邊存在一些分佈,這些分佈極少的點很可能就是異常點。

sigma原則
一些簡單的場景可能直接使用某些準則就能找出異常值,比如3 sigma或5 sigma之類的。如下圖,這裡用3 sigma準則找到5個異常點。該過程主要計算出平均值 mu
和標準差 sigma
,然後再比較 [mu-3*sigma,mu+3*sigma]

二次sigma處理
如果直接使用sigma原則效果不好,也就是說可能有些沒問題的點被識別成異常點,或者有些異常點沒有被發現,那麼這種情況下可以考慮用二次sigma處理。第一次使用n1 sigma,第二次n2 sigma。
快速傅立葉變換
如果是週期性的時序資料,假如原始訊號包含了噪音,可以考慮用快速傅立葉變換找出異常點。
假設有一個原始時序序列,現在對其新增高斯噪音,高斯噪音直方圖為圖中第二行,然後變成第三行帶高斯噪音的時序序列,增加噪音後看起來相當混亂,所以我們進行傅立葉變換將其轉換到頻域看能否將噪音分離,計算時通過快速傅立葉變換加快執行。
從頻率響應能清楚看到最獨特的兩個點,對應的頻率為5,知道頻率後可以通過一定的頻寬進行噪音分離,那麼比如選擇0.5,那麼頻率範圍就是[4.5,5.5]。將噪音去除後,我們再通過傅立葉逆變換即能得到去除噪音後的時序訊號。
