【机器学习】机器学习中的缺失值及其填充处理
大多數機器學習算法不允許目標值或特征數組中存在缺失值。因此,不能簡單的忽略數據中的缺失值,而是要在數據預處理階段解決這個問題。
最簡單的解決方法是刪除所有含其缺失值的觀察值,用Numpy或Pandas很容易實現。
即便如此,刪除帶缺失值的觀察值也是一件令人心痛的決定,因為這樣做會讓算法丟失那些觀察值中那些非缺失值的信息,所以刪除觀察值只能作為最終別無他法時不得已的選擇。
還有一點很重要,刪除觀察值可能會在數據中引入偏差,這主要由缺失值的成因決定。
缺失值一共有三種類型:
- 完全隨機缺失(MCAR)
數據缺失的可能性與任何其他東西無關。
例如,某個接受問卷調查的人會在回答問題前先擲一個骰子,如果擲出了6,那她就跳過那個問題不做回答。 - 隨機缺失(MAR)
數據缺失的可能性不是完全隨機的,與已經存在的其他特征有關。
例如,在一次問卷調查中會問及性別和薪資水平,那么接受調查的女性更可能會跳過薪資的問題,但她們選擇是否作答要看我們是否已經得知其性別信息。 - 完全非隨機缺失(MNAR)
數據缺失的可能性完全是非隨機的,并且與未在特征中反映出的信息有關。
例如,一個問卷調查中會問及薪資水平,那么接受問卷調查的女性更可能會跳過薪資的問題,但是我們的數據中沒有關于性別的特征。
如果觀察值是MCAR或者MAR,那么有時候刪除它們是可以接受的。
如果它們是MNAR,那么數據缺失本身其實就是一個信息。刪除MNAR觀察值會導致數據產生偏差,因為這些觀察值是由未觀察到的系統效應產生的。
接下來說說缺失值的填充處理策略,主要有兩種,各有利弊。
首先,可以使用機器學習來預測缺失值。為了達到目的,可以將帶有缺失值的特征當作一個目標向量,然后使用剩余的特征來預測缺失值。雖然可以使用各種機器學習算法來做預測,但是流行的選擇是KNN,作為一種機器學習算法,KNN使用k個最臨近的觀察值(根據某種距離度量算法計算得到)來預測缺失值。KNN的不足是,為了知道哪些觀察值距離缺失值最近,需要計算每一個觀察值與缺失值之間的距離。對于小數據集,這樣處理沒有問題,但是如果數據集中有成千上萬的觀察值,計算量將成為一個很嚴重的問題。
一個比較容易擴展到大數據集的方案是使用平均值來代替缺失值。盡管這樣做的效果沒有使用KNN來得好,但是“平均值填充策略”很容易擴展到包含成千上萬觀察值的大數據集。
最后說一下,如果要采用填充策略,最好是創建一個二元特征來表明該觀察值是否包含填充值。
總結
以上是生活随笔為你收集整理的【机器学习】机器学习中的缺失值及其填充处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 去重的Set解不出“斯诺登的密码”(洛谷
- 下一篇: 【操作系统】Semaphore处理读者-