【AndrewNg机器学习】逻辑回归(Logistic Regression)

本文深入探讨了逻辑回归在机器学习中的应用,包括模型描述、代价函数和梯度下降。介绍了逻辑回归如何处理分类问题,特别是在二分类中的判定边界,并通过Sigmoid函数确保输出值在0到1之间。此外,文章还讨论了非凸代价函数对梯度下降的影响,以及高级优化算法如共轭梯度法和BFGS在提高逻辑回归效率方面的作用。最后,提到了逻辑回归在多分类问题上的'一对多'策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 模型描述

1.1 分类问题

在分类问题中,我们要预测的变量y是离散的值,即判断其结果是否属于某一个类。在二分类问题中,我们将因变量可能属于的两个类分别称为负向类(y=0)和正向类(y=1)。当我们使用线性回归来解决分类时,我们会设定一个阈值0.5,当y>0.5时,我们认为其属于正向类,反之,属于反向类。但是如果使用线性回归,那么假设函数的输出值可能远大于1,或者远小于0,此时,我们就需要使用逻辑回归算法来使输出值永远在0 到1 之间。

1.2 假设函数

逻辑回归的假设函数为 h Θ ( x ) = g ( X θ ) h _ { \Theta } ( x ) = g \left( X \theta\right) hΘ(x)=g(Xθ)
其中g代表逻辑函数(logistic function),也称Sigmoid function,其公式为 g ( z ) = 1 1 + e − z g ( z ) = \frac { 1 } { 1 + e ^ { - z } } g(z)=1+ez1,图像如下图。


在这里插入图片描述

合起来之后我们得到逻辑回归模型: h θ ( x ) = 1 1 + e − X Θ h _ { \theta } ( x ) = \frac { 1 } { 1 + e ^ { - X \Theta } } hθ(x)=1+eXΘ1
h θ ( x ) h _ { \theta } ( x ) hθ(x)的作用是,对于给定的输入变量,根据参数计算输出结果=1(正向类)的可能性。即 h θ ( x ) = P ( y = 1 ∣ x ; θ ) h _ { \theta } ( x ) = P ( y = 1 | x ; \theta ) hθ(x)=P(y=1x;θ)

1.3 判定边界

在逻辑回归中,我们预测:当 h θ ( x ) ≥ 0.5 h _ { \theta } ( x )\geq0.5 hθ(x)0.5 时,预测 y = 1 y=1 y=1;当 h θ ( x ) &lt; 0.5 h _ { \theta } ( x )&lt;0.5 hθ(x)<0.5 时,预测 y = 0 y=0 y=0。由 g ( z ) = 1 1 + e − z g ( z ) = \frac { 1 } { 1 + e ^ { - z } } g(z)=1+ez1 z = X Θ z=X\Theta z=XΘ可以得到,当 X Θ ≥ 0 X\Theta \geq 0 XΘ0时,预测 y = 1 y=1 y=1;当 X Θ &lt; 0 X\Theta &lt; 0 XΘ<0时,预测 y = 0 y=0 y=0
假设我们有一个模型 h θ ( x ) = g ( θ 0 + θ 1 x 1 + θ 2 x 2 ) h _ { \theta } ( x ) = g \left( \theta _ { 0 } + \theta _ { 1 } x _ { 1 } + \theta _ { 2 } x _ { 2 } \right) hθ(x)=g(θ0+θ1x1+θ2x2),其中 Θ = [ − 3 , 1 , 1 ] \Theta = [-3,1,1] Θ=[3,1,1],则当 x 1 + x 2 ≥ 3 x _ { 1 } + x _ { 2 }\geq 3 x1+x23时,模型将预测y=1。将直线 x 1 + x 2 = 3 x _ { 1 } + x _ { 2 } = 3 x1+x2=3绘制在坐标轴上,就得到了了模型的分界线,将预测为1和预测为0的两个区域分开。如下图左所示


在这里插入图片描述 在这里插入图片描述

如上图右所示,若数据呈现如此分布,则我们就需要二次方特征才能构建分界线: h θ ( x ) = g ( θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 2 + θ 4 x 2 2 ) h _ { \theta } ( x ) = g \left( \theta _ { 0 } + \theta _ { 1 } x _ { 1 } + \theta _ { 2 } x _ { 2 } + \theta _ { 3 } x _ { 1 } ^ { 2 } + \theta _ { 4 } x _ { 2 } ^ { 2 } \right) hθ(x)=g(θ0+θ1x1+θ2x2+θ3x12+θ4x22),其中 Θ = [ − 1 , 0 , 0 , 1 , 1 ] \Theta = [-1,0,0,1,1] Θ=[1,0,0,1,1],则我们得到的判定边界恰好是半径为1的圆形。

2 代价函数与梯度下降

2.1 代价函数

在线性回归模型中,我们选择的代价函数是所有模型误差的平方和,如果我们对逻辑回归模型也用这样的代价函数的话,我们得到的代价函数将会是一个非凸函数(non-convex function)如下图,这就意味着代价函数有许多局部最小值,会影响梯度下降算法。

在这里插入图片描述

