應用:資料預處理-缺失值填充

weixin_33850890發表於2017-06-21

個人不建議填充缺失值,建議設定啞變數或者剔除該變數,填充成本較高

常見填充缺失值的方法:

1.均值、眾數填充,填充結果粗糙對模型訓練甚至有負面影響

2.直接根據沒有缺失的資料線性迴歸填充,這樣填充的好會共線性,填充的不好就沒價值,很矛盾

3.剔除或者設定啞變數

個人給出一個第二個方法的優化思路,供參考:

假設存在val1~val10的自變數,其中val1存在20%以上的缺失,現在用val2-val10的變數去填充val1,這邊參考了兩個模型的設計思路,一個是bagging演算法的隨機抽取避免過擬合,另一個是Tomek+Somte的填充方法

大概思路是:

1.隨機選取val1裡面的n/N個case(包括缺失case及非缺失case)作為樣本,隨機選取val2-val10內的m個衡量特徵

2.然後根據選擇的具體的m個資料的衡量特徵選擇相似度計算方式(常見的直接算距離、餘弦相似度之類),找出3-5個最臨近的非缺失case或者最遠的非缺失case(這裡涉及全域性或者區域性最優)

3.構造新的val1填充缺失的val1,新val1計算方式可以為3-5個非缺失的眾數、重心、隨機遊走、加權填充等

4.重複若干次,填充完所有缺失val1的點,當前的val1有非缺失case+填充case組成

5.這樣填充的方式存在填充case過擬合或者額外產生異常點的風險,所以需要做“新點檢測”,存在兩個邏輯:

5.1假設存在新填充點x,x附近最近的3-5點均為新填充點,及該點為危險點

5.2假設存在新填出點x,x距離最近的非缺失case距離大於預先設定的閥值(一般為離群處理後,所有非缺失case到缺失case距離的平均),及該點為危險點

6.危險點可以重新進行1-5,也可以剔除,視情況而定

在預處理後均衡樣本上填充,基於租車行業偷車使用者的年齡段填充,而後判斷某出行平臺使用者是否存在偷車可能,實際上做下來的ROC效果對比如下圖(資料有所隱逸,不代表官方資料):

1129359-46111f927840f80b.png

相關文章