逻辑回归算法

分类问题及其表现形式

为什么需要逻辑回归算法

比如要对一个图片进行分类,判断图片里是否包含汽车。包含汽车的预测值为 1 。不包含汽车的预测值为 0 。这种分类问题的值是离散的,如果用 linear regresstion 来作为分类问题的预测函数是不合理的。因为预测出来的数值可能远小于 0 或远大于 1。我们需要找出一个预测函数模型,使其值的输出在 [0, 1] 之间。然后我们选择一个基准值,比如 0.5 ,如果预测值算出来大于 0.5 就认为其预测值为 1,反之则其预测值为 0.

逻辑回归算法的预测函数

我们选择 g(z)=11+ez 来作为我们的预测函数。这个函数称为 Sigmoid Function 。它的图形如下:

contacts_structure

从图中可以看出来,当 z>0 时, g(z)>0.5 。当 z 越来越大时, g(z) 接无限接近于 1。当 z<0 时, g(z)<0.5 。当 z 越来越小时, g(z) 接无限接近于 0。这正是我们想要的针对二元分类算法的预测函数。

结合我们的线性回归函数的预测函数 hθ(x)=θTx ,则我们的逻辑回归模型的预测函数如下:

hθ(x)=g(θTx)=11+eθTx

解读逻辑回归预测函数的输出值

hθ(x) 表示针对输入值 x 以及参数 θ 的前提条件下, y=1 的概率。用概率论的公式可以写成:

hθ(x)=P(y=1|x;θ)

上面的概率公式可以读成:在输入 x 及参数 θ 条件下 y=1 的概率。由概率论的知识可以推导出,

P(y=1|x;θ)+P(y=0|x;θ)=1

判定边界 Decision Boundary

从逻辑回归公式说起

逻辑回归预测函数由下面两个公式给出的:

hθ(x)=g(θTx)

g(z)=11+ez

假定 y=1 的判定条件是 hθ(x)0.5 y=0 的判定条件是 hθ(x)<0.5 ,则我们可以推导出 y=1 的判定条件就是 θTx0 y=0 的判定条件就是 θTx<0 。所以, θTx=0 即是我们的判定边界。

判定边界

假定我们有两个变量 x1,x2 ,其逻辑回归预测函数是 hθ(x)=g(θ0+θ1x1+θ2x2) 。假设我们给定参数

θ=311

那么我们可以得到判定边界 3+x1+x2=0 ,即 x1+x2=3 ,如果以 x1 为横坐标, x2 为纵坐标,这个函数画出来就是一个通过 (0, 3) 和 (3, 0) 两个点的斜线。这条线就是我们的判定边界。

contacts_structure

直线左下角为 y=0 ,直线右上解为 y=1 。横坐标为 x1 ,纵坐标为 x2

非线性判定边界

如果预测函数是多项式 hθ(x)=g(θ0+θ1x1+θ2x2+θ3x21+θ4x22) ,且给定

θ=10011

则可以得到判定边界函数

x21+x22=1

还是以 x1 为横坐标, x2 为纵坐标,则这是一个半径为 1 的圆。圆内部是 y=0 ,圆外部是 y=1

contacts_structure

这是二阶多项式的情况,更一般的多阶多项式可以表达出更复杂的判定边界。

逻辑回归的成本函数

线性回归的成本函数是 J(θ)=1mmi=112(hθ(x(i))y(i))2 ,如果我们按照线性回归的成本函数来计算逻辑回归的成本函数,那么我们最终会很可能会得到一个非凸函数 (non-convex function),这样我们就无法通过梯度下降算法算出成本函数的最低值。

为了让成本函数是个凸函数 (convex function),以便容易求出成本函数的最小值,我们定义逻辑回归的成本函数如下:

Cost(hθ(x),y)=log(hθ(x)),log(1hθ(x)),if y = 1if y = 0

成本函数的解读
如果 y=1,hθ(x)=1 ,那么成本为 Cost=0 ;如果 y=1,hθ(x)0 ,那么成本将是无穷大 Cost
如果 y=0,hθ(x)=0 ,那么成本为 Cost=0 ;如果 y=0,hθ(x)1 ,那么成本将是无穷大 Cost

逻辑回归成本函数定义

由于 y[0,1] 的离散值,可以把两个成本函数合并起来:

J(θ)=1m[i=1mlog(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]

y=0,y=1 两种情况代入上式,很容易可以验证成本函数合并的等价性。使用梯度下降算法进行参数迭代的公式如下:

θj=θjαθjJ(θ)=θjα1mi=1m(hθ(x(i))y(i))x(i)j

这个公式的形式和线性回归算法的参数迭代公式是一样的。当然,由于这里 hθ(x)=11+eθTx ,而线性回归算法里 hθ(x)=θTx 。所以,两者的形式一样,但数值计算完全不同。

算法优化

梯度下降算法的效率是比较低,优化的梯度下降算法有 Conjugate Gradient, BFGS, L-BFGS 等。这些算法比较复杂,实现这些算法是数值计算专家的工作,一般工程人员只需要大概知道这些算法是怎么优化的以及怎么使用这些算法即可。

octave 里提供了 fminunc 函数,可以查阅文档来学习函数用法,从而学会使用优化过的梯度下降算法,以提高计算效率。

多元分类算法

除了二元分类算法外,还有多元分类问题,比如需要给邮件打标签,则可能有多个标签需要考虑。这个时候需要使用 one-vs-all (one-vs-rest) 的方法。即把要分类的一种类别和其他所有类别区分开来的,这样就把多元分类问题转化为二元分类问题,这样就可以使用上文总结的所有二元分类问题的算法。

针对 y=i ,求解针对 i 的预测函数 h(i)θ(x) 。如果有 n 个类别,则需要求解 n 个预测函数。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
逻辑回归算法是一种常用的机器学习算法,用于解决二分类问题。编程实现逻辑回归算法的方法有多种,以下是其中一种基于原生Python实现逻辑回归算法的步骤: 1. 定义预测函数:逻辑回归算法的预测函数可以使用sigmoid函数来表示。sigmoid函数将线性回归的输出映射到(0, 1)之间的概率值,用来表示样本属于某一类的概率。 2. 构造损失函数:逻辑回归算法使用的损失函数是交叉熵损失函数。该损失函数可以衡量预测值和实际值之间的差异,并用于优化模型参数。 3. 采用梯度下降算法进行参数优化:梯度下降算法是一种迭代优化算法,用于最小化损失函数。通过计算损失函数关于模型参数的梯度,不断更新参数的值,使模型逐步收敛到最优解。 4. 采用向量化进行优化:为了提高计算效率,可以使用向量化操作对样本和参数进行批量处理,减少循环次数,提高计算速度。 以上是一种基于原生Python实现逻辑回归算法的一般步骤。具体的代码实现可以参考引用和提供的文章,其中包含了逻辑回归算法的原理介绍和Python代码实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [逻辑回归原理简述及代码实现](https://blog.csdn.net/weixin_41841149/article/details/94575629)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Python实现逻辑回归(Logistic Regression)](https://blog.csdn.net/m0_47256162/article/details/129776507)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值