逻辑回归(Logistic Regression)


前言


一、模型描述

前面的预测值都是连续的,若预测值是离散的,则被称为分类问题,但是同样还是属于督促学习

在分类问题中,尝试预测的是结果是否属于某一个类,比如:判断一封电子邮件是否是垃圾邮件;判断一次金融交易是否是欺诈;区别一个肿瘤是恶性的还是良性的

从简单的二元分类讨论,将因变量(dependent variable)可能属于的两个类分别称为负向类( negative class)和正向类( positive class),则因变量 y属于(0,1) ,其中 0 表示负向类, 1 表示正向类

注:y只能取0和1这两个值,在两个类别中,正负类是任务约定的

eg:
在肿瘤预测问题中,可以用线性函数来做分类
在这里插入图片描述
在这里插入图片描述
对于线性回归,可以设置分类器阈值为0.5。如果假设函数输出的值大于0.5,可以预测为y = 1;如果小于0.5,可以预测y=0

对于初始的前八个数据点来说,分类效果比较好,但是如果加入上图中右上角的第九个数据点,线性回归对分类问题的拟合不是很好

二、逻辑回归算法

对于分类, 𝑦 取值为 0 或者 1,如果你使用的是线性回归,那么假设函数的输出值可能远大于 1,或者远小于 0,即使所有训练样本的标签 𝑦 都等于 0 或 1

尽管知道标签应该取值 0 或者 1,但是如果算法得到的值远大于 1 或者远小于 0 的话,可能该算法失效

所以接下来的要研究的算法就叫做逻辑回归算法,这个算法的性质是:它的输出值永远在 0 到 1 之间

1.假设函数

对于前面的分类问题,引入一个新的模型,逻辑回归,该模型的输出变量范围始终在 0 和 1 之间,逻辑回归模型的假设是: ℎ𝜃(𝑥) = 𝑔(𝜃𝑇𝑋) 其中: 𝑋 代表特征向量, 𝑔 代表逻辑函数( logistic function)是一个常用的逻辑函数为 S 形函数( Sigmoid function), 公式为
在这里插入图片描述
函数图像如下:
在这里插入图片描述
源码:

import numpy as np
def sigmoid(z):
	return 1 / (1 + np.exp(-z))

ℎ𝜃(𝑥)的作用:对于给定的输入变量,根据选择的参数计算输出变量=1 的可能性( estimated probablity)即ℎ𝜃(𝑥) = 𝑃(𝑦 = 1|𝑥; 𝜃)

在这里插入图片描述

如果对于给定的𝑥,通过已经确定的参数计算得出ℎ𝜃(𝑥) = 0.7,则表示有 70%的几率𝑦为正向类,相应地𝑦为负向类的几率为 1-0.7=0.3

2.决策边界

在这里插入图片描述
如图,在逻辑回归中,预测:

当ℎ𝜃(𝑥) >= 0.5时,预测 𝑦 = 1
当ℎ𝜃(𝑥) < 0.5时,预测 𝑦 = 0

根据上面绘制出的 S 形函数图像:

𝑧 = 0 时 𝑔(𝑧) = 0.5
𝑧 > 0 时 𝑔(𝑧) > 0.5
𝑧 < 0 时 𝑔(𝑧) < 0.5

又 𝑧 = 𝜃𝑇𝑥 ,即:

𝜃𝑇𝑥 >= 0 时,预测 𝑦 = 1
𝜃𝑇𝑥 < 0 时,预测 𝑦 = 0

eg:如下图,假设有一模型
在这里插入图片描述
参数𝜃 是向量[-3 1 1],则当−3 + 𝑥1 + 𝑥2 ≥ 0,即𝑥1 + 𝑥2 ≥ 3时,模型将预测 𝑦 =1,绘制直线𝑥1 + 𝑥2 = 3,这条线便是模型的分界线,将预测为 1 的区域和预测为 0 的区域分隔开,也被称为决策边界,这里只不过是线性的

决策边界是假设函数的属性,由参数θ决定,它不是数据集的属性。θ一旦决定,决策边界也就被决定

eg: 如图,另一假设模型(非线性决策边界)
在这里插入图片描述
对于一个图形来说,需要用曲线才能分隔 𝑦 = 0 的区域和 𝑦 = 1 的区域,需要二次方特征:ℎ𝜃(𝑥) = 𝑔(𝜃0 + 𝜃1𝑥1 + 𝜃2𝑥2 + 𝜃3𝑥12 + 𝜃4𝑥22), 其中𝜃=[-1 0 0 1 1],则得到的判定边界恰好是圆点在原点且半径为 1 的圆形

对于第二个图形或者更复杂的图形可以用非常复杂的模型来适应非常复杂形状的判定边界

3.代价函数

对于线性回归模型,定义的代价函数是所有模型误差的平方和。理论上来说,也可以对逻辑回归模型沿用这个定义
在这里插入图片描述

