【机器学习笔记】:从零开始学会逻辑回归(一)

简介: 【机器学习笔记】:从零开始学会逻辑回归(一)

前言


逻辑回归是一个非常经典,也是很常用的模型。之前和大家分享过它的重要性:5个原因告诉你:为什么在成为数据科学家之前,“逻辑回归”是第一个需要学习的


关于逻辑回归,可以用一句话来总结:逻辑回归假设数据服从伯努利分布,通过极大似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。


本篇我们就开始逻辑回归的介绍。


sigmoid函数

首先我们了解一个函数:sigmoid,逻辑回归就是基于这个函数构建的模型。sigmod函数公式如下:

微信图片_20220218143219.jpg


使用Python的numpy,matplotlib对该函数进行可视化,如下:


微信图片_20220218143203.jpg

图中我们可以直观地看到这个函数的一些特点:


  • 中间范围内函数斜率最大,对应Y的大部分数值变化
  • Y轴数值范围在 0~1 之间
  • X轴数值范围没有限制,但当X大于一定数值后,Y无限趋近于1,而小于一定数值后,Y无限趋近于0
  • 特别地,当 X=0 时,Y=0.5

广义线性模型

前几篇我们详细地介绍了线性回归模型:


其中在残差分析的过程中,如果残差方差不是齐性的,我们一般会对变量取自然对数进行变换,以达到残差方差齐性的效果。比如我们这样取对数:

微信图片_20220218143248.jpgimage.gif

我们一般称这种为“对数线性回归”,其形式上是线性回归,但实际上是在求输入空间到输出空间的非线性函数映射。这里的对数函数就起到了将线性回归模型预测值与真实值联系起来的作用。


我们称这样变换后的模型为“广义线性模型”,其中对数函数为“联系函数”,当然也可以是其他函数。广义线性模型是个宏观概念,上面通过对数函数变换得到的模型只是广义线性模型的其中一种而已。


逻辑回归模型构建


了解了上面的基本内容,我们来看一下逻辑回归模型是如何建立的。其实,逻辑回归模型也是广义线性模型的其中一种,只是形式上和上面取对数有些不同。它正是通过开始提到的sigmoid函数变换得到的模型。


那么为什么要用sigmoid函数呢?


对于一般的线性回归模型,我们知道:我们的自变量X和因变量Y都是连续的数值,通过X的输入就可以很好的预测Y值。


但现实生活中,我们也有离散的数据类型,比如好和坏,男和女等等。那么我们在想:在线性回归模型的基础上,是否可以实现一个预测因变量是离散数据类型的模型呢?


答案当然是可以的。我们可能会想到阶跃函数:

微信图片_20220218143302.jpg

但是它在这里是不合适的,正如我们神经网络激活函数不选择阶跃函数一样,因为它不连续不可微。而能满足分类效果,且是连续的函数,sigmoid是再好不过的选择了(返回文章开头看一下sigmoid函数的特点就知道了)。因此,逻辑回归模型就可以通过在线性回归模型的基础上,套一个sigmoid函数来实现,这样不管X取什么样的值,Y值都被非线性地映射在 0~1 之间,实现二分类。这也证明一个结论:逻辑回归不是回归模型,而是分类模型。


我们这里讨论的都是二元分类,因此,一个二元逻辑回归模型就建立出来了,其的公式如下:

微信图片_20220218143321.jpgimage.gif

我们简单地把原来的X替换为一个线性模型就得到了上面公式。代替部分可以扩展如下:

微信图片_20220218143329.jpg

image.gif

除了上面的表现形式,我们也可以用另外一种形式来表达二元逻辑回归模型。将上面模型简单地进行变化:微信图片_20220218143332.jpg

image.gif

公式中,y可以理解为样本x为正例的概率,而1-y则可以理解为样本x为负例时的概率。二者的比值y/(1-y)被称为“odds”,即“几率”,反映了x作为正例的相对可能性,对几率取对数就得到了线性回归模型了。


上式其实是在用线性回归模型的预测结果去逼近真实标记的对数几率。所以该模型也被称作“对数几率回归”


二元逻辑回归是如何进行分类的?


通过上面的介绍,我们知道了二元逻辑回归的模型。但我们发现它的Y是在 0~1 之间连续的数值,也即这个范围内的任意小数(百分比)。那么这些小数是如何进行分类的呢?


