特徵縮放(feature scaling)是預處理階段的關鍵步驟,但常常被遺忘。雖然存在決策樹和隨機森林這種是少數不需要特徵縮放的機器學習演算法,但對於大部分機器學習演算法和優化演算法來說,如果特徵都在同一範圍內,會獲得更好的結果。比如梯度下降法。
特徵縮放的重要性可以通過乙個簡單的示例解釋。假設我們有兩個特徵,乙個特徵的取值範圍是[1,10],另乙個特徵的取值範圍是[1,100000]。我們使用adaline中的平方誤差函式,很明顯,權重更新時會主要根據第二維度特徵,這就使得在權重更新過程中第乙個特徵的話語權很小。另乙個例子是如果knn演算法用歐氏距離作為距離度量,第二維度特徵也佔據了主要的話語權。
有兩種方法能使不同的特徵有相同的取值範圍:歸一化(normalization)和標準化(standardization)。兩種方法還是有必要區分一下的。
1. 歸一化指的是將特徵範圍縮放到[0,1],是最小-最大縮放(min-max scaling)的特例。為了得到歸一化結果,我們對每乙個特徵應用最小-最大縮放,計算公式如下:
其中,xno
rmx_xn
orm
是x
ix^i
xi歸一化後的結果,xmi
nx_xmin
是對應的列特徵最小值,xma
xx_xmax
則是最大值。
sklearn中實現了最小-最大縮放,呼叫minmaxscaler類即可:
2. 標準化:
雖然歸一化方法簡單,但相對來說,標準化對於大部分機器學習演算法更實用。原因是大部分線性模型比如邏輯斯蒂回歸和線性svm在初始化權重引數時,要麼選擇0要麼選擇乙個接近0的隨機數。
使用標準化,我們能將特徵值縮放到以0為中心,標準差為1,換句話說,標準化後的特徵形式服從正態分佈,這樣學習權重引數更容易。此外,標準化後的資料保持了異常值中的有用資訊,使得演算法對異常值不太敏感,這一點歸一化就無法保證。
標準化的計算公式如下:
此時,u
xu_x
ux是訓練集對應特徵列的平均值,σ
x\sigma_x
σx是對應特徵列的標準差。
下面一張表使用乙個簡單的例子,展示了標準化和歸一化的區別:
sklearn中提供了standardscalar類實現列標準化:
強調,standardscaler只使用訓練集fit一次,這樣保證訓練集和測試集使用相同的標準進行的特徵縮放。
機器學習 特徵工程(一)
類 sklearn.feature extraction.dictvectorizer 語法結構 dictvectorizer sparse true,方法 dictvectorizer.fit transform x x 字典或者包含 字典的迭代器 返回值 返回 sparse矩陣 dictvect...
機器學習 特徵提取(一)
原始資料的種類有很多,除了數位化的訊號資料,還有大量符號化的文字。然而,無法將符號化的文字用於任務計算,二是通過某些處理手段,預先將文字量化為特徵向量。有些用符號化表示的資料特徵已經相對結構化,並且以字典這種資料結構進行儲存。這時使用dictvectorizer對特徵進行抽取和量化。定義乙個字典列表...
機器學習 特徵工程 特徵篩選
1 冗餘 部分特徵相關度太高,消耗計算效能,影響決策樹分支的選擇。2 雜訊 部分特徵是對 結果有負影響 3 降維 減少特徵數量 降維,使模型泛化能力更強,減少過擬合 4 特徵選擇與降維的關係 特徵選擇只篩選掉原本特徵裡和結果 關係不大的,後者做特徵的計算組合構成新特徵。svd pca降維也能解決一定...