因此我们重新定义逻辑回归的代价函数为: J ( θ ) = 1 m ∑ i = 1 m cos ⁡ t ( h θ ( x ( i ) ) , y ( i ) ) J ( \theta ) = \frac { 1 } { m } \sum _ { i = 1 } ^ { m } \cos t \left( h _ { \theta } \left( x ^ { ( i ) } \right) , y ^ { ( i ) } \right) J(θ)=m1i=1mcost(hθ(x(i)),y(i))其中 Cost ⁡ ( h θ ( x ) , y ) = { − log ⁡ ( h θ ( x ) )  if  y = 1 − log ⁡ ( 1 − h θ ( x ) )  if  y = 0 \operatorname { Cost } \left( h _ { \theta } ( x ) , y \right) = \left\{ \begin{aligned} - \log \left( h _ { \theta } ( x ) \right) &amp; \text { if } y = 1 \\ - \log \left( 1 - h _ { \theta } ( x ) \right) &amp; \text { if } y = 0 \end{aligned} \right. Cost(hθ(x),y)={log(hθ(x))log(1hθ(x)) if y=1 if y=0则代价函数就可以表示为 J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] J ( \theta ) = - \frac { 1 } { m } \sum _ { i = 1 } ^ { m } \left[ y ^ { ( i ) } \log \left( h _ { \theta } \left( x ^ { ( i ) } \right) \right) + \left( 1 - y ^ { ( i ) } \right) \log \left( 1 - h _ { \theta } \left( x ^ { ( i ) } \right) \right) \right] J(θ)=m1i=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))] J ( Θ ) = − 1 m ∑ [ Y log ⁡ ( X Θ ) + ( 1 − Y ) log ⁡ ( 1 − X Θ ) ] J(\Theta)=- \frac { 1 } { m }\sum\left[ Y\log \left( X \Theta \right) + \left( 1 - Y \right) \log \left( 1 - X \Theta\right) \right] J(Θ)=m1[Ylog(XΘ)+(1Y)log(1XΘ)]
这样构建的 cost ⁡ ( h θ ( x ) , y ) \operatorname { cost } \left( h _ { \theta } ( x ) , y \right) cost(hθ(x),y)的特点是,当实际y=1时, h θ ( x ) h _ { \theta } ( x ) hθ(x) 越接近1误差越小;当实际y=0时, h θ ( x ) h _ { \theta } ( x ) hθ(x)越接近0误差越小。

2.2 梯度下降

我们上面所定义的代价函数是一个凸函数,没有局部最优值,仅有全局最优,我们可以使用梯度下降算法来求的能使代价函数最小的参数: θ j : = θ j − α ∂ ∂ θ j J ( θ ) \theta _ { j } : = \theta _ { j } - \alpha \frac { \partial } { \partial \theta _ { j } } J ( \theta ) θj:=θjαθjJ(θ)求导后得到: θ 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 } \left( h _ { \theta } \left( x ^ { ( i ) } \right) - y ^ { ( i ) } \right) x _ { j } ^ { ( i ) } θj:=θjαm1i=1m(hθ(x(i))y(i))xj(i)将其向量化后得: Θ : = Θ − α 1 m ( X T ( g ( X Θ ) − Y ) ) \Theta : = \Theta - \alpha \frac { 1 } { m } (X^T\left( g(X \Theta ) - Y \right)) Θ:=Θαm1(XT(g(XΘ)Y))
注意,这里的梯度下降算法虽然与线性回归的梯度下降很像,但是这里 h θ ( x ) h _ { \theta } ( x ) hθ(x)与线性回归算法不同,所以两种梯度下降是不一样的

3 高级优化

除了使用梯度下降方法外,还有一些高级优化算法和高级优化概念,这些方法可以使梯度下降进行逻辑回归的速度大大提高,也更适合解决大型机器学习问题。
比如Conjugate Gradient(共轭梯度法),BFGS(变尺度法),L-BFGS(限制变尺度法),这些方法需要重新计算 J ( θ ) J(\theta) J(θ),以及对应的导数项。这三种算法有许多优点:不用自己设定学习率,算法中有一个智能内循环,称为线性搜索算法,可以自己尝试不同学习率并选出最优的;比梯度下降法收敛的更快。
在课程中,举例了Octave中的fminunc函数,这个函数表示无约束最小化函数,我们需要给该函数定义cost及梯度,然后自动进行优化,在python中 scipy.optimize.minimize也可以做到。

4 多分类问题

逻辑回归模型可以用于二分类的问题中,那么当有多个分类时,我们也可以使用逻辑回归来实现,这个算法叫做‘一对多’(one-vs-all)。


在这里插入图片描述

如上图所示的训练集,有三个类别,我们用三角形表示y=1,正方形表示y=2,×表示y=3。接着,我们依次将三个类中的一个类标记为正向类(y=1),其余两个类标记为负向类,便得到三个分类模型。将三个模型依次记为 h θ ( 1 ) ( x ) , h θ ( 2 ) ( x ) , h θ ( 3 ) ( x ) h_\theta^{(1)}(x),h_\theta^{(2)}(x),h_\theta^{(3)}(x) hθ(1)(x)hθ(2)(x)hθ(3)(x)。最后得到的一系列模型就可以简记为 h θ ( i ) ( x ) = p ( y = i ∣ x ; θ ) i = ( 1 , 2 , 3 … k ) h_\theta^{(i)}(x) = p(y=i|x;\theta) \quad i=(1,2,3…k) hθ(i)(x)=p(y=ix;θ)i=(1,2,3k),如下图所示。


在这里插入图片描述

最后,在测试的时候,将三个模型都运行一遍, h θ ( 1 ) ( x ) , h θ ( 2 ) ( x ) , h θ ( 3 ) ( x ) h_\theta^{(1)}(x),h_\theta^{(2)}(x),h_\theta^{(3)}(x) hθ(1)(x)hθ(2)(x)hθ(3)(x)中的最大值就是该样本所对应的分类,即 max ⁡ i h θ ( i ) ( x ) \max_{i} h_\theta^{(i)}(x) maxihθ(i)(x)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值