【机器学习模型详细推导2】- 逻辑回归

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/KevinBetterQ/article/details/83472878

1. 模型引入

线性模型可以进行回归学习(参见【机器学习模型1】- 线性回归),但如何用于分类任务?需要找一个单调可微函数将分类任务的真实标记y与线性回归模型的预测值联系起来。
对于二分类任务,输出标记 y y 取值 { 0 , 1 } \{0, 1\} ,而线性回归预测值 z = w T x + b z = w^Tx+b 属于实数集 R R ,所以需要一个变换使实值 z z 映射到 0 / 1 0/1 值。
引入 S i g m o i d Sigmoid 函数: y = 1 1 + e z y=\frac{1}{1+e^{-z}} ,可以将 z z 值转为一个接近0或1的 y y 值,而且单调可微。图像如下:
Sigmoid函数图像

2. 模型描述

根据广义线性模型 y = g 1 ( θ T x ) y=g^{-1}(\theta^T x) 定义,将Sigmoid函数作为 g 1 ( ) g^{-1}() 代入:
h θ ( x ) = 1 1 + e θ T x h_\theta(x) = \frac{1}{1+e^{-\theta^T x}}

对数几率函数:逻辑回归也称为对数几率函数。

  • h θ ( x ) h_\theta(x) 反映了作为正例的可能性 ,则 1 h θ ( x ) 1-h_\theta(x) 反映了作为负例的可能性
  • 所以 h θ ( x ) 1 h θ ( x ) \frac{h_\theta(x)}{1-h_\theta(x)} 反映了作为正例的相对可能性, h θ ( x ) 1 h θ ( x ) > 1 \frac{h_\theta(x)}{1-h_\theta(x)} > 1 ,则为正例,称为 “几率”
  • l n h θ ( x ) 1 h θ ( x ) ln\frac{h_\theta(x)}{1-h_\theta(x)} “对数几率”

所以,逻辑回归实际上是用线性回归模型的预测来逼近真实的对数几率。

3. 模型求解策略(代价函数)

1) 代价函数公式:
J ( θ ) = 1 m i = 1 m [ y ( i ) l n h θ ( x ( i ) ) + ( 1 y ( i ) ) l n ( 1 h θ ( x ( i ) ) ) ] J(\theta) = -\frac{1}{m}\sum_{i=1}^{m}[ y^{(i)}lnh_\theta(x^{(i)})+(1-y^{(i)})ln(1-h_\theta(x^{(i)})) ]
2)推导过程:
极大似然法 :根据给定数据集,最大化对数似然函数:
L ( θ ) = i = 1 m l n P ( y ( i ) x ; θ ) L(\theta) = \sum_{i=1}^{m}lnP(y^{(i)}|x;\theta) 由于 y 只能取 0 / 1,所以
P ( y = 0 x ; θ ) = h θ ( x ) = 1 1 + e θ T x P ( y = 1 x ; θ ) = 1 h θ ( x ) = e θ T x 1 + e θ T x = 1 e θ T x + 1 P(y=0|x;\theta) = h_\theta(x)=\frac{1}{1+e^{-\theta^T x}}\\ P(y=1|x;\theta) = 1-h_\theta(x)=\frac{e^{-\theta^T x}}{1+e^{-\theta^T x}} = \frac{1}{e^{\theta^T x}+1} \\ 所以:
P ( y x ; θ ) = ( h θ ( x ) ) y ( 1 h θ ( x ) ) ( 1 y ) P(y|x;\theta) = (h_\theta(x))^y(1-h_\theta(x))^{(1-y)} 可以求得:
L ( θ ) = i = 1 m [ y ( i ) l n h θ ( x ( i ) ) + ( 1 y ( i ) ) l n ( 1 h θ ( x ( i ) ) ) ] L(\theta) =\sum_{i=1}^{m}[ y^{(i)}lnh_\theta(x^{(i)})+(1-y^{(i)})ln(1-h_\theta(x^{(i)})) ] 为了使用梯度下降法求解,将 L ( θ ) L(\theta) 取负,定义损失函数:
J ( θ ) = 1 m L ( θ ) = 1 m i = 1 m [ y ( i ) l n h θ ( x ( i ) ) + ( 1 y ( i ) ) l n ( 1 h θ ( x ( i ) ) ) ] J(\theta) = -\frac{1}{m}L(\theta) = -\frac{1}{m}\sum_{i=1}^{m}[ y^{(i)}lnh_\theta(x^{(i)})+(1-y^{(i)})ln(1-h_\theta(x^{(i)})) ]

为什么除以m?在使用样本不同数量的多个批次来更新 θ \theta 时,除以样本数量 m 来抵消不同批次样本数量不同带来的影响。

4. 模型求解算法 - 梯度下降

1)参数更新方程:
θ j = θ j α 1 m i = 1 m [ h θ ( x ( i ) ) y ( i ) ] x j ( i ) \theta_j = \theta_j - \alpha\frac{1}{m}\sum_{i=1}^{m}[h_\theta(x^{(i)})-y^{(i)}]x_j^{(i)}

2)推导过程:

  • 设定:初始值 θ \theta 、学习步长 α \alpha
  • 不断更新 θ \theta
    θ j = θ j α θ j J ( θ ) \theta_j = \theta_j -\alpha\frac{\partial }{\partial \theta_j} J(\theta) 其中,梯度计算如下:
    梯度计算
    (Ref:参考吴恩达Cousera机器学习课程 6.4节)
  • 直到 Δ θ = θ j J ( θ ) < ε 梯度\Delta\theta = \frac{\partial }{\partial \theta_j} J(\theta) < 阈值\varepsilon ,得到最优 θ \theta

3)向量化表示
θ = θ α m X T ( 1 1 + e X θ y ) \theta = \theta - \frac{\alpha}{m}X^T(\frac{1}{1+e^{-X\theta}}-y)

X,y表示如下:
X = [ X 1 ( 1 ) X 2 ( 1 ) . . . X n ( 1 ) X 1 ( 2 ) X 2 ( 2 ) . . . X n ( 2 ) . . . . . . . . . . . . X 1 ( m ) X 2 ( m ) . . . X n ( m ) ] θ = [ θ 1 θ 2 . . . θ n ] y = [ y 1 y 2 . . . y m ] X=\begin{bmatrix} X^{(1)}_1& X^{(1)}_2& ...& X^{(1)}_n& \\ X^{(2)}_1& X^{(2)}_2& ...& X^{(2)}_n& \\ ...& ...& ...& ...& \\ X^{(m)}_1& X^{(m)}_2& ...& X^{(m)}_n& \\ \end{bmatrix}, \theta=\begin{bmatrix} \theta_1& \\ \theta_2& \\ ...& \\ \theta_n& \\ \end{bmatrix}, y=\begin{bmatrix} y_1& \\ y_2& \\ ...& \\ y_m& \\ \end{bmatrix},

猜你喜欢

转载自blog.csdn.net/KevinBetterQ/article/details/83472878