正則化&&邏輯迴歸

正則化:簡單性

查看如下泛化曲線,該曲線顯示的是訓練集和驗證集相對於訓練迭代次數的損失。算法

clipboard.png
上圖顯示的是某個模型的訓練損失逐漸減小,但驗證損失最終增長。換言之,該泛化曲線顯示該模型與訓練集中的數據過擬合。根據奧卡姆剃刀定律,或許咱們能夠經過下降複雜模型的複雜度來防止過擬合,這種原則稱爲正則化機器學習

通常來講,監督學習能夠看作最小化下面的目標函數.其中,第一項L(yi,f(xi;w)) 衡量咱們的模型(分類或者回歸)對第i個樣本的預測值f(xi;w)和真實的標籤yi以前的偏差.第二項,也就是對參數w的規則化函數Ω(w)去約束咱們的模型儘可能的簡單函數

clipboard.png

咱們不只要保證訓練偏差最小,咱們更但願咱們的模型測試偏差小,因此咱們須要加上第二項,也就是對參數w的規則化函數Ω(w)去約束咱們的模型儘可能的簡單,機器學習的大部分帶參模型都和這個不但形似,並且神似。是的,其實大部分無非就是變換這兩項而已。對於第一項Loss函數,若是是Square loss,那就是最小二乘了;若是是Hinge Loss,那就是著名的SVM了;若是是exp-Loss,那就是牛逼的 Boosting了;若是是log-Loss,那就是Logistic Regression了;還有等等。不一樣的loss函數,具備不一樣的擬合特性,這個也得就具體問題具體分析的性能

在這以前,咱們都是以最小化損失(經驗風險最小化)爲目標:
clipboard.png學習

但訓練損失小並非咱們的最終目標,咱們的目標是但願模型的測試損失小,也就是能準確的預測新的樣本。因此,咱們須要保證模型「簡單」的基礎上最小化訓練偏差,這樣獲得的參數才具備好的泛化性能。如今是以最小化損失和複雜度爲目標,這稱爲結構風險最小化測試

clipboard.png

如今,咱們的訓練優化算法是一個由兩項內容組成的函數:一個是損失項,用於衡量模型與數據的擬合度,另外一個是正則化項,用於衡量模型複雜度。優化

詳細理解正則化
L1範數和L0範數能夠實現稀疏,L1因具備比L0更好的優化求解特性而被普遍應用。L1會趨向於產生少許的特徵,而其餘的特徵都是0,而L2會選擇更多的特徵,這些特徵都會接近於0spa

這裏,只考慮 L2 正則化公式來量化複雜度,該公式將正則化項定義爲全部特徵權重的平方和:.net

clipboard.png

在這個公式中,接近於 0 的權重對模型複雜度幾乎沒有影響,而離羣值權重則可能會產生巨大的影響。
例如,某個線性模型具備如下權重:{w1 = 0.2, w2 = 0.5, w3 = 5, w4 = 1, w5 = 0.25, w6 = 0.75}3d

L2 正則化項爲各權重平方和: 26.915

可是 w3的平方值爲 25,幾乎貢獻了所有的複雜度。全部 5 個其餘權重的平方和對 L2 正則化項的貢獻僅爲 1.915。因此咱們讓L2範數的規則項||W||2最小,可使得W的每一個元素都很小,都接近於0。,但與L1範數不一樣,它不會讓它等於0,而是接近於0,這裏是有很大的區別的哦。而越小的參數說明模型越簡單,越簡單的模型則越不容易產生過擬合現象。爲何越小的參數說明模型越簡單?我也不懂,個人理解是:限制了參數很小,實際上就限制了多項式某些份量的影響很小(看上面線性迴歸的模型的那個擬合的圖),這樣就至關於減小參數個數。這裏也一句話總結下:經過L2範數,咱們能夠實現了對模型空間的限制,從而在必定程度上避免了過擬合。

簡化正則化:lambda

模型開發者經過如下方式來調整正則化項的總體影響:用正則化項的值乘以名爲 lambda(又稱爲正則化率)的標量。也就是說,模型開發者會執行如下運算:

clipboard.png

執行 L2 正則化對模型具備如下影響

  • 使權重值接近於 0(但並不是正好爲 0)
  • 使權重的平均值接近於 0,且呈正態(鐘形曲線或高斯曲線)分佈。

增長 lambda 值將加強正則化效果。 例如,lambda 值較高的權重直方圖可能會如圖所示。

clipboard.png

下降 lambda 的值每每會得出比較平緩的直方圖

clipboard.png

在選擇 lambda 值時,目標是在簡單化和訓練數據擬合之間達到適當的平衡:

  • 若是您的 lambda 值太高(注重考慮正則,模型偏向於優化複雜模型),則模型會很是簡單,可是您將面臨數據欠擬合的風險。您的模型將沒法從訓練數據中得到足夠的信息來作出有用的預測。
  • 若是您的 lambda 值太低(注重考慮訓練損失),則模型會比較複雜,而且您將面臨數據過擬合的風險。您的模型將因得到過多訓練數據特色方面的信息而沒法泛化到新數據。

