在實際應用中,需要歸一化的模型:
基于距離計算的模型:KNN。
通過梯度下降法求解的模型:線性回歸、邏輯回歸、支持向量機、神經網絡。
但樹形模型不需要歸一化,因為它們不關心變量的值,而是關心變量的分布和變量之間的條件概率,如決策樹、隨機森林(Random Forest)。
樹形結構為什么不需要歸一化?
因為數值縮放不影響分裂點位置,對樹模型的結構不造成影響。
按照特征值進行排序的,排序的順序不變,那么所屬的分支以及分裂點就不會有不同。而且,樹模型是不能進行梯度下降的,因為構建樹模型(回歸樹)尋找最優點時是通過尋找最優分裂點完成的,因此樹模型是階躍的,階躍點是不可導的,并且求導沒意義,也就不需要歸一化。
在k-means或kNN,我們常用歐氏距離來計算最近的鄰居之間的距離,有時也用曼哈頓距離,請對比下這兩種距離的差別 歐氏距離,最常見的兩點之間或多點之間的距離表示法,又稱之為歐幾里得度量,它定義于歐幾里得空間中。
數據歸一化(或者標準化,注意歸一化和標準化不同)的原因
能不歸一化最好不歸一化,之所以進行數據歸一化是因為各維度的量綱不相同。而且需要看情況進行歸一化。
有些模型在各維度進行了不均勻的伸縮后,最優解與原來不等價(如SVM)需要歸一化。 有些模型伸縮有與原來等價,如:LR則不用歸一化,但是實際中往往通過迭代求解模型參數,如果目標函數太扁(想象一下很扁的高斯模型)迭代算法會發生不收斂的情況,所以最好進行數據歸一化。