机器学习:使用梯度下降实现逻辑回归求解多元分类问题的原理

线性回归拟合出的连续函数能对连续的值做出预测,但对于分类问题,若把每个种类分别编号 0 , 1 , 2 , ⋯ 0,1,2,\cdots 0,1,2,,则输出为离散的,对于这种问题,我们采用逻辑回归构建模型。

让我们先考虑二元问题。

逻辑函数

逻辑函数(Logistc Function/Sigmoid Function)定义为
g ( x ) = 1 1 + e − x g(x)=\frac{1}{1+e^{-x}} g(x)=1+ex1
其图像如下:
在这里插入图片描述
对于逻辑函数,当 x → − ∞ x\rightarrow -\infin x时, g ( x ) → 0 g(x)\rightarrow0 g(x)0;当 x → + ∞ x\rightarrow +\infin x+时, g ( x ) → 1 g(x)\rightarrow1 g(x)1,这样的性质就可以拿来作为分类函数。

逻辑回归的假设函数

对于线性回归,假设函数 h θ ( x ⃗ ) = θ ⃗ T x ⃗ h_\theta(\vec{x})=\vec{\theta}^T\vec{x} hθ(x )=θ Tx ,而在逻辑回归中,就是在此基础之上运用逻辑函数,令
h θ ( x ⃗ ) = g ( θ ⃗ T x ⃗ ) = 1 1 + e − θ ⃗ T x ⃗ h_\theta(\vec{x})=g(\vec{\theta}^T\vec{x})=\frac{1}{1+e^{-\vec{\theta}^T\vec{x}}} hθ(x )=g(θ Tx )=1+eθ Tx 1

同时,我们认为假设函数的值即为预测对象被分类为 1 1 1的概率,即
Pr ⁡ ( y = 1 ∣ x ⃗ , θ ⃗ ) = h θ ( x ⃗ ) \Pr(y=1|\vec{x},\vec{\theta})=h_\theta(\vec{x}) Pr(y=1x ,θ )=hθ(x )
所以,当 h θ ( x ⃗ ) ≥ 0.5 h_\theta(\vec{x})\ge0.5 hθ(x )0.5,即 θ ⃗ T x ⃗ ≥ 0 \vec{\theta}^T\vec{x}\ge0 θ Tx 0时,我们认为 x ⃗ \vec{x} x 应该被分到1类。在多维空间中, θ ⃗ T x ⃗ = 0 \vec{\theta}^T\vec{x}=0 θ Tx =0将整个空间划分为1类和0类两个部分,我们称之为决策边界(Decision Boundary)。

代价函数

