机器学习算法推导——逻辑回归

前言

我们知道,线性回归的公式是
h θ ( x ) = θ T x h_{\theta}(x)={\theta}^Tx hθ(x)=θTx
如果想实现分类功能,就需要把输出变成一个阶跃函数,比如
y = { 0 ; z ⩽ 0 1 ; z ⩾ 0 , z = h θ ( x ) y=\left\{\begin{matrix} 0; & z\leqslant 0 \\ 1; & z \geqslant 0 \end{matrix}\right. ,z=h_{\theta}(x) y={0;1;z0z0,z=hθ(x)
但是这样就太粗糙了,而且不连续不可微。我们希望有一个理想的阶跃函数,而且是单调可微的函数。于是找到了对数几率函数(Logistic Function)。因为曲线像S,又称Sigmoid

定义

Sigmoid函数的定义是:
y = 1 1 + e − ( θ T x + b ) y=\frac {1} {1+e^{-(\theta^Tx+b)}} y=1+e(θTx+b)1

接下来就是根据给定的训练集,求出参数w。首先要找到目标函数(代价函数/损失函数)。

目标函数、代价函数、损失函数,一般而言,这三个概念是一回事。

如果深究的话,有细微的差别。参考深入理解机器学习中的:目标函数,损失函数和代价函数

损失函数:计算的是一个样本的误差

代价函数:是整个训练集上所有样本误差的平均

目标函数:代价函数 + 正则化项

首先想到的就是模仿线性回归的思路,用最小二乘当损失函数。
J ( θ ) = ∑ i 1 2 ( h θ ( x i ) −   y i ) 2 J(\theta)=\sum_{i} \frac 1 2 (h_{\theta}(x^i) - \ y^i)^2 J(θ)=i21(hθ(xi) yi)2
但是,把Sigmoid带入后,会发现这是一个非凸函数,这就意味着代价函数有着许多的局部最小值,不利于求解。

在这里插入图片描述

后来人们想到,用极大似然函数作为损失函数,这样就是一个凸函数
在这里插入图片描述

损失函数

如果将 h θ ( x ) h_{\theta}(x) hθ(x)看做是正类的后验概率,则有
h θ ( x ; θ ) = p ( y = 1 ∣ x ; θ ) = ϕ ( x ) = 1 1 + e − ( θ T x + b ) h_{\theta}(x;\theta)=p(y=1|x;\theta)=\phi(x)=\frac {1} {1+e^{-(\theta^Tx+b)}} hθ(x;θ)=p(y=1x;θ)=ϕ(x)=1+e(θTx+b)1
那么,有
p ( y = 0 ∣ x ; θ ) = 1 − ϕ ( x ) p(y=0|x;\theta) = 1-\phi(x) p(y=0x;θ)=1ϕ(x)
将上面两式写成一般形式(概率分布函数
p ( y ∣ x ; θ ) = h θ ( x ; θ ) y ( 1 − h θ ( x ; θ ) ) 1 − y p(y|x;\theta)=h_{\theta}(x;\theta)^y(1-h_{\theta}(x;\theta))^{1-y} p(yx;θ)=hθ(x;θ)y(1hθ(x;θ))1y
接下来用对数极大似然估计(加上对数是为了方便求导)根据训练集估计出参数 θ \theta θ
l ( θ ) = L o g   L ( θ ) = ∑ j = 1 M ( y j l n   h ( x j ) + ( 1 − y j ) l n   ( 1 − h ( x j ) ) ) \begin{aligned} l(\theta) &= Log\ L(\theta)\\ &=\sum_{j=1}^M(y_jln\ h(x_j)+(1-y_j)ln\ (1-h(x_j))) \end{aligned} l(θ)=Log L(θ)=j=1M(yjln h(xj)+(1yj)ln (1h(xj)))
其中M是样本个数。对其求关于 θ \theta θ的偏导。

1)首先求 h θ ( x ) h_{\theta}(x) hθ(x),即Sigmoid的偏导。
h θ ′ ( X ) = h θ ( X ) ( 1 − h θ ( X ) ) h_{\theta}^{'}(\mathbf X) = h_{\theta}(\mathbf X)(1-h_{\theta}(\mathbf X)) hθ(X)=hθ(X)(1hθ(X))
推导过程如下:

在这里插入图片描述

2)有了第一步得出的公式后,得到

在这里插入图片描述

3)利用梯度下降法求解参数。由于损失函数是凸函数,沿着梯度下降方向找到最小点。

之所以是梯度下降,因为偏导取了负值

批量梯度下降是:
R e p e a t   u n t i l   c o n v e r g e n c e { θ ( t + 1 ) : = θ t − η t ▽ θ l ( θ t , Z ) } (1-2) Repeat\ until\ convergence \{ \\ \theta^{(t+1)} := \theta^t - \eta^t\triangledown _{\theta}l(\theta^{t},Z) \\ \}\\ \tag{1-2} Repeat until convergence{θ(t+1):=θtηtθl(θt,Z)}(1-2)
随机梯度下降(SGD)
R e p e a t   u n t i l   c o n v e r g e n c e { f o r   j = 1   t o   M , { θ ( t + 1 ) : = θ t − η t ▽ θ l ( θ t , Z j ) } Repeat\ until\ convergence \{ \\ for\ j=1\ to\ M, \{ \\ \theta^{(t+1)} := \theta^t - \eta^t\triangledown _{\theta}l(\theta^{t},Z_j) \\ \} Repeat until convergence{for j=1 to M,{θ(t+1):=θtηtθl(θt,Zj)}
两者的区别是:

前者每次更新 θ \theta θ都需要遍历一次整个样本集合;而后者在遍历样本集合的时候,每个样本都能改变 θ \theta θ ,有更快的收敛速度 。由于SGD针对观测到的随机一条数据进行权重的更新,很适合进行增量计算,实现梯度下降的online模式。

small batch梯度下降

结合了上述两点的优点,每次更新参数时仅使用一部分样本,减少了参数更新的次数,可以达到更加稳定的结果,一般在深度学习中采用这种方法。

参考:

Logistic Regression——逻辑回归算法推导

逻辑回归与最大似然估计推导

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值