機器學習之特徵歸一化(normalization)

2021-08-30 15:35:29 字數 2100 閱讀 9827

一 引子

對房屋售價進行**時,我們的特徵僅有房屋面積一項,但是,在實際生活中,臥室數目也一定程度上影響了房屋售價。下面,我們有這樣一組訓練樣本:

房屋面積(英呎)    臥室數量(間)    售價(美元)

2104    3    399900

1600    3    329900

2400    3    369000

1416    2    232000

3000    4    539900

1985    4    299900

....    ...    ....

注意到,房屋面積及臥室數量兩個特徵在數值上差異巨大,如果直接將該樣本送入訓練,則代價函式的輪廓會是「扁長的」,在找到最優解前,梯度下降的過程不僅是曲折的,也是非常耗時的:

二 歸一化

該問題的出現是因為我們沒有同等程度的看待各個特徵,即我們沒有將各個特徵量化到統一的區間。

資料標準化(歸一化)處理是資料探勘的一項基礎工作,不同評價指標往往具有不同的量綱和量綱單位,這樣的情況會影響到資料分析的結果,為了消除指標之間的量綱影響,需要進行資料標準化處理,以解決資料指標之間的可比性。原始資料經過資料標準化處理後,各指標處於同一數量級,適合進行綜合對比評價。以下是兩種常用的歸一化方法:

standardization

standardization又稱為z-score normalization,量化後的特徵將服從標準正態分佈:

其中,u和delta分別為對應特徵的均值和標準差。量化後的特徵將分布在[-1, 1]區間。

min-max scaling

min-max scaling又稱為min-max normalization, 特徵量化的公式為:

量化後的特徵將分布在區間。

大多數機器學習演算法中,會選擇standardization來進行特徵縮放,但是,min-max scaling也並非會被棄置一地。在數字影象處理中,畫素強度通常就會被量化到[0,1]區間,在一般的神經網路演算法中,也會要求特徵被量化[0,1]區間。

進行了特徵縮放以後,代價函式的輪廓會是「偏圓」的,梯度下降過程更加筆直,收斂更快效能因此也得到提公升:

三 實現

# ...

def standardize(x):

"""特徵標準化處理

args:

x: 樣本集

returns:

標準後的樣本集

"""m, n = x.shape

# 歸一化每乙個特徵

for j in range(n):

features = x[:,j]

meanval = features.mean(axis=0)

std = features.std(axis=0)

if std != 0:

x[:, j] = (features-meanval)/std

else

x[:, j] = 0

return x

def normalize(x):

"""min-max normalization sklearn.preprocess 的maxminscalar

args:

x: 樣本集

returns:

歸一化後的樣本集

"""m, n = x.shape

# 歸一化每乙個特徵

for j in range(n):

features = x[:,j]

minval = features.min(axis=0)

maxval = features.max(axis=0)

diff = maxval - minval

if diff != 0:

x[:,j] = (features-minval)/diff

else:

x[:,j] = 0

return x

機器學習之 歸一化

之前我們討論了幾個機器學習的模型,線性回歸模型 linear regression 和邏輯回歸模型 logistic regression 這一次我們討論一下關於模型資料擬合的問題以及歸一化方法 regularization 過擬合問題 the problem of overfitting 如果我們...

機器學習中特徵歸一化的方法

資料標準化 歸一化 處理是資料探勘的一項基礎工作,不同評價指標往往具有不同的量綱和量綱單位,這樣的情況會影響到資料分析的結果,為了消除指標之間的量綱影響,需要進行資料標準化處理,以解決資料指標之間的可比性。原始資料經過資料標準化處理後,各指標處於同一數量級,適合進行綜合對比評價。以下是兩種常用的歸一...

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

今天去某外賣平台面試機器學習演算法工程師,二面時面試官問到數值型特徵工程,提到歸一化,按常規想法就是minmaxscaler或zscore。本以為回答完美,但被面試官追問,為什麼做歸一化,做與不做,有什麼區別?這讓我猝不及防,就按自己的理解說,某些特徵的數值相較其他特徵數值範圍差異大,在演算法的訓練...