一、特徵工程的常用方法
-
特徵工程的目的:通過上一步的特徵分析,去構建有效的特徵來擬合隱藏的規律。
-
常用方法:
A. 異常處理:
a) 通過箱線圖(或 3-Sigma)分析刪除異常值;
b) BOX-COX 轉換(處理有偏分佈);
c) 長尾截斷;B. 特徵歸一化/標準化:
a) 標準化(轉換爲標準正態分佈);
b) 歸一化(抓換到 [0,1] 區間);
c) 針對冪律分佈,可以採用公式: 𝑙𝑜𝑔(1+𝑥1+𝑚𝑒𝑑𝑖𝑎𝑛)C. 數據分桶:
a) 等頻分桶;
b) 等距分桶;
c) Best-KS 分桶(類似利用基尼指數進行二分類);
d) 卡方分桶;D. 缺失值處理:
a) 不處理(針對類似 XGBoost 等樹模型);
b) 刪除(缺失數據太多);
c) 插值補全,包括均值/中位數/衆數/建模預測/多重插補/壓縮感知補全/矩陣補全等;
d) 分箱,缺失值一個箱;E. 特徵構造:
a) 構造統計量特徵,報告計數、求和、比例、標準差等;
b) 時間特徵,包括相對時間和絕對時間,節假日,雙休日等;
c) 地理信息,包括分箱,分佈編碼等方法;
d) 非線性變換,包括 log/ 平方/ 根號等;
e) 特徵組合,特徵交叉;
f) 仁者見仁,智者見智。F. 特徵篩選
a) 過濾式(filter):先對數據進行特徵選擇,然後在訓練學習器,常見的方法有 Relief/方差選擇發/相關係數法/卡方檢驗法/互信息法;
b) 包裹式(wrapper):直接把最終將要使用的學習器的性能作爲特徵子集的評價準則,常見方法有 LVM(Las Vegas Wrapper) ;
c) 嵌入式(embedding):結合過濾式和包裹式,學習器訓練過程中自動進行了特徵選擇,常見的有 lasso 迴歸;G. 降維
a) PCA/ LDA/ ICA;
b) 特徵選擇也是一種降維。
二. 該題中的特徵工程
1. 處理異常值:通過箱型圖處理異常值.
異常值處理了兩個:power和訓練集的price。 處理完後,雖然訓練數據很好看,達到了360左右,但是測試糟糕,提交後4000+。 迴歸問題最怕異常值,說明測試集中也存在異常值,因此訓練集感覺不能處理異常值。
2. 構造使用時間的特徵: 用regDate-creatDate.
3. 構造郵編特徵: 原先的regionCode太稀疏了,捨棄該特徵,構造城市特徵。 因爲該特徵做過脫敏處理,因此取前兩位。
4. 構造品牌統計量信息: 計算某品牌的銷售統計量,還可以計算其他特徵的統計量.
嘗試構造過交易名稱name,model等統計量,似乎容易過擬合.
這裏要以 train 的數據計算統計量.
5. 處理object特徵-notRepairedDamage
a) 處理特徵中的“-”
b) 變爲數字特徵
6. 'seller’和’offerType’特徵處理
'seller’和’offerType’基本只存在相同的一類特徵,對迴歸沒有幫助,可以刪除
7. 根據皮爾係數相關性矩陣,去掉一些強相關的匿名特徵
8. log處理power特徵
之前數據分析中,power的偏度和峯度都比較大,因此做一下log處理比較好。
9. 最後保存數據,方便訓練模型的時候調用
**注:**歸一化基本沒有做,是因爲使用xgboost和lightgbm模型對數據大小不敏感,使用線性等模型需要作歸一化。