Logistic Regression

  1. 推導(dǎo) sigmoid
  2. 推導(dǎo)LR損失函數(shù)
  3. 推導(dǎo)LR梯度下降
  4. Softmax原理
  5. softmax 損失函數(shù)
  6. softmax 梯度下降
  7. Python 實(shí)現(xiàn) LR

sigmoid 函數(shù)的由來

考慮二分類問題,即 y \in \left \{0, 1 \right \}。由于 y 是二值的隨機(jī)變量,因此我們很自然的選擇 Bernoulli 分布來對(duì)分類問題進(jìn)行建模: p(y|x; \theta) \sim Bernoulli(\phi).

\begin{align} h_θ(x) &= E[y|x; θ] \\ &=φ \\ &= 1/(1+e^{?η}) \\ &= 1/(1 + e^{?θ^{T} x}) \\ \end{align}
由此,我們便得到了 Logistic Regression 的 sigmoid 函數(shù)了。其函數(shù)圖像如下:

Logistic Regression 二分類模型定義:

\begin{align} p(y=1|x; \theta) &= h_{\theta}(x) \\ p(y=0|x; \theta) &=1 - h_{\theta}(x) \end{align}

由于 y \in \left \{0, 1 \right \},我們可以將上面的式子聯(lián)立起來:

p(y|x; \theta) = h_{\theta}(x)^{y}(1 - h_{\theta}(x))^{1-y}

即 當(dāng) y = 1 時(shí)候,p(y|x; \theta) = h_{\theta}(x); 當(dāng) y = 0 時(shí)候,p(y|x; \theta) = 1 - h_{\theta}(x)??梢钥吹?,這與原先的式子是等價(jià)的。

LR 損失函數(shù)與梯度下降

LR 模型定義:

p(y|x; \theta) = h_{\theta}(x)^{y}(1 - h_{\theta}(x))^{1-y}

模型已定,參數(shù)未知,可以使用極大似然估計(jì)來估計(jì)模型的參數(shù)。

根據(jù)極大似然估計(jì)法的步驟:

1.寫出似然函數(shù)

L(\theta) = \prod_{m}^{i=1} p(y^{(i)}|x^{(i)}; \theta) = \prod_{m}^{i=1} h_{\theta}(x^{(i)})^{y^{(i)}}(1 - h_{\theta}(x^{(i)}))^{1-y^{(i)}}

2.取對(duì)數(shù)(對(duì)數(shù)似然)

l(\theta) = log L(\theta) = \sum_{m}^{i=1} log(h_{\theta}(x^{(i)})^{y^{(i)}}(1 - h_{\theta}(x^{(i)}))^{1-y^{(i)}}) = \sum_{m}^{i=1} {y^{(i)}log(h_{\theta}(x^{(i)})}) + (1-y^{(i)})log(1 - h_{\theta}(x^{(i)}))

將上述的公式取負(fù)數(shù)就得到了邏輯回歸的損失函數(shù),也被稱為交叉熵?fù)p失函數(shù)。損失函數(shù)是衡量模型的輸出和實(shí)際的輸出結(jié)果之間的差距的一種函數(shù),即

loss(\theta) = - \sum_{m}^{i=1} {y^{(i)}log(h_{\theta}(x^{(i)})}) + (1-y^{(i)})log(1 - h_{\theta}(x^{(i)}))

l

3.求導(dǎo)

\begin{align} \frac{\partial{l(\theta)}}{\partial{\theta}} &= - \sum_{m}^{i=1} \left \{ \frac{y^{(i)}}{{h_{ \theta}(x^{(i)})}} - \frac{(1-y^{(i)})}{1 - h_{ \theta}(x^{(i)})} \right \} \cdot \frac{\partial{h_{\theta}(x^{(i)})}}{\partial{\theta_j}} \\ & \\ & = - \sum_{m}^{i=1} \left \{ \frac{y^{(i)}}{{g( \theta^{T} x^{(i)})}} - \frac{(1-y^{(i)})}{1 - g( \theta^{T} x^{(i)})} \right \} \cdot g( \theta^{T} x^{(i)})(1-g( \theta^{T} x^{(i)})) \cdot \frac{\partial{ \theta^{T}x^{(i)}}}{\partial{ \theta_{j}}} \\ & \\ & = - \sum^{m}_{i=1}({y^{(i)}(1-g( \theta^{T} x^{(i)}))} - (1-y^{(i)})g( \theta^{T} x^{(i)})) \cdot x_j^{(i)}\\ & \\ & = - \sum^{m}_{i=1} (y^{(i)} - g( \theta^{T} x^{(i)})) \cdot x_j^{(i)}\\ \end{align}

