【机器学习】机器学习中的异常值的识别和处理
用于機器學習的數據難免有異常值的存在,這就需要我們識別并處理異常值。
可惜,并沒有一個通用的識別異常值的解決方案,每種方法都有自己的優勢和不足,嘗試綜合使用多種技術(如基于EllipticEnvelope和基于IQR的識別)并從整體上來看結果。
對于被判定為異常值的數據,我們不妨也關注一下。比如我們的數據集是一個關于房子的數據集,其中一個特征是房間數。此時,如果一個房子因為擁有100+個房間被判定為異常值,那我們可以問問自己:這個數據真的是異常數據,還是它本質是一個旅館呢?
再說說處理異常值,它和識別異常值一樣,沒有什么絕對的準則。我們可以從兩個角度(方面)來考慮對異常值的處理:
第一,要弄清楚是什么讓它們成為異常值的。如果你認為它們是錯誤的觀察值,比如他們來自一個壞掉的傳感器或者是被記錯了的值,那么就要丟棄他們或者使用NaN來替換異常值,因為這些數據無法被我們信任。但是,如果我們認為這些異常值時極端值(比如一個超級豪宅有100間臥室),那么把它們標記為異常值或者對它們的值進行轉換是比較合適的。
第二,應該基于機器學習的目標來處理異常值。例如,如果想要基于房屋的特征來預測其價格,那么可以合理的假設有100間臥室的大宅子的價格是由不同于普通家庭住宅的特征驅動的。此外,如果使用一個在線住房貸款的Web應用的部分數據來訓練一個模型,那么就要假設潛在用戶中不存在想要買一棟有幾百間臥室的豪宅的億萬富翁。
所以,處理異常值,首先要想想為什么這個(些)數據是異常值,然后對于數據要有一個最終的目標。最重要的是,要記住“決定不處理異常值”本身就是一個有潛在影響的決定。(想想Java的異常處理吧,發現異常全都不處理的話要異常處理體系干嘛呢?)
另外,如果數據中有異常值,那么采用標準化方法做縮放就不太合適了,因為平均值和方差受異常值的影響很大。這種情況下,需要針對異常值使用一個魯棒性更高的縮放方法,比如RobustScaler。
總結
以上是生活随笔為你收集整理的【机器学习】机器学习中的异常值的识别和处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【JavaScript】Canvas绘图
- 下一篇: 【UI/UX】浅谈Spin框