資料預處理相關技術
-
特徵預處理
- MinMaxScalar 不會改變資料分佈
- StandardScalar
- scipy.stats.rankdata
-
log transform
np.log(1+x)
-
raising to the power < 1
np.sqrt(x + 2/3)
- drop outlier(winsorization,specify upper and lower bound)
融合不同預處理方法得到的特徵訓練一個模型或者每一種特徵訓練出一個模型最後做模型融合
-
特徵生成
- 主要依據先驗經驗以及對資料的深刻理解
- 例如,浮點數的小數部分單獨提取出來作為特徵
類別資料以及有序類別資料
-
特徵預處理
-
Label encoding (tree(or non-tree)-based model)
-
alphabetical sorted
sklearn.preprocessing.LabelEncoder
-
order of appearance
Pandas.factorize
- frequency encoding (非常適用於測試資料中包含訓練資料未包含的類別)
-
alphabetical sorted
-
Label encoding (non-tree(or tree)-based model)
- one-hot encoding (sparse matrix)
-
Label encoding (tree(or non-tree)-based model)
-
特徵生成
- 列舉不同的類別特徵的組合形成新的類別特徵 (linear models and KNN)
日期資料以及座標資料
日期資料
-
特徵生成
-
週期性資料
- Day number in week, month, season, year
- second, minute, second
-
自什麼時候以來
- 問題無關, 比如自1970年1月1日以來
- 問題相關,比如距離下一個節假日還有多少天等等
- 兩個日期特徵之間的差值
-
週期性資料
座標資料
-
特徵生成
- 距離某些關鍵座標的距離等等(需要外部資料支援)
- 對座標進行網格化或者聚類,然後計算每個網格中的點距離選定點的距離或者每個簇中的點距離聚類中心的距離
- 點的密度(某一限定範圍之內)
- 區域價值,例如物價房價等(某一限定範圍之內)
-
特徵預處理
- 座標旋轉(例如45°)
缺失值處理
- 找出隱含的NaN,通過視覺化資料分佈
-
填充方法
-999, -1
-
特徵生成
- 增加一個特徵,是否有缺失值
- 採用填充的缺失值進行特徵生成要特別小心,一般來說若要進行特徵生成,則最好不要在之前進行缺失值填充
- xgboost對於缺失值不敏感