正則化(Regularization)、歸一化(也有稱為正規化/標准化,Normalization)是對數據盡心預處理的方式,他們的目的都是為了讓數據更便於我們的計算或獲得更加泛化的結果,但並不改變問題的本質,下面對他們的作用分別做一下科普,如有不正確之處,求指正!
前言
需要注意的是,這些名詞在不同的領域含義也有點區別,這里僅僅指的是在進行機器學習研究的時候所使用的意義。
一、正則化(Regularization)
李航博士在《統計學習方法》中提到,統計學習的三要素是模型、策略和算法,在機器學習領域,這個“模型”就是我們要求解的概率分布或決策函數。
假設我們現在要求一個邏輯回歸問題,首先我們要做的是假設一個函數,可以覆蓋所有的可能:y=wx,其中w為參數向量,x為已知樣本的向量,如果用$y{i}表示第i個樣本的真實值,用f(x{i})$表示樣本的預測值,那么我們的損失函數可以定義為:
這里可以不用關心這個函數是什么意思,就知道代表誤差就行了。對於該模型y=wx的所有樣本的損失平均值成為“經驗風險”(empirical risk)或”經驗損失”(empirical loss)。很顯然,經驗風險最小化(empirical risk minimization,ERM)就是求解最優模型的原則。為了達到這個目的,模型的設定會越來越復雜,最后造成該模型只適用於當前的樣本集(即over-fitting,過擬合)。
為了解決過擬合問題,通常有兩種辦法,第一是減少樣本的特征(即維度),第二就是我們這里要說的”正則化“(又稱為”懲罰“,penalty)。
正則化的一般形式是在整個平均損失函數后增加一個正則項(L2范數正則化,也有其他形式的正則化,他們的作用也不同):
后面的$\sum{i}^{n}\lambda w{i}^2就是正則化項,其中\lambda$越大表明懲罰粒度越大,等於0表示不做懲罰,N表示所有樣本的數量,n表示參數的個數。
從下面的圖中,可以很明顯的看出正則化函數的作用:
λ=0的情況,即沒有正則化
λ=1的情況,即合適的懲罰
λ=100,過度懲罰,出現欠擬合問題
上面提到,我們還有其他形式的正則化,如L1范式正則化,可以用來篩選參數,這個日后再通過額外的文章來介紹。
二、歸一化(Normalization)
我們在對數據進行分析的時候,往往會遇到單個數據的各個維度量綱不同的情況,比如對房子進行價格預測的線性回歸問題中,我們假設房子面積(平方米)、年代(年)和幾居室(個)三個因素影響房價,其中一個房子的信息如下:
- 面積(S):150 平方米
- 年代(Y):5 年
假設我們把該問題作為一個邏輯回歸問題y=wx來求解,使用梯度下降來求解w的最優值。
效率比較高的梯度下降方法中,每次下降應該盡可能的往最優點靠近,假設下降距離函數為:
$$distance = \lambda | \Delta^* | $$ |
其中$ | \Delta^* | 表示梯度的模,\lambda$表示步長,如果兩個向量的取值范圍差別特別大,那么這兩個向量的圖像會顯得很“細長”: |
我們的梯度在尋找最優值的時候,由於圖像“細長”,所以要來回找垂直線,兩個維度范圍相差的越大,梯度下降的越慢,還可能永遠無法收斂。
為了解決這個問題,假如我們把所有的數據范圍都是用歸一化處理在0到1的區間內(也可以是0到10等其他范圍,但一般是0到1),如使用以下歸一化公式:
我們的圖像就會變得更加“正圓”一些:
我們可以很清楚的看到 ,梯度會更加快速的找到最優點。
后記
其實這篇文章寫之前,我還糾結了很久“標准化(Standardization)”這個概念,最后請教了很多人,發現大家最常用的還是歸一化和正則化兩個概念。不同的場合大家的稱謂也不同,總結起來還是按照英文來說比較沒有歧義:Normalization和Regularization兩個概念。
轉載自http://sobuhu.com/ml/2012/12/29/normalization-regularization.html