L2 正則化可能會致使對於某些信息缺少的特徵,模型會學到適中的權重。L2 正則化下降較大權重的程度高於下降較小權重的程度。隨着權重愈來愈接近於 0.0,L2 將權重「推」向 0.0 的力度愈來愈弱。L2 正則化會使類似度高(存在噪點)兩個特徵的權重幾乎相同

邏輯迴歸:Logistic Regression

邏輯迴歸會生成一個介於 0 到 1 之間(不包括 0 和 1)的機率值,而不是確切地預測結果是 0 仍是 1。以用於檢測垃圾郵件的邏輯迴歸模型爲例。若是此模型推斷某一特定電子郵件的值爲 0.932,則意味着該電子郵件是垃圾郵件的機率爲 93.2%。更準確地說,這意味着在無限訓練樣本的極限狀況下,模型預測其值爲 0.932 的這組樣本實際上有 93.2% 是垃圾郵件,其他的 6.8% 不是垃圾郵件。

邏輯迴歸模型如何確保輸出值始終落在 0 和 1 之間。巧合的是,S 型函數生成的輸出值正好具備這些特性,其定義以下:

clipboard.png

S型函數會產生如下曲線圖:

clipboard.png

若是 z 表示使用邏輯迴歸訓練的模型的線性層的輸出,則 S 型(z) 函數會生成一個介於 0 和 1 之間的值(機率)。用數學方法表示爲:

clipboard.png

其中:

  • y' 是邏輯迴歸模型針對特定樣本的輸出。
  • z 是 b + w1x1 + w2x2 + … wNxN

    - 「w」值是該模型學習的權重和誤差。
       - 「x」值是特定樣本的特徵值。

請注意,z 也稱爲對數概率,由於 S 型函數的反函數代表,z 可定義爲標籤「1」(例如「狗叫」)的機率除以標籤「0」(例如「狗不叫」)的機率得出的值的對數:

clipboard.png

假設咱們的樣本是{x, y},y是0或者1,表示正類或者負類,x是咱們的m維的樣本特徵向量。那麼這個樣本x屬於正類,也就是y=1的「機率」能夠經過下面的邏輯函數來表示:

clipboard.png

這裏θ是模型參數,也就是迴歸係數,σ是sigmoid函數。實際上這個函數是由下面的對數概率(也就是x屬於正類的可能性和負類的可能性的比值的對數)變換獲得的:

clipboard.png

邏輯迴歸與線性迴歸的不一樣點在於:爲了將線性迴歸輸出的很大範圍的數,例如從負無窮到正無窮,壓縮到0和1之間,這樣的輸出值表達爲「可能性」才能說服廣大民衆。。另外,對於二分類來講,能夠簡單的認爲:若是樣本x屬於正類的機率大於0.5,那麼就斷定它是正類,不然就是負類。因此說,LogisticRegression 就是一個被logistic方程歸一化後的線性迴歸,僅此而已。

邏輯迴歸的損失函數

線性迴歸的損失函數是平方損失。邏輯迴歸的損失函數是對數損失函數,定義以下:

clipboard.png

其中:

  • (xy)ϵD 是包含不少有標籤樣本 (x,y) 的數據集。
  • 「y」是有標籤樣本中的標籤。因爲這是邏輯迴歸,所以「y」的每一個值必須是 0 或 1。
  • 「y'」是對於特徵集「x」的預測值(介於 0 和 1 之間)。

對數損失函數的方程式與 Shannon 信息論中的熵測量密切相關。它也是似然函數的負對數(假設「y」屬於伯努利分佈)。實際上,最大限度地下降損失函數的值會生成最大的似然估計值。

上圖中,當接近其中一個條形時,損失就會變得越大,並且變化速度很是驚人。這些漸近線的做用是很是重要的。不然,在指定的數據集上,模型會盡量更緊密地擬合數據,讓損失接近於0. 所以,大多數邏輯迴歸模型會使用如下兩個策略之一來下降模型複雜性:

  • L2 正則化。
  • 早停法,即,限制訓練步數或學習速率。

正則化在邏輯迴歸建模中極其重要。若是沒有正則化,邏輯迴歸的漸近性會不斷促使損失在高維度空間內達到 0.

假設您向每一個樣本分配一個惟一 ID,且將每一個 ID 映射到其本身的特徵。若是您未指定正則化函數,模型會變得徹底過擬合。這是由於模型會嘗試促使全部樣本的損失達到 0 但始終達不到,從而使每一個指示器特徵的權重接近正無窮或負無窮當有大量罕見的特徵組合且每一個樣本中僅一個時,包含特徵組合的高維度數據會出現這種狀況。幸運的是,使用 L2 或早停法能夠防止出現此類問題。

邏輯迴歸特色:容易擴展到龐大的數據中;預測速度快,可用於延遲時間極短的預測若是咱們須要非線性邏輯迴歸,可添加特徵交叉乘積來實現。

相關文章
相關標籤/搜索