可以将模型的输出h(x)当作某一分类的概率的大小。这样来看,小数值越接近1,说明是1分类的概率越大,相反,小数值越接近0,说明是0分类的概率越大。


而实际使用中,我们会对所有输出结果进行排序,然后结合业务来决定出一个阈值。假如阈值是0.5,那么我们就可以将大于0.5的输出都视为1分类,而小于0.5的输出都视为0分类。所以,二元逻辑回归是一种概率类模型,是通过排序并和阈值比较进行分类的。


这个阈值的选择关系到评估标准的结果,其实我们之前也提到过。ROC曲线就是通过遍历所有阈值来实现的,曲线上每一个点对应一对FPR和TPR,而FPR和TPR平衡的点即为F分数【机器学习笔记】:一文让你彻底记住什么是ROC/AUC(看不懂你来找我)


逻辑回归的假设


正如线性回归模型一样,逻辑回归也有假设条件,主要是两个:


(1)假设数据服从伯努利分布

(2)假设模型的输出值是样本为正例的概率


基于这两个假设,我们可以分别得出类别为1和0的后验概率估计

微信图片_20220218143423.jpg

逻辑回归的损失函数


有了模型,我们自然会想到要求策略,也就是损失函数。对于逻辑回归,我们很自然想到:用线性回归的损失函数“离差平方和”的形式是否可以?


但事实上,这种形式并不适合,因为所得函数并非凸函数,而是有很多局部的最小值,这样不利于求解。


前面说到逻辑回归其实是概率类模型,因此,我们通过极大似然估计(MLE)推导逻辑回归损失函数。下面是具体推导过程。


上面我们通过基本假设得到了1和0两类的后验概率,现在将两个概率合并可得:

微信图片_20220218143437.jpg

现在我们得到了模型概率的一般形式,接下来就可以使用极大似然估计来根据给定的训练集估计出参数,将n个训练样本的概率相乘得到:

微信图片_20220218143440.jpgimage.gif

似然函数是相乘的模型,我们可以通过取对数将等式右侧变为相加模型,然后将指数提前,以便于求解。变换后如下:

微信图片_20220218143508.jpgimage.gif

如此就推导出了参数的最大似然估计。我们的目的是将所得似然函数极大化,而损失函数是最小化,因此,我们需要在上式前加一个负号便可得到最终的损失函数。


微信图片_20220218143511.jpg

微信图片_20220218143546.jpg

其等价于:

微信图片_20220218143550.jpg

注:逻辑回归的损失函数“对数似然函数”,在模型GBDT分类情况下也会用到,又叫作“交叉熵”

逻辑回归损失函数求解


现在我们推导出了逻辑回归的损失函数,而需要求解是模型的参数theta,即线性模型自变量的权重系数。对于线性回归模型而言,可以使用最小二乘法,但对于逻辑回归而言使用传统最小二乘法求解是不合适的。

微信图片_20220218143617.jpg

逻辑回归的最小二乘法的代价函数


对于不适合的解释原因有很多,但本质上不能使用经典最小二乘法的原因在于:logistic回归模型的参数估计问题不能“方便地”定义“误差”或者“残差”。

因此,考虑使用迭代类算法优化,常见的就是”梯度下降法“。当然,还有其它方法比如,坐标轴下降法,牛顿法等。我们本篇介绍使用”梯度下降法“来对损失函数求解。


使用梯度下降法求解逻辑回归损失函数。梯度下降的迭代公式如下:

微信图片_20220218143634.jpg

问题变为如何求损失函数对参数theta的梯度。下面进行详细推导过程:

微信图片_20220218143636.jpg

推导过程中需要用到的数学知识是:偏导,对数求导,sigmoid函数求导。其中,函数求导公式如下:

微信图片_20220218143658.jpg

最后将求得的梯度带入迭代公式中,即为:

微信图片_20220218143702.jpg

注意:公式中,i 代表样本数,j 代表特征数。


其实,常用梯度下降有三个种方法,可以根据需要选择,分别是:批量梯度下降(BGD),随机梯度下降(SGD),small batch梯度下降。具体不进行介绍。


逻辑回归的优缺点


优点:


1. 直接对分类可能性进行建模,无需实现假设数据分布,这样就避免了假设分布不准确所带来的问题。

2. 形式简单,模型的可解释性非常好,特征的权重可以看到不同的特征对最后结果的影响。

