(PS: 先跳過十二章,因爲那章講數據集成,這個後面再一起講,因爲要講的比較多。此外,下文若有錯誤,請指正,謝謝!😃)
這次是第十三章:
該章主要講數據變換的幾種方法中的數據規範化是什麼,以及如何用sklearn裏面的processing包來處理數據。還有其他變換的方法比如數據平滑、數據聚集、數據概化和屬性構造等方式,它們都可以將(特徵)數據轉換成適用於數據挖掘的形式。
所以數據變換也可以理解爲對要挖掘的特徵進行變換(用英文更專業點,叫Feature Scaling,也叫特徵縮放,詳細解釋參見維基百科)。
掌櫃這裏就簡單再補充幾點。
(小小提一下:爲什麼要進行數據變換? 通俗來講就是數據集裏面的不同字段不存在可比性,只有轉換到同一範圍纔可比。比如人的身高和體重,代表不同含義,也有不同取值範圍。如果我們不做數據變換處理,後面模型就會受影響。)
PPS,第一個補充點就是 數據規範化需要注意的地方:
-
1. 什麼時候用Min-Max規範化處理數據?
(也叫歸一化,這裏主要指基於最大、最小值的變換,因爲在不同領域,歸一化有不同含義。)- 如果要把原始數據線性變換到[0,1]區間,那就使用Min-Max規範化處理;
- 如果要對稀疏數據進行處理,也可以用Min-Max規範化;
- 在機器學習算法中,像KNN、SVM、人工神經網絡都可以先用Min-Max規範化處理數據;
- 不過,Min-Max規範化易受噪音數據的影響,這個需要注意!
-
2. 什麼時候用Z-Score標準化處理數據?
- 當要做中心化處理,並對數據分佈有正太分佈需求的時候用Z-Score標準化處理;
- 當特徵中含有異常值的時候,用Z-Score標準化更好處理;
- 在機器學習算法中,像線性迴歸、梯度下降算法也適合先用Z-Score標準化處理特徵數據。
-
3. 補充一個RobustScaler(縮放到中位數和分位數的)方法,什麼時候用RobustScaler方法?
- 當要最大限度地保留數據集中的異常值時,使用RobustScaler方法更好。
PPPS : 不是所有的數據都需要先進行特徵變換,像機器學習算法中的 樸素貝葉斯、基於樹模型的隨機森林,梯度提升算法(GBDT、XGBoost等)就不需要 。
😂怪不得前幾天掌櫃在練習的時候發現,用XGBoost模型進行訓練的時候,不進行特徵變換反而均方誤差更小了。。。
(下篇加入代碼加深理解!
參考資料:
歸一化和標準化:各種特徵如何綜合纔是最合理的?
帶你讀《Python數據分析與數據化運營(第2版)》之三:10條數據化運營不得不知道的數據預處理經驗
數據變換之標準化VS歸一化
)