機(jī)器學(xué)習(xí)模型什么時候需要做數(shù)據(jù)標(biāo)準(zhǔn)化?
機(jī)器學(xué)習(xí)
Author:louwill
Machine Learning?Lab
? ? ?
? ? ?一直都有朋友在做機(jī)器學(xué)習(xí)模型時有疑問:我的數(shù)據(jù)要不要做標(biāo)準(zhǔn)化處理?

? ? ?這個問題筆者也思考過,只不過不夠系統(tǒng),觀點也比較單一,所以才有了上圖中的【變量單位之間數(shù)量級差異過大】的回答。就著這個話題,筆者查閱相關(guān)資料,相對這個問題進(jìn)行一個詳細(xì)的闡述。
什么是數(shù)據(jù)標(biāo)準(zhǔn)化
? ? ?在完整的機(jī)器學(xué)習(xí)流程中,數(shù)據(jù)標(biāo)準(zhǔn)化(Data Standardization)一直是一項重要的處理流程。一般我們將數(shù)據(jù)標(biāo)準(zhǔn)化放在預(yù)處理過程中,作為一項通用技術(shù)而存在。但很多時候我們并不清楚為什么要對數(shù)據(jù)做標(biāo)準(zhǔn)化處理,是不是做了標(biāo)準(zhǔn)化模型表現(xiàn)就一定會提升。
? ? ?數(shù)據(jù)標(biāo)準(zhǔn)化的直接定義如下公式所示:
? ? ?即對數(shù)據(jù)集特征每一數(shù)據(jù)減去特征均值后除以特征標(biāo)準(zhǔn)差。數(shù)據(jù)標(biāo)準(zhǔn)化可以將對應(yīng)特征數(shù)據(jù)變換均值為0方差為1。經(jīng)過數(shù)據(jù)標(biāo)準(zhǔn)化之后,數(shù)據(jù)集所有特征有了同樣的變化范圍。
? ? ?數(shù)據(jù)標(biāo)準(zhǔn)化一個最直接的應(yīng)用場景就是:當(dāng)數(shù)據(jù)集的各個特征取值范圍存在較大差異時,或者是各特征取值單位差異較大時,我們是需要使用標(biāo)準(zhǔn)化來對數(shù)據(jù)進(jìn)行預(yù)處理的。
? ?舉個例子,一個包含兩個特征的數(shù)據(jù),其中一個特征取值范圍為5000~10000,另一個特征取值范圍僅有0.1-1,實際在建模訓(xùn)練時,無論什么模型,第一個特征對模型結(jié)果的影響都會大于第二個特征,這樣的模型是很難有效做出準(zhǔn)確預(yù)測的。
與數(shù)據(jù)歸一化的區(qū)別
? ? ?數(shù)據(jù)歸一化(Normalization)同樣也是一項數(shù)據(jù)預(yù)處理技術(shù)。但一直以來,我們都是標(biāo)準(zhǔn)化和歸一化傻傻分不清楚,并且存在長期混用的情況。數(shù)據(jù)歸一化的計算公式如下:

? ? ?或者是:

? ? ?筆者查閱相關(guān)資料,發(fā)現(xiàn)對于這兩種數(shù)據(jù)變換方法,一直沒有統(tǒng)一的界定。很多時候都存在標(biāo)準(zhǔn)化和歸一化概念混用的情況,有時候把z-score變換叫歸一化,有時候又把min-max歸一化叫標(biāo)準(zhǔn)化。通過比對,筆者認(rèn)為標(biāo)準(zhǔn)化指的就是z-score變換,即前述第一個公式。歸一化指的就是min-max變換,即前述第二或第三個公式。
? ? ?數(shù)據(jù)標(biāo)準(zhǔn)化為了不同特征之間具備可比性,經(jīng)過標(biāo)準(zhǔn)化變換之后的特征分布沒有發(fā)生改變。數(shù)據(jù)歸一化的目的是使得各特征對目標(biāo)變量的影響一致,會將特征數(shù)據(jù)進(jìn)行伸縮變化,所以數(shù)據(jù)歸一化是會改變特征數(shù)據(jù)分布的。
哪些模型對標(biāo)準(zhǔn)化處理比較敏感?
? ? ?機(jī)器學(xué)習(xí)中有部分模型是基于距離度量進(jìn)行模型預(yù)測和分類的。由于距離對特征之間不同取值范圍非常敏感,所以基于距離讀量的模型是十分有必要做數(shù)據(jù)標(biāo)準(zhǔn)化處理的。
? ? ?最典型基于距離度量的模型包括k近鄰、kmeans聚類、感知機(jī)和SVM。另外,線性回歸類的幾個模型一般情況下也是需要做數(shù)據(jù)標(biāo)準(zhǔn)化處理的。決策樹、基于決策樹的Boosting和Bagging等集成學(xué)習(xí)模型對于特征取值大小并不敏感。所以這類模型一般不需要做數(shù)據(jù)標(biāo)準(zhǔn)化處理。另外有較多類別變量的數(shù)據(jù)也是不需要做標(biāo)準(zhǔn)化處理的。
結(jié)論
? ? ?結(jié)論就是當(dāng)數(shù)據(jù)特征取值范圍或單位差異較大時,最好是做一下標(biāo)準(zhǔn)化處理。k近鄰、kmeans聚類、感知機(jī)、SVM和線性回歸類的模型,一般也是需要做數(shù)據(jù)標(biāo)準(zhǔn)化處理的。另外最好區(qū)分一下數(shù)據(jù)標(biāo)準(zhǔn)化和數(shù)據(jù)歸一化。
參考資料:
https://towardsai.net/p/data-science/how-when-and-why-should-you-normalize-standardize-rescale-your-data-3f083def38ff
往期精彩:
【原創(chuàng)首發(fā)】機(jī)器學(xué)習(xí)公式推導(dǎo)與代碼實現(xiàn)30講.pdf
【原創(chuàng)首發(fā)】深度學(xué)習(xí)語義分割理論與實戰(zhàn)指南.pdf

喜歡您就點個在看!