3. 除了类别,还能得到近似概率预测,这对许多需利用概率辅助决策的任务很有用。


缺点:


1. 准确率不是很高,因为形势非常的简单,很难去拟合数据的真实分布。

2. 本身无法筛选特征。


以上就是关于逻辑回归模型的一些分享,还有其它正则化,多元逻辑回归等问题,我们将在后续进行介绍。另外,后续也将准备逻辑回归sklearn的使用和实战练习。


如果有任何问题,欢迎指正和补充,

另外欢迎点赞和转发支持!


参考:

机器学习,周志华

https://blog.csdn.net/yinyu19950811/article/details/81321944

https://www.cnblogs.com/pinard/p/6029432.html


相关文章
|
1月前
|
机器学习/深度学习 计算机视觉 Python
模型预测笔记(三):通过交叉验证网格搜索机器学习的最优参数
本文介绍了网格搜索(Grid Search)在机器学习中用于优化模型超参数的方法,包括定义超参数范围、创建参数网格、选择评估指标、构建模型和交叉验证策略、执行网格搜索、选择最佳超参数组合,并使用这些参数重新训练模型。文中还讨论了GridSearchCV的参数和不同机器学习问题适用的评分指标。最后提供了使用决策树分类器进行网格搜索的Python代码示例。
70 1
|
1月前
|
机器学习/深度学习 算法 知识图谱
【机器学习】逻辑回归原理(极大似然估计,逻辑函数Sigmod函数模型详解!!!)
【机器学习】逻辑回归原理(极大似然估计,逻辑函数Sigmod函数模型详解!!!)
|
1月前
|
机器学习/深度学习 存储 自然语言处理
【机器学习】基于逻辑回归的分类预测
【机器学习】基于逻辑回归的分类预测
|
1月前
|
机器学习/深度学习 算法
【机器学习】逻辑回归介绍(逻辑回归应用场景,原理,损失及优化详解!!!)
【机器学习】逻辑回归介绍(逻辑回归应用场景,原理,损失及优化详解!!!)
|
3月前
|
机器学习/深度学习 人工智能 算法
【人工智能】机器学习、分类问题和逻辑回归的基本概念、步骤、特点以及多分类问题的处理方法
机器学习是人工智能的一个核心分支,它专注于开发算法,使计算机系统能够自动地从数据中学习并改进其性能,而无需进行明确的编程。这些算法能够识别数据中的模式,并利用这些模式来做出预测或决策。机器学习的主要应用领域包括自然语言处理、计算机视觉、推荐系统、金融预测、医疗诊断等。
68 1
|
3月前
|
机器学习/深度学习 算法
【机器学习】SVM面试题:简单介绍一下SVM?支持向量机SVM、逻辑回归LR、决策树DT的直观对比和理论对比,该如何选择?SVM为什么采用间隔最大化?为什么要将求解SVM的原始问题转换为其对偶问题?
支持向量机(SVM)的介绍,包括其基本概念、与逻辑回归(LR)和决策树(DT)的直观和理论对比,如何选择这些算法,SVM为何采用间隔最大化,求解SVM时为何转换为对偶问题,核函数的引入原因,以及SVM对缺失数据的敏感性。
75 3
|
3月前
|
机器学习/深度学习 算法
【机器学习】支持向量机SVM、逻辑回归LR、决策树DT的直观对比和理论对比,该如何选择(面试回答)?
文章对支持向量机(SVM)、逻辑回归(LR)和决策树(DT)进行了直观和理论上的对比,并提供了在选择这些算法时的考虑因素,包括模型复杂度、损失函数、数据量需求、对缺失值的敏感度等。
63 1
|
3月前
|
机器学习/深度学习
【机器学习】逻辑回归LR的推导及特性是什么,面试回答?
逻辑回归(LR)的推导和特性的详细解释,包括其作为二分类模型的基本原理、损失函数(对数损失函数),以及决策树的特性,如不需要先验假设、高效性、易解释性、对缺失值的不敏感性,以及对冗余属性的鲁棒性。
43 1
|
4月前
|
机器学习/深度学习 数据采集 人工智能
|
5月前
|
机器学习/深度学习 算法 BI
机器学习笔记(一) 感知机算法 之 原理篇
机器学习笔记(一) 感知机算法 之 原理篇
下一篇
无影云桌面