機器學習演算法在什麼情況下需要歸一化

2022-09-11 08:36:14 字數 1053 閱讀 2489

**:

機器學習模型被網際網路行業廣泛應用,一般做機器學習應用的時候大部分時間是花費在特徵處理上,其中很關鍵的一步就是對特徵資料進行歸一化,為什麼要歸一化呢?維基百科給出的解釋:1)歸一化後加快了梯度下降求最優解的速度;2)歸一化有可能提高精度。下面我簡單擴充套件解釋下這兩點。

如下圖所示,藍色的圈圈圖代表的是兩個特徵的等高線。其中左圖兩個特徵x1和x2的區間相差非常大,x1區間是[0,2000],x2區間是[1,5],其所形成的等高線非常尖。當使用梯度下降法尋求最優解時,很有可能走「之字型」路線(垂直等高線走),從而導致需要迭代很多次才能收斂;

而右圖對兩個原始特徵進行了歸一化,其對應的等高線顯得很圓,在梯度下降進行求解時能較快的收斂。

因此如果機器學習模型使用梯度下降法求最優解時,歸一化往往非常有必要,否則很難收斂甚至不能收斂。

2 歸一化有可能提高精度 

一些分類器需要計算樣本之間的距離(如歐氏距離),例如knn。如果乙個特徵值域範圍非常大,那麼距離計算就主要取決於這個特徵,從而與實際情況相悖(比如這時實際情況是值域範圍小的特徵更重要)。

3 歸一化的型別 

1)線性歸一化

這種歸一化方法比較適用在數值比較集中的情況。這種方法有個缺陷,如果max和min不穩定,很容易使得歸一化結果不穩定,使得後續使用效果也不穩定。實際使用中可以用經驗常量值來替代max和min。

2)標準差標準化(standardscale) 

經過處理的資料符合標準正態分佈,即均值為0,標準差為1,其轉化函式為:

其中μ為所有樣本資料的均值,σ為所有樣本資料的標準差。

3)非線性歸一化 

經常用在資料分化比較大的場景,有些數值很大,有些很小。通過一些數學函式,將原始值進行對映。該方法包括 log、指數,正切等。需要根據資料分布的情況,決定非線性函式的曲線,比如log(v, 2)還是log(v, 10)等。

此外:需要弄清楚哪些演算法模型在訓練之前需要進行歸一化,例如svm需要歸一化,而dt不需要歸一化等,這也是提公升演算法應用能力的必備能力之一。

layoutSubviews在什麼情況下呼叫

1.在以下情況都會呼叫 注意 當view的size的值為0的時候,addsubview也不會呼叫layoutsubviews。當要給這個view新增子控制項的時候不管他的size有沒有值都會呼叫 2.先來看一下uiview的layoutsubviews在什麼情況下會呼叫 subview view s...

python 在什麼情況下 rmul

在自定義列表mylist之後 3 mylist 報錯,mylist已經過載了 但是3沒有,這時同學告訴我可用 rmul 說我有乙個列表l。在什麼情況下l rmul 自我,其他 叫?我基本上理解了文件,但我也想看到乙個例子,澄清它的用法,毫無疑問。當python試圖乘以兩個物件時,它首先嘗試呼叫左物件...

什麼情況下,需要做血液透析?

血液透析 是 急慢性腎衰竭和其他一些嚴重疾病的重要方法。常見疾病的透析指徵如下 急性腎損傷 一 透析指徵 出現下列任何一種情況即可進行透析 一 血清肌酐 354umol l 4mg dl 或尿量 0.3ml kg h 持續24小時以上。二 高鉀血症,血清鉀 6.5mmol l。三 血hco3 15 ...