機器學習中數值型特徵做特徵歸一化

2021-08-21 22:03:00 字數 1151 閱讀 1056

今天去某外賣平台面試機器學習演算法工程師,二面時面試官問到數值型特徵工程,提到歸一化,按常規想法就是minmaxscaler或zscore。本以為回答完美,但被面試官追問,為什麼做歸一化,做與不做,有什麼區別?這讓我猝不及防,就按自己的理解說,某些特徵的數值相較其他特徵數值範圍差異大,在演算法的訓練中,對結果受影響。面試官又問什麼程度是大?被這追問問的頭皮發麻。後面又提到數值型特徵也可以用對數?又被問什麼用對數,我就說對數是針對某些指數型資料特徵,降低資料的長度,有助於模型的訓練,加速訓練。這個時候也不知道自己說的對不對,腦子問的一片空白。這就是自己學藝不精,也是面試官的壓力測試,不停追問為什麼。

現在回到家,靜靜的梳理一下今天下午的問題吧

特徵歸一化(feature scaling),這也是許多機器學習模型都需要注意的問題。

有些模型在各個維度進行不均勻伸縮後,最優解與原來不等價,例如svm。對於這樣的模型,除非本來各維資料的分布範圍就比較接近,否則必須進行標準化,以免模型引數被分布範圍較大或較小的資料占有優勢。

有些模型在各個維度進行不均勻伸縮後,最優解與原來等價,例如logistic regression。對於這樣的模型,是否標準化理論上不會改變最優解。但是,由於實際求解往往使用迭代演算法,如果目標函式的形狀太「扁」,迭代演算法可能收斂得很慢甚至不收斂。所以對於具有伸縮不變性的模型,最好也進行資料標準化。

做歸一化有什麼好處呢?

其一是提公升模型訓練速度。

比如就兩個特徵,乙個特徵取值為0~2000,而另乙個特徵取值為1-5,對其進行優化時,會得到乙個長的橢圓形,導致在梯度下降時,梯度的方向為垂直等高線的方向而走之字形路線,這樣會使迭代慢。相比之下,做過鬼優化的迭代就會很快。

feature scaling:(make sure features are on a similar scale)

其二,提公升模型的精度。

在涉及到一些距離計算的演算法時效果顯著,比如演算法要計算歐式距離。做歸一化很有必要,可以讓各個特徵對結果做出的貢獻相同。

關於歸一化的選擇:

1)在分類、聚類演算法中,需要使用距離來度量相似性的時候,或者使用pca技術進行降維的時候,用zscore表現更好。

2)在不涉及距離度量、協方差計算、資料不符合正太分布的時候,可以使用minmaxscore或其他歸一化方法。

機器學習 特徵工程(一)

類 sklearn.feature extraction.dictvectorizer 語法結構 dictvectorizer sparse true,方法 dictvectorizer.fit transform x x 字典或者包含 字典的迭代器 返回值 返回 sparse矩陣 dictvect...

機器學習中特徵工程總結

構造更多 的特徵 檢視資料列名 print data train.columns 檢視資料每列資訊 數目,空置和型別 print data train.info 檢視每列統計資訊 數目 均值 方差 最小值 25 分位值 50 分位值 75 分位值和最大值 print data train.descr...

機器學習中特徵降維和特徵選擇的區別

在machine learning中,特徵降維和特徵選擇是兩個常見的概念,在應用machine learning來解決問題的 中經常會出現。對於這兩個概念,很多初學者可能不是很清楚他們的區別。很多人都以為特徵降維和特徵選擇的目的都是使資料的維數降低,所以以為它們是一樣的,曾經我也這麼以為,這個概念上...