逻辑回归(logistic regression)属于有监督学习,判别模型,线性分类,不支持多分类,有预测函数,优化目标,求解算法。
描述:
从模型,损失函数,优化算法来描述,那就是:一种假设数据服从伯努利分布,通过极大似然作为优化目标,使用梯度下降算法进行模型参数求解的二分类模型。
应用场景:比较常用: 医生病理诊断,信用评估,垃圾邮件分类
线性回归的回顾:参考上一篇文章:线性回归算法 https://blog.csdn.net/heda3/article/details/85844681
线性回归的目的是找到一条直线去拟合数据集的分布,并通过求解线性组合的数学表达式,实现预测新的数据。输入值和输出值的范围是连续的。
定义:给定一个数据集(X,Y),尽可能的学得一个线性模型h()对新的数据xi预测出f(xi),使得h(xi)尽可能的逼近真实值yi。
1、如何基于已有的线性回归模型去实现分类任务?(构建模型)
通过映射关系将线性回归的输出值映射为只有0和1的输出结果,那么如何实现这样的映射关系?
引入广义线性模型
通过一个联系函数g实现映射。
关于映射函数的选取?
1)阶跃函数:
但是该函数不连续不能作为联系函数,对后面的求解不利。
参考:【1】https://blog.csdn.net/yinyu19950811/article/details/81321944
【2】反函数存在的条件https://blog.csdn.net/uncle_gy/article/details/78788737
2)引入对数几率函数(Sigmoid函数)
将对数几率函数代入广义线性模型可得到:
对数几率模型
从上式分析,模型存在未知的w和b参数,如何依据现有的数据集去求解?
为此构建损失函数(策略,目的是找到优化的目标函数)
2、引入损失函数
线性回归的损失函数是:平方损失(均方误差)
逻辑回归模型的损失函数是?
使用线性回归的平方损失函数不行的原因:
下面引用:文章中机器学习算法(一):逻辑回归模型(Logistic Regression, LR)https://blog.csdn.net/weixin_39910711/article/details/81607386
前面我们介绍线性回归模型时,给出了线性回归的代价函数的形式(误差平方和函数),具体形式如下:
将逻辑回归的假设函数带入上式时,我们得到的是一个非凸函数,如下图:
这样的函数拥有多个局部极小值,这就会使得我们在使用梯度下降法求解函数最小值时,所得到的结果并非总是全局最小,而有更大的可能得到的是局部最小值。
而对于逻辑回归使用的损失函数:常用的是对数损失函数
因为对数损失函数可以为LR提供一个凸的代价函数,有利于使用梯度下降对参数求解
详细可参考:https://blog.csdn.net/weixin_39910711/article/details/81607386
为了可以更加方便的进行后面的参数估计求解,把Cost表示在一行:
这与上面给出的两行表示形式是等价的。因此,代价函数最终形式为:
该函数是一个凸函数,这也达到了我们的要求。这也是LR代价函数最终形式。
这里涉及一个问题:逻辑回归和似然函数的关系?
似然函数和损失函数的关系?
参考:【3】逻辑回归的理解https://blog.csdn.net/t46414704152abc/article/details/79574003
【4】【机器学习】【逻辑回归】最大似然估计的推导和求解步骤和梯度上升算法求解https://blog.csdn.net/u012421852/article/details/79575720
更多关于似然函数的理解:写的不错的博客文章
【1】逻辑回归与最大似然估计推导https://blog.csdn.net/yinyu19950811/article/details/81321944
【2】最大似然估计(Maximum likelihood estimation)(通过例子理解)https://blog.csdn.net/u014182497/article/details/82252456
【3】似然与极大似然估计http://fangs.in/post/thinkstats/likelihood/
【4】极大似然估计的理解与应用 https://www.cnblogs.com/xing901022/p/8418894.html
【5】最大似然估计 (MLE) 最大后验概率(MAP)https://www.cnblogs.com/sylvanas2012/p/5058065.html
【6】极大似然估计思想的最简单解释https://blog.csdn.net/class_brick/article/details/79724660
【7】极大似然估计详解,写的太好了!https://blog.csdn.net/qq_39355550/article/details/81809467
【8】https://blog.csdn.net/touch_dream/article/details/79371462
3、优化算法求解
3.1使用梯度下降法求解
参考:文章https://blog.csdn.net/weixin_39910711/article/details/81607386
首先:Sigmoid函数的求导过程
故,sigmoid函数的导数
损失函数梯度求解过程:
故,参数更新公式为(沿着梯度方向更新求解):
3.2使用梯度上升法求解
沿着函数梯度的方向找到函数的最大值
迭代公式:
分为3种情况:
1)使用全部数据集的梯度上升算法
对整个数据集计算梯度
2)随机选择数据点的随机梯度上升算法
一次只用一个样本更新回归系数
3)优化后的随机梯度上升算法
alpha在每次迭代时候都会调整(同时避免参数严格下降,类似模拟退火算法)
随机选取样本来更新回归系数
算法的优缺点:
优点:
(1)适合一个得到分类概率的场景
(2)计算代价不高,容易理解和实现,训练速度快
(3)对于数据中的小噪声鲁棒性很好,并且不会受到轻微的多重共线性的特别影响?
缺点:
(1)容易欠拟合,分类精度不高
(2)数据特征缺失或者特征空间很大时表现效果不是很好?
(3)很难处理不平衡数据问题,处理非线性数据比较麻烦?
关于逻辑回归面试问题:https://www.cnblogs.com/ModifyRong/p/7739955.html
数学知识:凸函数的概念https://blog.csdn.net/u012513618/article/details/78392940