上一篇博客,分析了生成模型 + 贝叶斯概率公式对分类问题进行求解的过程,实际上就是在寻找参数w和b的过程,这次介绍的逻辑回归算法直接对参数w和b进行求解,不考虑数据的生成模型。首先,对于逻辑回归,我们的定义是:
逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。
这里面其实包含了5个点,1:逻辑回归的假设 2:逻辑回归的损失函数 3:逻辑回归的求解方法 4:逻辑回归的目的 5:逻辑回归如何分类。 首先给出逻辑回归的计算公式,然后针对上诉五点内容逐一介绍。
逻辑回归的公式:,其中
,是sigmoid函数。可以看出,逻辑回归的输出值为(0,1)之间。
任何模型都有自己的假设,只有在这个假设下模型才是适用的,比如假设输入和输出之间具有线性关系,满足这样的假设,线性回归模型才是适用的。逻辑回归需要满足的基本假设是:数据服从伯努利分布(即数据的标签为0或者1);那么逻辑回归的输出可以理解为预测该样本属于标签1的概率。
逻辑回归的定义中提到,“通过极大化似然函数的方法”,所以逻辑回归的损失函数是和似然函数相关的。
似然函数
在数理统计学中,似然函数是一种关于统计模型中的参数的函数,表示模型参数中的似然性。“似然性”和“概率”有明确的区分:概率,用于在已知一些参数的情况下,预测接下来在观测上所得到某个结果的可能性;似然性,则是用于在已知某些观测结果时,对有关事物性质的参数进行估值。
举个简单的例子:比如我们投掷一枚经过特殊设计的徽章,徽章正面朝上的可能性为0.8,反面朝上的可能性为0.2。
那么在这样的设定下(参数已知,正面朝上和反面朝上的可能性就是参数),我们预测下一次扔徽章是正面朝上还是反面朝上,我们预测的是概率;
但是如果我们不知道每次徽章正面朝上和反面朝上的可能性,我们只有10次的观测结果(8次正面朝上,2次反面朝上),我们想要对徽章正面朝上和反面朝上的可能性(参数)进行一个估值,一组参数设定下导致该观测结果出现的概率称为是似然性,我们希望我们估值的参数具有的似然性越大越好,表示在该参数设定下,对于实际情况的拟合比较好。
仍然是上述例子,假设我们估计徽章正面朝上的概率是a,反面朝上的概率是1-a。
似然函数 L(a|10次中8次正面,2次反面)= P(10次中8次正面,2次反面|a)= a^8 * (1-a)^2
假设小明估计a = 0.5,那么其得到的似然性为 0.5^8 * 0.5^2 = 0.0009765625
小红估计a = 0.8,那么其得到的似然性为 0.8^8 * 0.2^2 = 0.0067108864
小红得到的似然性更大,也说明小红估计的参数对于现实情况的拟合更为准确。
回到之前的逻辑回归问题中,对于一批符合伯努利分布的数据,其似然函数为:
对应到逻辑回归模型,模型输出表示预测为1的概率;相应地,逻辑回归的似然函数可以写为:
,最大化似然函数,就是求解一组参数w和b,使得在这组参数下,最有可能出现观测结果,即在训练集上面拟合效果最好。
对逻辑回归的似然函数取对数,可以得到:,最大化似然函数,实际上就是最小化
,通常我们会再对
求一个平均,即在前面乘上
。所以逻辑回归中,最终的损失函数为:
。
所以,结论是:逻辑回归中的损失函数是对似然函数求对数,然后求均值,然后取反。
1、为什么逻辑回归中,要使用基于最大似然函数的损失函数?不能和线性回归中一样,使用均方误差吗?(后面解释)
由于该极大似然函数无法直接求解,一般通过对该函数进行梯度下降来不断逼近最优解。在这个地方其实会有个加分的项,考察你对其他优化方法的了解。因为就梯度下降本身来看的话就有随机梯度下降,批梯度下降,small batch 梯度下降三种方式,面试官可能会问这三种方式的优劣以及如何选择最合适的梯度下降方式。
其实这里还有一个隐藏的更加深的加分项,就是考察了不了解诸如Adam,动量法等优化方法。因为上述方法其实还有两个致命的问题。
逻辑回归的目的就是将符合伯努利分布的数据进行二分类,提高准确性。
逻辑回归作为一个回归范式(也就是输出值是连续的,只不过范围限制在(0,1)),如何应用到分类上?输出值确实是一个连续的变量。逻辑回归的做法是划定一个阈值,输出值值大于这个阈值的是一类,小于这个阈值的是另外一类。阈值具体如何调整根据实际情况选择。一般会选择0.5做为阈值来划分。
1、为什么逻辑回归中,要使用基于最大似然函数的损失函数?不能和线性回归中一样,使用均方误差吗?(后面解释)
在逻辑回归中,我们考虑某个参数的更新过程:
由最终参数的更新公式,可以看出,如果标签
和模型预测输出
差别较大,比如一个为0一个为1,那么会对参数有一个比较大的更新;如果两者差别小,比如均为1或者均为0,那么就不会对参数进行更新,这是比较合理的。
但是,如果我们在损失函数部分,使用和线性函数一样的均方误差作为损失函数,那么参数的更新过程如下:
可以看出,如果这样做的话,无论是接近目标还是远离目标,参数的更新都很小,这是不合理的。
反映到损失函数的图上:
所以,在逻辑回归中,我们使用的损失函数是基于最大似然函数得到的。
交叉熵刻画的是实际输出(模型预测)与期望输出(真实标签)之间的概率分布的距离,也就是交叉熵的值越小,两个概率分布就越接近,即拟合的更好。
p分布(真实数据分布)是已知,则熵
是常量;于是交叉熵和KL散度则是等价的。
需要注意的是:在分类问题中,交叉熵的本质就是对数似然函数的最大化。
举例如下:
数据样本的标签1表示为one-hot编码形式为(0,1)。
此时交叉熵 H(p,q) = -(0 * log(1-y1) + 1 * logy1) = -logy1.
和上面推导得到的极大化对数似然函数的形式是一致的。
数据样本的标签3表示为one-hot编码形式为(0,0,0,1)。
此时交叉熵 H(p,q) = -(0 * logy0+ 0 * logy1 + 0 * logy2 + 1 * logy3) = -logy3.
同样和上面推导得到的极大化对数似然函数的形式是一致的。
面试的时候,别人也经常会问到,在使用逻辑回归的时候有哪些感受,觉得它有哪些优缺点。
在这里总结了逻辑回归应用到工业界当中一些优点:
但是逻辑回归本身也有许多的缺点:
1、逻辑回归的常见面试点总结:https://www.cnblogs.com/ModifyRong/p/7739955.html
2、逻辑回归中的损失函数理解:https://www.jianshu.com/p/b6bb6c035d8c
3、最大似然损失和交叉熵损失函数的联系:https://blog.csdn.net/diligent_321/article/details/53115369
4、李宏毅机器学习课程