但是问题在于,当将ℎ𝜃(𝑥)代入到代价函数中时,得到的代价函数是一个非凸函数( non-convexfunction),如下图

在这里插入图片描述
可以看成代价函数有许多局部最小值,这将影响梯度下降算法寻找全局最小值

所以不得不重新定义代价函数
在这里插入图片描述
𝐶𝑜𝑠𝑡(ℎ𝜃(𝑥), 𝑦)函数的特点是:
(1)当实际的 𝑦 = 1 且ℎ𝜃(𝑥)也为 1 时误差为 0,当 𝑦 = 1 但ℎ𝜃(𝑥)不为 1 时误差随着ℎ𝜃(𝑥)变小而变大
(2)当实际的 𝑦 = 0 且ℎ𝜃(𝑥)也为 0 时代价为 0,当𝑦 = 0 但ℎ𝜃(𝑥)不为 0 时误差随着 ℎ𝜃(𝑥)的变大而变大

简化𝐶𝑜𝑠𝑡(ℎ𝜃(𝑥), 𝑦) :

𝐶𝑜𝑠𝑡(ℎ𝜃(𝑥), 𝑦) = −𝑦 × 𝑙𝑜𝑔(ℎ𝜃(𝑥)) − (1 − 𝑦) × 𝑙𝑜𝑔(1 − ℎ𝜃(𝑥))

带入代价函数:
在这里插入图片描述
代价函数构建完成,可以用梯度下降算法来求得能使代价函数最小的参数
在这里插入图片描述
虽然使用的梯度下降算法表面上看上去与线性回归的梯度下降算法一样,但是这里的ℎ𝜃(𝑥) = 𝑔(𝜃𝑇𝑋)与线性回归中不同。另外,在运行梯度下降算法之前,进行特征缩放依旧是非常必要的

源码:

import numpy as np
def cost(theta, X, y):
	theta = np.matrix(theta)
	X = np.matrix(X)
	y = np.matrix(y)
	first = np.multiply(-y, np.log(sigmoid(X* theta.T)))
	second = np.multiply((1 - y), np.log(1 - sigmoid(X* theta.T)))
	return np.sum(first - second) / (len(X))

4.梯度下降

前面我们知道逻辑回归的代价函数:
在这里插入图片描述
试图找尽量让𝐽(𝜃) 取得最小值的参数𝜃
在这里插入图片描述
要最小化关于𝜃的函数值,通常用的梯度下降法的模板
在这里插入图片描述
要反复更新每个参数,用这个式子来更新,就是用它自己减去学习率 𝛼 乘以后面的微分项,即
在这里插入图片描述
如果有 𝑛 个特征,参数向量𝜃包括𝜃0 𝜃1 𝜃2 一直到𝜃𝑛,必须用上式来同时更新所有𝜃的值,推荐使用向量化的实现,可以把所有这些 n 个参数同时更新

线性回归和逻辑回归的梯度下降
在这里插入图片描述
更新参数的规则看起来基本相同,但由于假设的定义发生了变化,所以逻辑函数的梯度下降,跟线性回归的梯度下降实际上是两个完全不同的东西适用于线性回归中的特征放缩同样适用于逻辑回归,如果特征范围差距很大的话,那么应用特征缩放的方法,可以让逻辑回归中梯度下降收敛更快

5.优化算法

除了梯度下降以外,还有其他一些优化算法更高级、更复杂,如共轭梯度法(conjugate gradient),BFGS和L-BFGS

优点:
不需要手动选择学习率α,在给出计算导数项和代价函数的方法之后,这些算法有一个“只能内循环”,称为线搜索算法(line search algorithm),它可以自动尝试不同的学习速率α并自动选择一个好的学习率α。它甚至可以为每次迭代选择不同的学习速率,收敛速度比梯度下降快

但是比梯度下降复杂

三、 多类别分类

前面都是通过逻辑回归解决二元分类,也可以使用逻辑回归 (logistic regression)来解决多类别分类问题,具体来说,通过一个叫做"一对多" (one-vs-all) 的分类算法

eg:
假如说现在需要一个学习算法能自动地将邮件归类到不同的文件夹里,
或者说可以自动地加上标签,也许需要一些不同的文件夹,或者不同的标签来完成这件事,来区分开来自工作的邮件、来自朋友的邮件、来自家人的邮件或者是有关兴趣爱好的邮件,那么就有了这样一个分类问题:其类别有四个,分别用𝑦 = 1、 𝑦 = 2、 𝑦 = 3、𝑦 = 4 来代表

二元分类和多分类模型
在这里插入图片描述
用 3 种不同的符号来代表 3 个类别,如何得到一个学习算法来进行分类呢

二元分类可以使用逻辑回归,可以将数据集一分为二为正类和负类,用一对多的分类思想,可以将其用在多类分类问题上
在这里插入图片描述
基本思想:有一个训练集,上图表示的有 3 个类别,用三角形表示 𝑦 = 1,方框表示𝑦 = 2,红叉表示 𝑦 = 3。要做的就是使用该训练集,将其分成 3 个二元分类问题

