獨家 | 數據轉換:標準化vs 歸一化(附代碼&鏈接)


作者:Clare Liu, 英國金融科技數據科學家

翻譯:林鶴衝

校對:王紫嶽

本文約2300字,建議閱讀10分鐘

本文將解釋數據轉換中常見的特徵縮放方法:“標準化”和“歸一化”的不同之處,並舉例說明何時使用,以及如何使用它們。

數據轉換的前幾步往往可以提升機器學習模型的準確性。本文將解釋數據轉換中常見的特徵縮放方法:“標準化”和“歸一化”的不同之處,並舉例說明何時使用,以及如何使用它們。

數據轉換是數據處理中十分基本的步驟之一。當我初學特徵縮放的時候,經常用到“縮放” “標準化”“歸一化”等術語。但是卻很難找到應該在什麼時候,使用哪一種方法的信息。所以,我想從以下幾方面講解一下:

  • 標準化和歸一化的區別

  • 何時使用標準化和歸一化

  • 如何用Python實現特徵縮放

特徵縮放的意義

在實踐中,同一個數據集合中經常包含不同類別的變量。一個很大的問題是這些變量的值域可能大不相同。如果使用原值域將會使得值域大的變量被賦予更多的權重。針對這個問題,我們需要在數據預處理時對自變量或特徵使用縮放的方法。雖然,“歸一化”和 “標準化”這兩個說法有時候可以互換使用,但是二者本質上確是不同的。

“特徵縮放的目的是使得所有特徵都在相似的範圍內,因此建模時每個特徵都會變得同等重要,並且更便於機器學習的算法進行處理。”

 

範例

這個數據集包含一個因變量(purchased)以及三個自變量(Country, Age, Salary)。我們能很容易發現變量彼此不在同一個範圍內——年齡(Age)的值域在27-50之間,工資(Salary)的區間則是48K-83K。工資的值域遠遠地超過了年齡的值域。這會干擾我們的訓練模型,因爲很多的機器學習模型諸如K均值聚類(K-means clustering)和近鄰算法(Nearest neighbour classification)都依據了歐氏距離(Euclidean Distance)。

關注年齡和工資變量

當我們計算歐氏距離的時候,(x2-x1)² 的值要遠大於(y2-y1)² ,這意味着在不使用特徵縮放的情況下,歐氏距離會被工資變量主導。年齡間的差距對整體歐氏距離的影響則很小。因此,我們需要使用特徵縮放來將全部的數值統一到一個量級上來解決此問題。爲了達到這個目標,基本的解決方法有二:“標準化”和“歸一化”。

歐氏距離的應用

標準化 (Standardization):中心標準化

中心標準化(Z-score normalization)的結果是使所有特徵的數值被轉化成爲均值爲0、標準差爲1的正態分佈。公式如下:

這種將特徵的值域重新縮放到0到1之間的技巧對於優化算法是很有用的,諸如在迴歸和神經網問題中應用到的“梯度下降”。縮放也適用於基於距離測量的算法,比如K近鄰算法(KNN)。

歸一化:離差標準化 (Max-Min Normalization)

另一常用的方法就是離差標準化(Min-Max scaling)。這個方法是將每個特徵數值轉化到[0,1]區間。對於每個特徵,最小值被轉化爲0,最大值被轉化爲1。公式如下:

Code

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaler.fit(df)
scaled_features = scaler.transform(df)
#Convert to table format - MinMaxScaler
df_MinMax = pd.DataFrame(data=scaled_features, columns=["Age", "Salary","Purchased","Country_France","Country_Germany", "Country_spain"])

中心標準化 vs 離差標準化

相比於中心標準化,離差標準化後的標準差比較小。用上述數據集來展示:

特徵縮放後

工資變量的常態分佈和標準差

年齡變量的常態分佈和標準差

通過以上圖表,我們能清楚地發現離差標準化工資和年齡變量後,得到的標準差小於使用中心標準化方法。這說明在使用離差標準化後,數據的數值更加接近平均值。

但是如果特徵列中含有異常值(outlier), 離差標準化只能將所有特徵統一比例,並不能很好地解決異常值問題。中心標準化在異常值方面則有更好的表現,因此它比離差標準化應用更廣。

特徵縮放的使用場景:

一些基於距離矩陣的機器學習模型,被稱爲“距離分類器”,比如K近鄰算法(KNN),支持向量機(SVM),神經網絡(Neural Network)。特徵縮放對於這些模型非常重要,特別是在特徵的值域非常不同時。特徵縮放減少了大值域變量對計算距離的影響。

離差標準化幫助我們轉化不同比例上的數據,消除特殊特徵的主導。並且它不需要對數據的分佈進行假設(比如k近鄰和人工神經網絡)。但是,歸一化(離差標準化)不能很好地處理異常值。相反,標準化(中心標準化)可以更好地處理異常值,以及加速諸如梯度下降等算法的收斂。所以我們通常選擇中心標準化。

注:如果算法不是基於距離計算,特徵縮放則不重要,比如樸素貝葉斯和線性判別分析,以及樹模型(梯度提升、隨機森林等)。

總結:現在你應懂得

  • 使用特徵縮放的目的

  • 標準化與歸一化的區別

  • 需要使用標準化或歸一化的算法

  • 在Python中實現特徵縮放

獲取代碼和數據集合,請使用一下連接:

https://github.com/clareyan/feasturescaling

原文鏈接:

https://www.kdnuggets.com/2020/04/data-transformation-standardization-normalization.html


如您想與我們保持交流探討、持續獲得數據科學領域相關動態,包括大數據技術類、行業前沿應用、講座論壇活動信息、各種活動福利等內容,敬請掃碼加入數據派THU粉絲交流羣,紅數點恭候各位。

編輯:王菁

校對:林亦霖

譯者簡介

林鶴衝,墨爾本大學生物醫學和信息技術雙學士應屆畢業生。即將進入IT諮詢的領域。希望趁年輕多嘗試多學習來探尋和確定個人定位。希望能多補充專業知識和實踐經驗,未來能有機會在智能醫療領域發光發熱。希望能與大家多交流學習專業和人生的經驗!

翻譯組招募信息

工作內容:需要一顆細緻的心,將選取好的外文文章翻譯成流暢的中文。如果你是數據科學/統計學/計算機類的留學生,或在海外從事相關工作,或對自己外語水平有信心的朋友歡迎加入翻譯小組。

你能得到:定期的翻譯培訓提高志願者的翻譯水平,提高對於數據科學前沿的認知,海外的朋友可以和國內技術應用發展保持聯繫,THU數據派產學研的背景爲志願者帶來好的發展機遇。

其他福利:來自於名企的數據科學工作者,北大清華以及海外等名校學生他們都將成爲你在翻譯小組的夥伴。

點擊文末“閱讀原文”加入數據派團隊~

轉載須知

如需轉載,請在開篇顯著位置註明作者和出處(轉自:數據派ID:DatapiTHU),並在文章結尾放置數據派醒目二維碼。有原創標識文章,請發送【文章名稱-待授權公衆號名稱及ID】至聯繫郵箱,申請白名單授權並按要求編輯。

發佈後請將鏈接反饋至聯繫郵箱(見下方)。未經許可的轉載以及改編者,我們將依法追究其法律責任。

點擊“閱讀原文”擁抱組織

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章