逻辑回归常见面试总结
一、基本知识
简要介绍:逻辑回归假设数据服从伯努利分布,通过极大似然函数的估计方法,运用梯度下降的方法来求解参数,来达到将数据二分类的目的。
1、逻辑回归的假设
逻辑回归的第一个基本假设是假设数据服从伯努利分布。伯努利分布有一个简单的例子抛硬币,抛中为正面的概率是p,抛中为负面的概率是1-p。在逻辑回归这个模型里面是假设为样本为正的概率,为样本为负的概率。整个模型可以描述为
Snipaste_2019-10-23_17-01-50.png逻辑回归的第二个假设是假设样本为正的概率是
Snipaste_2019-10-23_17-02-10.png所以逻辑回归的最终形式
Snipaste_2019-10-23_17-02-17.png2、逻辑回归的损失函数
逻辑回归的损失函数是它的极大似然函数
Snipaste_2019-10-23_17-17-03.png3、逻辑回归的求解方法
由于极大似然函数无法直接求解,因此需要通过对该函数进行梯度下降来不断逼近最优解。
这里的考点有批梯度下降、随机梯度下降、小批量梯度下降以及其他优化方式。
1.批梯度下降,这种方式可以获得全局最优解,缺点是更新每个参数的时候需要遍历所有的数据,计算量太大,存在冗余数据,当数据量特别大的时候,每个参数的更新会很慢。
2.随机梯度下降,这种方式每遍历一个样本更新一次参数,更新具有高方差。优点在于容易获得更好的局部最优解,但是收敛比较慢。
3.小批量梯度下降,这种方法结合了批梯度下降和随机梯度下降的优点,每遍历一小批数据更新一次参数,减少了参数更新的次数,加快了收敛
上述三种方法还存在很多不足:
首先,是如何对模型选择合适的学习率。学习率保持不变不是一种好的选择。因为刚开始的时候,参数离最优解隔的比较远,需要保持一个较大的学习率尽快逼近最优解。但是,学习到后面的时候,参数和最优解隔得比较近,继续保持之前的学习率容易越过最优点。
其次,是如何对参数选择合适的学习率。在实践中,对每个参数保持同样的学习率是不合理的。有些参数更新频繁,那么学习率可以适当小一点。有些参数更新缓慢,那么学习率就应该大一点。
4、逻辑回归的目的
将数据二分类,提高准确率。
5、逻辑回归如何进行分类
逻辑回归作为回归模型,若要运用到分类上去可以划定一个阈值,大于这个阈值的归为一类,小于这个阈值的归为一类。例如CTR预估任务。一般阈值取0.5,具体可根据任务进行适当的改进。
二、进一步提问
1、逻辑回归的损失函数为何使用极大似然函数
极大似然估计:利用已有的样本信息,反推最有可能导致这些样本结果出现的模型参数值。
损失函数一般有四种:平方损失函数、对数损失函数、HingeLoss0-1损失函数、绝对值损失函数。将极大似然函数取对数后等同于对数损失函数。在逻辑回归这个模型下,对数损失函数的训练求解参数比较快,原因可参考其梯度更新公式:
Snipaste_2019-10-23_17-17-20.png在这个式子种参数的更新只和x_{j}i,yi有关。和sigmoid本身无关。更新的速度是可以自始至终都比较的稳定。
若选用平方损失函数,梯度更新的速度和sigmoid本身的梯度相关性很强。sigmoid的梯度在它的定义域内的梯度都不大于0.25。这样训练会非常的慢。
从凸函数的角度来看:
一般和平方损失函数(最小二乘法)拿来比较,因为线性回归用的就是平方损失函数,原因就是平方损失函数加上sigmoid的函数将会是一个非凸的函数,不易求解,会得到局部解,用对数似然函数得到高阶连续可导凸函数,可以得到最优解。
2、逻辑回归在训练的过程当中,如果有很多的特征高度相关或者说有一个特征重复了100遍,会造成怎样的影响:
结论:就算有很多特征高度相关也不会影响分类器的效果。
对于特征本身来说,假设只有一个特征,在不考虑采样的情况下,将它重复100遍。训练完以后,数据还是这么多,但是这个特征本身重复了一百遍,实质上将原来的特征分成了100份,每个特征都是原来特征权值的百分之一。
3、为什么要在训练过程中去掉高度相关的特征
结论:去掉高度相关的特征会让模型的可解释性更好
可以大大提高模型的训练速度。如果模型中有很多高度相关的特征,那么就算函数本身收敛了,但实际上参数是没有收敛的,这样会拉低训练速度。其次是特征多了,本身就会增大训练的时间。
三、逻辑回归的优缺点
优点:
1.形式简单,模型的可解释性好。根据特征的权值可以看到不同特征对最后结果的影响,某个特征的权重值比较高,那么这个特征最后对结果的影响会比较大。
2.模型效果不错。在工程上常被用来做baseline,若是特征工程做的好,效果也不会太差。
3.训练速度快。分类的时候,计算量仅仅只和特征的数目相关。
4.资源占用小,尤其是内存。因为只需要存储各个维度的特征值。
5.方便输出结果调整。逻辑回归可以很方便的得到最后的分类结果,因为输出的是每个样本的概率分数,我们可以很容易的对这些概率分数进行cut off,也就是划分阈值(大于某个阈值的是一类,小于某个阈值的是一类)。
缺点:
1.准确率不会很高。因为模型的形式很简单,很难拟合复杂数据的真实分布。
2.很难处理好数据不平衡问题。举个例子:如果我们对于一个正负样本非常不平衡的问题比如正负样本比 10000:1.我们把所有样本都预测为正也能使损失函数的值比较小。但是作为一个分类器,它对正负样本的区分能力不会很好。
3.处理非线性的数据比较麻烦。逻辑回归在不引入其他方法的情况下,只能处理线性可分的数据,或者进一步说,处理二分类的问题 。
4.逻辑回归本身无法进行特征筛选。一般可以利用GBDT进行特征筛选再作为逻辑回归的输入。
网友评论