邏輯迴歸掌握要點(全)

基於自己理解與ng老師的課程總結出來的LR
http://mooc.study.163.com/learn/2001281002?tid=2001392029#/learn/content?type=detail&id=2001702014&cid=2001693016

邏輯迴歸原理

  我們知道,線性迴歸模型是y^=θx

  但是線性迴歸無法用於分類,爲了解決這個問題

  邏輯迴歸利用sigmoid函數對y^ 進行了改造

  PS: sigmoid函數是σ(z)=11+ez

  也就是說將線性迴歸輸出的y^ 對應到了sigmoid函數中的z 將原本的連續輸出變成了分類

  z趨向於正無窮時,sigmoid趨向於1

  z趨向於負無窮時,sigmoid趨向於0

  sigmoid函數輸出大於0.5,即輸入xθ 大於0 則y = 1

  sigmoid函數輸出小於0.5,即輸入xθ 小於0 則y = 0

  並且越靠近臨界點,分類的準確性會越低

  邏輯迴歸使用對數似然損失函數

邏輯迴歸的目標函數

y^=θx+b ,a=σ(y^)

  目標函數爲:L(a,y)=(ylog(a)+(1y)log(1a))

  a是預測值,y是真實標籤的label

邏輯迴歸的迭代過程

  首先對L(a,y) 進行求a的偏導dL(a,y)da=ya+1y1a

  PS: sigmoid函數有一個很好的導數性質便於我們使用
σ(y^)=σ(y^)(1σ(y^))

  sigmoid函數σ 進行對z的求導dσdy^=σ(y^)(1σ(y^))

  因爲a=σ(y^) 所以dσdy^=dady^=a(1a)

dL(a,y)dz=dL(a,y)dadady^=(ya+1y1a)dady^=ay

  再求dzdw1=x1 dzdw2=x2

  最後通過鏈式法則得到dL(a,y)dw1=x1dL(a,y)dy^
  w1: = w1 - αdL(a,y)dw1
α 爲學習率
這裏寫圖片描述

邏輯迴歸的損失函數的解釋

  首先我們從邏輯迴歸模型的最大似然估計的角度出發,假設訓練集都是獨立同分布的條件下,將邏輯迴歸的結果用概率的方式表示出來

  if y = 1: p(y|x)=y^
  if y = 0: p(y|x)=1y^

  然後將着兩條式子拼起來 p(y|x)=y^y(1y^)(1y)

  樣本聯合概率 P()=i=1mp(yi|xi)=i=1my^y(1y^)(1y)

  做最大似然估計找到一組參數使得樣本聯合概率達到最大(最符合訓練數據)

  在式子左右均取對數,因爲樣本聯合概率最大化等價於取對數之後最大化

logP()

=i=1mlogp(yi|xi)=i=1m(ylogy^+(1y)log(1y^))

  我們目的是爲了讓這個logP(所有樣本)最大化,但是損失函數是要讓其最小化。

  所以在前加負值就是LR的損失函數
L(y^,y)=i=1m(ylogy^+(1y)log(1y^))

爲何使用邏輯對數損失函數?

  答:假如採用平方和損失函數是非凸函數,無法使用梯度下降法去求得全局最低點

  所以邏輯迴歸採用這個特殊的邏輯對數損失函數,是凸函數,可利用梯度下降法取得全局最低點

邏輯迴歸的成本函數

  成本函數:J(w,b)=1mi=1m(ylogy^+(1y)log(1y^))

1m 是爲了計算方便,人爲進行的縮放

損失函數的優化方法

  迭代尺度法, 梯度下降法,牛頓法或者擬牛頓法.牛頓法或者擬牛頓法一般收斂速度更快

LR爲什麼用sigmoid函數??爲什麼

因爲LR是伯努利分佈,遵循廣義線性分佈,所以預測的輸出的期望就是伯努利分佈本身發生的概率,也就正好推出來sigmoid函數的形式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章