如果接着用线性回归使用的平方代价函数,整个代价曲线就不再是凸的了,求解很容易陷入局部最优解。因此,考虑使用新的代价函数
J ( θ ⃗ ) = 1 m ∑ i = 1 m Cost ( h θ ( x ⃗ ) , y ) J(\vec{\theta})=\frac{1}{m}\sum_{i=1}^m\text{Cost}(h_\theta(\vec{x}),y) J(θ )=m1i=1mCost(hθ(x ),y)
其中
Cost ( h θ ( x ⃗ ) , y ) = { − log ⁡ ( h θ ( x ⃗ ) ) y = 1 − log ⁡ ( 1 − h θ ( x ⃗ ) ) y = 0 \text{Cost}(h_\theta(\vec{x}),y)=\left\{\begin{aligned} -\log(h_\theta(\vec{x}))&&y=1\\ -\log(1-h_\theta(\vec{x}))&&y=0 \end{aligned}\right. Cost(hθ(x ),y)={log(hθ(x ))log(1hθ(x ))y=1y=0
上面的 Cost \text{Cost} Cost函数具有很好的性质,使得当 y = 1 y=1 y=1时,若 h θ ( x ⃗ ) = 1 h_\theta(\vec{x})=1 hθ(x )=1 Cost = 0 \text{Cost}=0 Cost=0;若 h θ ( x ⃗ ) = 0 h_\theta(\vec{x})=0 hθ(x )=0 Cost → ∞ \text{Cost}\rightarrow\infin Cost且满足单调。当 y = 0 y=0 y=0时也具有类似的性质。

同时,为了使这个分段函数能放到一个表达式里,我们一般将 Cost \text{Cost} Cost写为
Cost ( h θ ( x ⃗ ) , y ) = − y log ⁡ ( h θ ( x ⃗ ) ) − ( 1 − y ) log ⁡ ( 1 − h θ ( x ⃗ ) ) \text{Cost}(h_\theta(\vec{x}),y)=-y\log(h_\theta(\vec{x}))-(1-y)\log(1-h_\theta(\vec{x})) Cost(hθ(x ),y)=ylog(hθ(x ))(1y)log(1hθ(x ))
所以最终 J ( θ ) J(\theta) J(θ)可以写为
J ( θ ) = − 1 m ∑ i = 1 m [ y log ⁡ ( h θ ( x ⃗ ) ) + ( 1 − y ) log ⁡ ( 1 − h θ ( x ⃗ ) ) ] J(\theta)=-\frac{1}{m}\sum_{i=1}^m\left[y\log(h_\theta(\vec{x}))+(1-y)\log(1-h_\theta(\vec{x}))\right] J(θ)=m1i=1m[ylog(hθ(x ))+(1y)log(1hθ(x ))]

梯度下降

对代价函数求导,代入梯度下降公式,发现其形式竟然和线性回归的梯度下降是一样的:
θ j : = θ j − α ∑ i = 1 m ( h θ ( x ( i ) ⃗ ) − y ( i ) ) x j ( i ) \theta_j:=\theta_j-\alpha\sum_{i=1}^m(h_\theta(\vec{x^{(i)}})-y^{(i)})x_j^{(i)} θj:=θjαi=1m(hθ(x(i) )y(i))xj(i)
不过需要注意,虽然该形式与线性回归一致,但两种回归的假设函数 h θ h_\theta hθ是不同的。

向量化以后就可以得到一种比较快捷的梯度下降实现,令
X = [ x 0 ( 1 ) x 1 ( 1 ) ⋯ x n ( 1 ) x 0 ( 2 ) x 1 ( 2 ) ⋯ x n ( 2 ) ⋮ ⋮ ⋱ ⋮ x 0 ( m ) x 1 ( m ) ⋯ x n ( m ) ] , Θ = [ θ 0 θ 1 ⋮ θ n ] , Y = [ y 1 y 2 ⋮ y m ] X= \left[\begin{matrix} x_0^{(1)}&x_1^{(1)}&\cdots&x_n^{(1)}\\ x_0^{(2)}&x_1^{(2)}&\cdots&x_n^{(2)}\\ \vdots & \vdots & \ddots &\vdots\\ x_0^{(m)}&x_1^{(m)}&\cdots&x_n^{(m)}\\ \end{matrix}\right] ,\Theta=\left[\begin{matrix} \theta_0\\ \theta_1\\ \vdots \\ \theta_n\\ \end{matrix}\right], Y=\left[\begin{matrix} y_1\\ y_2\\ \vdots \\ y_m\\ \end{matrix}\right] X=x0(1)x0(2)x0(m)x1(1)x1(2)x1(m)xn(1)xn(2)xn(m),Θ=θ0θ1θn,Y=y1y2ym
则在每次迭代有
Θ : = Θ − α m X T ( g ( X Θ ) − Y ) \Theta:=\Theta-\frac{\alpha}{m}X^T(g(X\Theta)-Y) Θ:=ΘmαXT(g(XΘ)Y)

多元分类问题

对于多元分类问题,我们可以将一个多元分类问题拆解成多个二元分类问题。比如对于 y = 1 , 2 , 3 y=1,2,3 y=1,2,3这样的三元分类问题,其实可以看做三个二元分类问题,分别是区分1和其他、区分2和其他、区分3和其他。

具体来讲,对于第 i i i类的分类问题,我们训练一个假设函数 h θ ( i ) ( x ⃗ ) h_\theta^{(i)}(\vec{x}) hθ(i)(x ),该函数的值就是 x ⃗ \vec{x} x 属于第 i i i类的概率,即
h θ ( i ) ( x ⃗ ) = Pr ⁡ ( y = i ∣ x ⃗ , θ ⃗ ) h_\theta^{(i)}(\vec{x})=\Pr(y=i|\vec{x},\vec{\theta}) hθ(i)(x )=Pr(y=ix ,θ )
当我们对每一个种类都做一次逻辑回归后,就可以得到 k k k个假设函数,那么函数值最大的那个类别就是我们认为 x ⃗ \vec{x} x 应该属于的类别。这种方法称之为一对多(One-vs-all)方法。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值