![]()
為什么標準化要把均值設為0、方差設為1?
先說均值。均值就是平均數,所有觀測值加起來除以個數。
![]()
μ是均值,n是數據點總數,x?是每個數據點,所以均值就是數據的重心位置。比如均值是20,那20就是平衡點。這不是說所有點到20的距離相等而是說兩邊的"重量"剛好在20這個位置抵消掉。
而方差衡量的是數據有多分散,定義是每個值與均值偏差的平方的平均值。
n是數據點總數,x?是每個數據點,μ是均值。
那均值為0有什么用?
可以把數據想象成坐標系里的一團“點云”。每個值減去均值(x — μ)之后,整團云就被平移到了原點位置。數據不再飄在某個角落而是以原點為中心分布。
這對很多機器學習算法都有好處,尤其是用梯度下降的時候。數據居中之后優化過程更平衡、收斂也更快。因為特征要是一開始就偏離原點很遠,訓練起來會麻煩不少。
那方差為1呢?
這是為了防止某個特征"欺負"其他特征。
舉個例子:年齡和薪資兩個特征,年齡范圍10-70,薪資范圍10,000-70,000。直接喂給模型的話,模型會覺得薪資比年齡重要1000倍(數字大嘛)。但這兩個特征本來是獨立的,憑什么薪資就更重要?
所以標準化就是除以標準差,讓所有特征的方差都變成1。這樣年齡和薪資就在同一個量級上了,變化幅度差不多。年齡有個小波動,不會因為薪資數字大就被模型無視掉。
可視化效果:
![]()
標準化之前,特征1(紅色,小尺度)和特征2(藍色,大尺度)放一起,紅色那條幾乎看不見。標準化之后,兩個特征尺度一致,都能清晰顯示出來。模型終于可以公平對待它們了。
什么時候需要標準化?邏輯回歸、神經網絡、KNN這類用梯度下降的算法,標準化影響最大。
總結一下:
均值為0讓數據居中,方差為1讓特征尺度統一。兩者配合,算法學得更快,也不會偏心某個特征。至于什么時候該用標準化、什么時候該用MinMaxScaler,老實說我也還在摸索。
https://avoid.overfit.cn/post/957b1b35bc1047e185dab369ae8d84ed
作者:vaishnavi
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.