數據與特徵

特徵縮放(feature scaling)

/ FEE-cher SKAY-ling /

特徵縮放,就是給每個數值特徵「調整尺寸」,讓它們用可比的單位說話。想像一下,在給運動員排名前,先把每個人的身高和體重換算到同一尺度上,免得「磅」僅僅因為數字本來就更大,就自動壓倒了「英寸」。歸一化和標準化,是兩種最常見的縮放配方。

具體說來,像收入(數萬量級)這樣的特徵,和像子女數(零到幾個)這樣的特徵,處在截然不同的尺度上。若不縮放,任何「度量距離」或「把加權特徵相加」的方法,都會僅僅因為量級問題而被那個數字大的特徵主導。縮放會把每個特徵重新縮放——比如壓到0到1的範圍,或調成均值為0、標準差為1——好讓每個特徵都有公平的發言權。縮放規則總是從訓練集中學得,再原封不動地套用到新資料上。

為何重要:基於距離的方法(k近鄰、k均值)、用梯度下降訓練的模型(多數神經網路、邏輯迴歸與線性迴歸),以及帶正則化的模型,在特徵經過縮放後都會表現更好、訓練更快。有些方法則不需要它——隨機森林、梯度提升這類基於樹的模型,一次只在一個特徵上切分,對尺度免疫——所以縮放是一件「方法需要時才用」的工具,而不是一種盲目執行的儀式。

若用收入(以元計)和年齡(以歲計)來找一位顧客的最近鄰,收入那龐大的數字會完全淹沒年齡——每個人的「最近鄰」都只是工資相近的那位罷了。把兩者都縮放到0到1,年齡才終於算數,於是相似度同時反映了這兩項特質。

縮放前,元淹沒了歲;縮放後,兩項特質都算數。

縮放並非總有必要:基於樹的模型(決策樹、隨機森林、梯度提升)對尺度不敏感。搞清楚哪些方法在乎縮放,能讓你避免照本宣科式的盲目預處理。

又稱
scalingrescaling特征缩放特徵縮放