(1)先从用三角形代表的类别 1 开始,创建一个新的"伪"训练集,包含类型 2和类型 3定为负类,类型1设定为正类,如下图,拟合出一个合适的分类器
在这里插入图片描述
三角形是正样本,而圆形代表负样本,设置三角形的值为 1,圆形的值为 0,下面来训练一个标准的逻辑回归分类器,这样就得到一个正边界

具体实现:为了能实现这样的转变,将多个类中的一个类标记为正向类( 𝑦 = 1),然后将其他所有类都标记为负向类,模型记作ℎ𝜃(1)(𝑥)。类似地选择另一个类标记为正向类( 𝑦 = 2),再将其它类都标记为负向类,将这个模型记作 ℎ𝜃(2)(𝑥),依此类推…

模型简记:
ℎ𝜃(𝑖)(𝑥) = 𝑝(𝑦 = 𝑖|𝑥; 𝜃) , 其中: 𝑖 = (1,2,3. . . . 𝑘)

在这里插入图片描述
在需要做预测时,将所有的分类机都运行一遍, 然后对每一个输入变量,选择最高可能性的输出变量即可

ℎ𝜃(𝑖)(𝑥),其中 𝑖 对应每一个可能的 𝑦 = 𝑖,最后,为了做出预测,给出输入一个新的 𝑥 值,用这个做预测。要做的就是在三个分类器里面输入 𝑥,然后选择一个让 ℎ𝜃(𝑖)(𝑥)最大的𝑖

总之,选择出哪一个分类器是可信度最高效果最好的,那么就可认为得到一个正确的分类,无论𝑖值是多少,都有最高的概率值,预测𝑦就是那个值


总结

提示:这里对文章进行总结:

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Logistic回归是一种逻辑回归方法。它是一种特殊的回归方法,用于对于分类问题中的因变量建立预测模型。这种方法基于学习一个由输入变量到二元输出变量的条件概率来构建预测模型,用于对一个新的样本进行分类。它对于分类问题中的因变量建立预测模型非常有效。 ### 回答2: 逻辑回归是一种用于解决二分类问题的监督学习算法。它是一种基于概率统计的分类模型,可以用于预测分类结果。逻辑回归的输出结果是一个0到1之间的概率值,其含义是该样本属于某一类别的概率。 逻辑回归模型的基本假设是数据服从伯努利分布,也就是数据只有两种可能的取值,被称为正类和负类。对于给定的训练数据集,逻辑回归模型的目标是最大化似然函数,即最大化样本属于正类(或负类)的概率。利用最大似然估计方法,我们可以求解出逻辑回归模型的参数。在实际应用中,我们通常使用梯度下降等优化算法来求解模型参数。 逻辑回归模型有多种变体,如L1正则化逻辑回归、L2正则化逻辑回归、多项式逻辑回归等。其中,L1正则化逻辑回归可以实现特征选择,可以削减一些不重要的特征,从而简化模型,提高计算速度和模型的泛化能力。 在机器学习领域,逻辑回归是一个常用的模型。它广泛应用于各种领域,如网络广告点击率预测、信用风险评估、医疗诊断等。逻辑回归模型简单易实现,具有较高的解释性,是一个较为理想的分类算法。 ### 回答3: 逻辑回归Logistic Regression)是一种经典的分类算法,在机器学习和统计学领域中得到广泛的应用。它旨在从已有的数据中构建一个能够预测类别的模型,输出结果为概率值,可以用于二分类或多分类问题的解决。 逻辑回归的基本原理是利用一个特定的函数对输入特征进行线性组合,然后将结果输入到一个Sigmoid函数中进行映射,将结果值压缩到0到1的范围内,表示输入属于某一类别的概率。这个Sigmoid函数可以被看作是一个阀门,控制着数据流向最终输出。它将具有很强预测能力的线性组合函数输出转化为概率输出的过程,将出现在中间层的结果值映射到[0,1]范围内,以表达某个样本属于某个类别的概率。 在训练模型时,逻辑回归使用的是最大似然估计的方法来确定模型的参数。在分类训练数据时,需要对样本经过一系列的处理,例如特征提取、特征转换、数据归一化等步骤。训练数据可以通过梯度下降法、牛顿迭代法等优化方法来确定最佳参数。通过此训练过程,模型可以学习到输入特征与输出概率之间的映射关系。 逻辑回归的优点包括了功能简单、速度快、易于实现和修改等等。它是机器学习中最为基本的分类算法之一,在数据挖掘、信用评估、自然语言处理、广告推荐等领域都有广泛的应用。逻辑回归作为一个二分类算法,常被用于解决分类问题。然而,在实际业务中,如何选择不同的逻辑回归模型及参数,对算法的效果和优化有着重要的影响。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Super.Bear

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

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

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

打赏作者

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

抵扣说明:

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

余额充值