一.逻辑回归的引入:
与之前我们熟知的线性回归类似,线性回归的特点是数据中给出了数据点的特征,根据特征来计算出各个特征所对应的“权重”w,从而得到一个线性函数(linear function): g(x) = w'x+w0 (其中w是权向量,w0成为阈值权,也就是我们经常所说的偏差) ,线性回归的任务就是根据所求的这个线性函数来根据输入预测点所在的位置。那么如何根据已知点的位置来判断这个已知点在这条线的上方还是下方呢?也就是通常所说的数据点是属于上面这个数据集还是属于下面这个数据集?此时我们就需要用到分类器来解决这一类似的问题了。
那么为什么逻辑回归明明是一个分类器,还要把它称之为“回归”呢?实际上逻辑回归就是在线性回归的基础上引申出来的;虽然说逻辑回归是解决分类问题的分类器,但是实质上还是和回归一样也是一个在找特征权重的过程。(这里讲的有点拗口,大可不必在这里费时间去理解为什么和回归问题一样。)
二.逻辑回归的基础:
了解逻辑回归之前我们先需要了解一个函数,这个函数可以将数据轻松的映射成为(0,1)之间的点。我们便可以引入“sigmoid”这个函数:sigmoid(x) = 。
这个函数的特点是:sigmoid(x)' = sigmoid(x)*(1-sigmoid),也就是说他的导函数可以用它自己来代替。这也是为什么在众多满足上面需求的函数中选择sigmoid函数的一个原因所在。
逻辑回归中使用的公式为:,其中. 这样就可以将结果完美的映射称为(0,1)的数。
三.逻辑回归损失函数
我们知道,线性回归中所使用的损失函数是MSE(mean square error)也就是均方误差。那么我们在逻辑回归中是否能使用均方误差来作为损失函数呢?线性回归中使用的MSE实际上是使用欧式距离来找到合适的W,然而逻辑回归中预测值和真实值都是概率值,这种情况下还适合用均方误差来求解吗?我们接下来进行讨论。
先来引入一个新的知识点——KL距离:
KL距离,是Kullback-Leibler差异(Kullback-Leibler Divergence)的简称,也叫做相对熵(Relative Entropy)。它衡量的是相同事件空间里的两个概率分布的差异情况。公式为:
注意:KL距离不具有对称性;KL(P,Q)KL(Q,P). 下面我将进行具体的分析;
接下来我们讨论P和Q之间的关系:如下图所示 孰小孰大呢?
由公式 ,化简有,前半部分和P自身有关,可以不考虑;我们分析后半部分,想要求得必需满足最大,因此可以推断出;可以得到一个结论:时q要尽可能的匹配p的最大值。
当时,同理有,想让KL最小则必须有最大;当P减小时,logP会以非常快的速度变小,此时就需要将logP这个惩罚的权重Q变得也很小的时候才可以减小P过小带来的伤害。因此我们又会得出一个结论:时q要尽可能的匹配p的最小值。
因此我们说KL距离不具有对称性。
这个时候我们就可以使用KL距离来作为逻辑回归的损失函数了:
引入交叉熵的概念:
可以简化为:,其中
虽然公式看起来有点复杂,但是仔细观察的话不难发现,不论怎样以上式子都只会有一半起作用。我们现在已经有了损失函数,那么接下来就应该考虑梯度下降方向问题了。
根据链式求导法则我们可以很轻松的得到:
那么就有了w的更新规则:
讨论:
为什么使用交叉熵而不使用MSE作为损失函数呢?
原因其实很简单,如果使用mse作为逻辑回归的损失函数的话则优化时会有:
当w取非常大的初始化值时,会无限趋近去0或者1,这样导致mse'会非常小,w学不到东西。
如果使用mse还会面临学习出来的w极易走到局部最小值内(局部最小值点的个数和数据的维度的平方成正比关系);故而选择使用交叉熵而不使用mse作为损失函数。
使用逻辑回归的时候要注意数据的不均衡问题,这是影响模型的一个关键因素。相比于下采样方法来说,我们更倾向于使用讲已知数据进行重复的上采样方法。来解决数据不均衡带来的影响。
四.模型评价指标
将真实值和预测出来的值可以划分称为如下图1.4所示的情况:
说明:TP为预测真的,真实值也为真;FN为预测为假,真实值为真的;FP为预测为真,实际为假;TN为预测为假,实际也为假。样本总量为MP,MN。
1.正确率:
使用正确率作为模型评估准则的时候有没有什么缺点呢?
假设有100个样本,其中有95个为P,5个为N,预测结果为95个中有93个为P,2个为N,而另外一边有4个为P,一个为N,此时正确率为而为N的一边只有被预测正确了;因此使用正确率作为模型评估标准的时候极易受到两类样本不均衡所带来的影响。那么我们能否采用其他的准则呢?
2.准确率和召回率
既然正确率容易受两类样本不均衡的影响,那我们干脆直接看一边 。我们引入准确率和召回率的概念:
2.1准确率:即预测为真的当中有多少实际为真的数量。
2.2召回率:即实际为真中有多少预测为真的数量。
接下来讨论准确率和召回率受什么因素的影响;不难发现对于阈值设置的相对较高,那么对分错的概率就越小,所以FP就越小 对应的准确率就会提高;而对于召回率来说,阈值设置的相对较高,则漏判的几率就会大大提高TP也就越小,故而召回率大大降低。因此使用准确率和召回率来进行模型评估还是会依赖于阈值的选择,也就是依赖于产品形态。我们需要一个能真正衡量模型能力的值
3.ROC和AUC:
假设真实值为正有M个,负有N个;
预测为正有m个,负样本中预测为正有n个。
如图1.5所示,X表示阈值在0~之间的样本数占所有负样本数的比例;阴影部分的面积为X*Y,所代表的物理含义是预测分值中正样本比负样本大的情况数量。曲线称为ROC曲线,ROC曲线下的面积称为AUC;有AUC = 正样本比负样本大的情况数量/正负样本组合数量;反映了正样本的分数大于负样本的分数的数量。AUC可以反应模型的真正水平;模型错分的程度就是模型的实力水平。完美的分类器AUC= 1,最差的分类器AUC = 0.5。(ROC和AUC的证明太过复杂,这里就不多提及了;可以先记住结论。)
五.正则优化
直线的法向量就是w向量,一条直线可以有无数个法向量,对应着我们可以得到无数多个w值,w取反就意味着我们的分类结果取反;对应直观的解释就是w代表预测为正的概率,那么-w就代表了预测负值的概率。当w等比增加时虽然函数代表的还是那一条直线,但是所计算出来的wx值会大大提升,也就是说同一条直线因为w的等比例增加,直线不会发生改变,但计算出来的wx值会变大。带入sigmoid函数中进一步影响预测分值;分数越大越容易趋向0或者1,这显然不是我们期望得到的;我们期望模型更加“软”一些,这样我们就可以得到更多的信息。还有一点就是数据x是由真实数据和噪声组成的,理想的无噪声数据在现实中是极难存在的,此时当w特别大的时候,数据的噪声也会被放大。也会使模型得到不好的结果。这个时候我们就需要进行正则优化来解决w特别大的问题。
正则话就是防止过拟合,使模型预测和真实的差异变小,假设一种极端的状况的时候,模型的预测和真实差异最小;为了增加模型的泛化能力,通常选择牺牲模型在训练集上的正确率来提高推广能力;w在数值上越小越好,这样能抵抗数值的扰动,同时为了保证模型的正确率,又不能过小。因为w过小时模型会变的没有意义。因而人们将原来的损失函数加上一个惩罚项;
常用的惩罚项包括L1正则项和L2正则项:
对应为曼哈顿距离
对应为欧氏距离
w的更新规则就变成了或者为加上L2在对w求导;需要注意的是
如图1.7所示,L1的图像为方框,当损失函数与L1相交时取最优解,此时会有一部分的解直接为零。也就是说在这些角上会有很多权值等于0;这样就会产生稀疏矩阵,用来特征选择(把不重要的特征权值直接设置为0,不考虑不重要的特征所带来的影响。)
而L2正则项的函数图像为圆圈形,这样就会很难使权重直接为零,而是全局进行降低。一般情况下使用L1而不使用L2;原因是L2在数学上是非常完美的,但是实际情况中情况复杂,除了一些特殊需求外很少使用。
注:关于逻辑斯蒂回归还有很多大大小小的知识点,这篇文章是讲述不完了,像归一化和为什么选择KL距离等一系列问题还是放在以后有时间再写吧。也虚心向大家请教,还望对不正确的地方请大家批评指正。感谢阅读。