特徵工程--特徵歸一化
特徵歸一化/正則化/非線性歸一化
歸一化的優勢
提升收斂速度:未歸一化優化目標的等值圖為橢圓,歸一化後優化目標的等值圖為圓形,優化時梯度為垂直等值線方向,橢圓以之字形下降 提升模型精度:如果我們選用的距離度量為歐式距離,如果資料預先沒有經過歸一化,那麼那些絕對值大的features在歐式距離計算的時候起了決定性作用。 從經驗上說,歸一化是讓不同維度之間的特徵在數值上有一定比較性,可以大大提高分類器的準確性。 歸一化與梯度下降,謹記梯度垂直等值線
何時使用歸一化
梯度下降法求解的模型一般需要歸一化。 這裡有一個一般的準則,就是需要歸一化的模型,說明該模型關心變數的值,而相對於概率模型來說,關心的是變數的分佈和變數之間的條件概率。所以大部分概率模型不需要歸一化。還有就是如果模型使用梯度下降法求最優解時,歸一化往往非常有必要,否則很難收斂甚至不能收斂。
邏輯迴歸必須要進行標準化嗎?
這取決於我們的邏輯迴歸是不是用正則。 如果你不用正則,那麼,標準化並不是必須的,如果你用正則,那麼標準化是必須的。 為什麼呢? 因為不用正則時,我們的損失函式只是僅僅在度量預測與真實的差距,加上正則後,我們的損失函式除了要度量上面的差距外,還要度量引數值是否足夠小。而引數值的大小程度或者說大小的級別是與特徵的數值範圍相關的。舉例來說,我們用體重預測身高,體重用kg衡量時,訓練出的模型是: 身高 = 體重*x x就是我們訓練出來的引數。 當我們的體重用噸來衡量時,x的值就會擴大為原來的1000倍。 在上面兩種情況下,都用L1正則的話,顯然對模型的訓練影響是不同的。 假如不同的特徵的數值範圍不一樣,有的是0到0.1,有的是100到10000,那麼,每個特徵對應的引數大小級別也會不一樣,在L1正則時,我們是簡單將引數的絕對值相加,因為它們的大小級別不一樣,就會導致L1最後只會對那些級別比較大的引數有作用,那些小的引數都被忽略了。
如果不用正則,那麼標準化對邏輯迴歸有什麼好處嗎? 進行標準化後,我們得出的引數值的大小可以反應出不同特徵對樣本label的貢獻度,方便我們進行特徵篩選。如果不做標準化,是不能這樣來篩選特徵的。
做標準化有什麼注意事項嗎? 最大的注意事項就是先拆分出test集,不要在整個資料集上做標準化,因為那樣會將test集的資訊引入到訓練集中,這是一個非常容易犯的錯誤!
需要歸一化的模型有
神經網路,標準差歸一化 支援向量機,標準差歸一化 線性迴歸,可以用梯度下降法求解,需要標準差歸一化 PCA LDA 聚類演算法基本都需要 K近鄰,線性歸一化,歸一到[0,1]區間內。 邏輯迴歸
不需要歸一化的模型:
決策樹: 每次篩選都只考慮一個變數,不考慮變數之間的相關性,所以不需要歸一化。 (資訊增益) 隨機森林:不需要歸一化,mtry為變數個數的均方根。 (資訊增益) 樸素貝葉斯
使用正則化的模型:
Lasso Elastic Net