4.解似然方程

\theta_{j} = \theta_{j} - \alpha \sum^{m}_{i=1} (y^{(i)} - g( \theta^{T} x^{(i)})) \cdot x_j^{(i)}

Softmax: 從二分類到多分類

Softmax 的本質(zhì)是將一個(gè) K 維的任意實(shí)數(shù)向量壓縮(映射)成另一個(gè) K 維的實(shí)數(shù)向量,其中映射后的向量中每個(gè)元素的取值都介于 (0, 1) 之間,并且所有元素之和為 1。

用于多分類任務(wù)中,它將模型的輸出映射到 (0, 1) 區(qū)間,可以理解為概率。

a_i = \frac{e^{v_i}}{\sum^k_{j=1}{e^{v_i}}}

在實(shí)際應(yīng)用中,使用 Softmax 需要注意數(shù)值溢出問題。

label 的分布是 MultiNomial,softmax 是 MultiNomial 的 link function。

import numpy as np

def softmax(X):
    x = np.exp(X - np.max(X)) / np.sum(np.exp(x))
    return x

softmax 損失函數(shù)

\begin{align} a_i &= \frac{e^{v_i}}{\sum^k_{j=1}{e^{v_j}}} \\ \\ L &= - \sum^{m}_{i=1}{y_{i}log(a_i)} = \\ \end{align}

其中 y_i 代表我們的真實(shí)值,a_i代表 softmax 輸出的值。

需要注意的是,雖然 L 是一個(gè)求和式,但是因?yàn)?y_i 只有一個(gè)為 1(其余都為 0),所以在求導(dǎo)的時(shí)候需要

softmax 梯度下降

\begin{align} & \frac{\partial{a_i}}{\partial{v_j}} = \frac{\partial{\frac{e^{v_i}}{\sum^k_{j=1}{e^{v_j}}}} }{\partial{v_j}} \\ &\\ & 當(dāng) i \ne j \ 時(shí),\\ &\\ & \frac{\partial{\frac{e^{v_i}}{\sum^k_{j=1}{e^{v_j}}}} }{\partial{v_j}} = \frac{0 - e^{a_j}e^{a_i}}{(\sum^{k}_{j=1}e^{a_j})^2} = \frac{- e^{a_j}}{\sum^{k}_{j=1}e^{a_j}} \times \frac{e^{a_i}}{\sum^{k}_{j=1}e^{a_j})} = -a_j \cdot a_i \\ &\\ & 當(dāng) i = j \ 時(shí),\\ &\\ & \frac{\partial{\frac{e^{v_i}}{\sum^k_{j=1}{e^{v_j}}}} }{\partial{v_j}} = \frac{e^{v_i}\sum^{k}_{j=1}e^{v_j}{} - e^{a_j}e^{a_i}}{(\sum^{k}_{j=1}e^{a_j})^2} = \frac{- e^{a_j}}{\sum^{k}_{j=1}e^{a_j}} \times \frac{e^{a_i}}{\sum^{k}_{j=1}e^{a_j})} = -a_j \cdot a_i \\ &\\ \end{align}

Python 實(shí)現(xiàn) LR

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 概述 邏輯斯蒂回歸是一個(gè)分類算法,它通過將輸入值進(jìn)行線性合并,然后通過sigmoid函數(shù)將線性合并的值映射到(0,...
    BigPeter閱讀 270評(píng)論 0 0
  • 機(jī)器學(xué)習(xí)算法與Python實(shí)踐這個(gè)系列主要是參考《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》這本書。因?yàn)樽约合雽W(xué)習(xí)Python,然后也想對(duì)一些...
    MapleLeaff閱讀 3,328評(píng)論 0 5
  • 什么是邏輯回歸? Logistic回歸與多重線性回歸實(shí)際上有很多相同之處,最大的區(qū)別就在于它們的因變量不同,其他的...
    MapleLeaff閱讀 3,849評(píng)論 1 6
  • 兩個(gè)月前,兒子的班主任趙老師給我打電話,說他最近上課聽講不太專心,有時(shí)還會(huì)打瞌睡。“現(xiàn)在正是‘小升初’的關(guān)鍵時(shí)刻,...
    晴空月閱讀 529評(píng)論 2 0
  • 今天我們學(xué)了會(huì)跳舞的小鐵片,老師首先給我們布置今天四項(xiàng)任務(wù),第一項(xiàng)任務(wù)了解什么是電磁鐵,電磁鐵的條件是要...
    帥在閱讀 294評(píng)論 0 0

友情鏈接更多精彩內(nèi)容