什麼是邏輯迴歸?
邏輯迴歸算法應用非常廣泛,他是用來解決“分類”問題,可能同學要問,迴歸問題不是返回的是數值嗎?怎麼變成分類了?這是因爲邏輯迴歸比較特殊,他雖然返回的是數值,但是這個數值是各個類別出現的概率,概率最大的類別,我們就將它作爲類別的輸出結果。
所以,邏輯迴歸就是根據事物的特徵值,最後能夠輸出判別這個事物屬於什麼類別的一種方法。
如何更加特徵值獲得分類結果?
首先看下面2個公式:
= σ( * )
σ(t) =
- :每個特徵對應的權值,這就是我們訓練模型需要找到的目標值
- :需要輸入的特徵
- σ(t) :這個就是大名鼎鼎的sigmod激活函數,下面對他詳細介紹:
sigmod函數
- 公式σ(t) =
- 當t趨近於正無窮時候,值域趨近於1
- 當t趨近於負無窮時候,值域趨近於0
- 當t > 0 時: > 0.5
- 當t < 0 時: < 0.5
結論
通過上面的公式我們知道了,我們要獲得分類結果,就必須找出正確的 ,因爲找到θ了,我們就能根據輸入特徵,通過公式獲得每個類別輸出的概率
如何找出 ?
步驟
- 我們初始化一個隨機的θ
- 我們將初始化的θ和真實的分類結果相減,就能得到一個誤差,我們稱這個誤差爲“損失函數”
- 所以,只要這個損失函數足夠的小,我們的初始化的θ就無窮的接近真實的θ
- 所以,我們的目標變成了減小“損失函數”
減小損失函數Loss
分析損失函數的構成
- 當樣本值y = 1時: 越小,損失越大
- 當樣本值y =0時: 越大,損失越大
通過上面的分析,我們可以將損失定義爲:
L = - y log() - ( 1 - y ) log(1 - )
- 因爲,屬於(0,1)之間,如果偏離真實點越遠,損失提高的速度越快,懲罰提高的速度也就越快
所以樣本的損失函數爲:
L(θ) = - log() + ( 1 - ) log(1 - )
帶入第1,2個公式得:
L(θ) = - log(σ( ) ) + ( 1 - ) log(1 - σ( ) )
梯度下降法
思想
梯度下降法的思想就是,先隨機初始化一個值x,我們希望慢慢移動這個值,將它移動到f(x)值最小的地方去,但怎樣移動能夠移動到最小的地方呢?答案就是,按照導數的方向去移動,每次移動一小步,慢慢就能移動到最小的地方去。但是有可能出現移動到局部最小值,而無法出來,這是之後需要解決的問題。下面我們來對上面的損失函數求導。
梯度公式
梯度公式就是將上面的L(θ)求導對應的公式,由於求導過程不難,但是太繁瑣,這裏地方也沒辦法將列出來,我就直接給出求導公式了:
ΔL(θ) = * (σ( - y) )
總結
- 我們要求到邏輯迴歸的權值,就需要明白他的激活函數特性
- 根據激活函數的特徵,我們求得損失函數
- 我們通過梯度下降法獲得最小損失函數,從而求得邏輯迴歸的權值
- 但是,細心的朋友會發現,我們推導的時候,只是針對線性可分的情況,如果要適應非線性可分的情況,只需要加入多項式即可
- 另外,當激活函數變化時,推導的梯度下降的公式也會變化