逻辑回归(Logistic regression)

本文深入探讨了逻辑回归这一分类算法,对比线性回归在分类任务上的不足,详细解释了逻辑回归的假设函数、决策边界、代价函数及梯度下降等核心概念,并介绍了如何使用高级优化算法提升模型性能。

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

分类

二分类:

假设0为“负类”(Negative class),1为“正类”(Positive class)
在这里插入图片描述
假设有一个数据集,需要预测肿瘤是良性(y = 0)和恶性(y = 1)。
使用线性回归(linear regression)来解决这个问题:
在这里插入图片描述
由上图可以看出模拟的效果并不好,所以不建议将线性回归用于分类问题。

逻辑回归(logic regression)实际上是一种分类算法(如下)。
在这里插入图片描述

假设陈述

hθ(x) = g(z) = 1 / (1 + e -z)

z = θTx

Sigmoid function = Logistic function
在这里插入图片描述
假设模型已训练好,则输出值为 y = 1 的概率,根据实际选择阈值提高预测的准确度。
在这里插入图片描述

决策界限

假设输出值hθ(x) >= 0.5 , y = 1; hθ(x) < 0.5 , y = 0 。

由下图看出 y = 1 时,z >= 0 (θTx >= 0); y = 0 时,z < 0(θTx < 0) 。
在这里插入图片描述
在这里插入图片描述
通过增加复杂的多项式可以得到更复杂的决策边界。

如下图可以得到一个圆形的决策边界。
在这里插入图片描述

代价函数

假设函数:
在这里插入图片描述
下图代价函数,是非凸函数(因为sigmoid函数是一种复杂的函数导致代价函数成为非凸函数),如果使用梯度下降,几乎不能收敛到最全局最小值,所以我们需要寻找其他的是凸函数的代价函数,这样才可以使用之前学过的算法。
在这里插入图片描述
使用下面的代价函数可以找到全局最小值。
在这里插入图片描述
在这里插入图片描述
因为y要么是1,要么是0。

当假设h(θ)=1时,如果y是1,那么cost=0;如果y=0,那么cost=+∞。
当假设h(θ)=0时,如果y时1,那么cost=+∞;如果y=0,那么cost=0。
即假设越符合实际,惩罚力度小,反之惩罚力度大。

简化代价函数与梯度下降

简化代价函数:

J(θ) = - 1 / m [ ∑ y(i)log( hθ(x(i)) ) + ( 1 - y(i)log( 1 - hθ(x(i)) ) ) ]
在这里插入图片描述
在这里插入图片描述
最小化 J(θ) 即可得到 某组 θ 。

由最大似然估计,得出来的式子。

该代价函数它是凸的(convex),所以使用梯度下降可以获得全局最优解。

梯度下降:

由于 hθ(x)改变,所以 Logistic回归与线性回归不同。

但线性回归的特征缩放(提高梯度下降的速度)在逻辑回归中依然可以使用。
在这里插入图片描述
在这里插入图片描述

高级优化

使用高级优化算法和一些高级优化方法会使我们逻辑回归算法的速度更快,能更好的解决大型的机器学习问题。

梯度下降算法:
在这里插入图片描述
其他的更高级的算法:
共轭梯度法(Conjugate gradient);
BFGS算法;
L-BFGS算法。

这些算法优点是不需要我们手动的选择α;速度快于梯度下降法。缺点是复杂。
所以我们只需要会使用它们,而不需要深究其中的原理。
在这里插入图片描述

在Octave中使用这些算法的例子:

首先我们需要自己实现一个代价函数:例如 costFunction(theta) ,它的作用是返回两个自变量,第一个 jVal 是代价函数 J(θ) 的值,第二个 gradient 是一个向量为代价函数的各项偏导值。

然后调用高级优化函数 fminunc(无约束最小化函数) 调用方式:
1.你要设置几个 options(一个你想要存储的数据结构);( ‘GradObj’ , ‘on’ )设置梯度目标参数为打开,表明你要为这个算法提供一个梯度;( ’MaxIter‘ )设置最大;( ’ 100 ‘)迭代次数。
2. initialTheta 给出 θ 的初始值。
3. 调用 fminunc ,@表示指向定义的 costFunction 函数的指针;返回值 optTheta 求解出的 θ 向量,functionVal 为 代价函数值,exitFlag 为算法是否收敛。

在这里插入图片描述
在这里插入图片描述
初始化的θ维度要大于等于2。

当我们使用fminunc函数的时候,Octave会自动的帮我们挑选出合适的高级算法去计算,我们不需要深究其中的细节,只需要会用即可。在一些大型的逻辑回归问题中,我们需要使用这些数值算法帮助我们优化运行速度。

多元分类:一对多

多类别分类问题:
在这里插入图片描述
有多个类别:
在这里插入图片描述
一对多算法(one-vs-all):
就是使用多个分类器,对于每一个类假设其为正类,然后使用一次二分类的判别算法即可分别得出各个类的分类。

预测是将 x 带入每一个分类器,选择其中输出值最大的分类器。
加粗样式
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值