1. 逻辑回归模型
逻辑回归也称为对数几率回归,逻辑回归应用了和回归类似的方法来解决问题,但实际上逻辑回归算法是分类算法。
其原理和线性回归相似:
(1):首先要找到一个合适的假设函数(Hypothesis),常用表示,该函数的输出为判定结果的概率值。构建假设函数的前提是需要对数据有一定的了解,比如是线性或者非线性的数据等。
(2):构造一个损失函数(cost function),该函数的输出表示假设函数与训练类别 y 之间的偏差,可以是二者之间的差或者别的形式,综合求得所有数据的损失,将cost函数求和或者求平均值,用来标记,表示所有训练数据预测与实际类别的偏差。
(3)值越小,表示预测函数越准确合理,因此接下来做的就是找到的最小值。求解函数最小值有多种方法,逻辑回归实现的是梯度下降的方法。
2. 逻辑回归推导
2.1 构造假设函数
逻辑回归时用条件概率分布的形式表示: ,这里随机变量X的取值为n维实数向量,例如,
Y的取值为1或0。
我们需要将线性回归中得出结果的实值映射为类别值,理想的阶跃函数可以将任意值转换为0,1值。然而阶跃函数不是单调可微的函数,于是找到Sigmoid函数替代:
Sigmoid函数图像:
由于Sigmoid函数取值范围为(0,1),所以,我们,可将其看作类1的后验概率来估计,也就是用Sigmoid求得数据点x属于类别1的概率大小。
因此,自然而然地,我们将Sigmoid函数计算得到的值大于0.5的归为类别1,小于0.5的归为类别0。
2.2 构造损失函数
当所要用的几个函数都了解后,接下来要做的就是根据训练数据,将参数w求解出来。而要找到参数w,首先就得把代价函数定义出来,也就是目标函数。
联想到模仿线性回归的做法,我们首先利用平方误差来当代价函数:
其中,表示第 i 样本点,表示第 i 个样本的真实值,表示第 i 个样本的预测值。但是如果我们将该函数带入Sigmoid函数后,发现这是一个非凸函数,存在着许多局部最小值,求解过程变得复杂。
因此,从另一个角度:由于可以视为类1的后验概率,所以:
其中,表示给定w,那么x 点的y=1的概率大小,于是,上面的式子可以写成:
接下来用极大似然函数估计来求得训练集参数w:
两边取对数:
原本是求得是上式取得最大值的w,所以在前面加上符号,就变为求解最小值的了,因此,最后的代价函数为:
注:也有的在前面加上了1/m,不过最后求解的w值是一样的
所以:最大似然函数估计与误差平方和等价,这也就是为什么逻辑回归的损失函数可以用最大似然函数进行估计的原因。
2.3 梯度下降法求解
梯度下降推导过程(手写):
3 逻辑回归面试常见问题
逻辑回归用一句话概括:逻辑回归假设数据服从伯努利分布,通过极大似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。
其中,包含了5个点:(1)逻辑回归的假设;(2)逻辑回归的损失函数;(3)逻辑回归的求解方法;(4)逻辑回归的目的;(5)逻辑回归如何分类。这5个问题考核对逻辑回归的基本了解。
3.1:逻辑回归的求解方法:
由于极大似然函数无法直接求解,因此利用梯度下降的方法来逼近最优解。
注意面试问题:梯度下降本身来看的话,就有随机梯度下降,批梯度下降,small patch梯度下降三种,因此,面试可能会问到的这些方面的问题:
(1):批梯度下降会获得全局最优解,缺点是在更新每个参数的时候,需要遍历所有的数据,计算量较大,并且会有冗余的计算,导致的结果是当数据量大的时候,每个参数的更新会很慢;
(2):随机梯度下降是以高方差频繁更新,优点是使得sgd会跳到和潜在更好的局部最优解,缺点是使得收敛速度到局部最优的过程会更加复杂;
(3):小批量梯度下降结合了sgd和batch gd的优点,每次更新的时候使用n个样本,减少了参数的次数,可以达到更稳定的收敛结果,一般在深度学习中采用这种方法。
其中,很可能继续追问的加分项,如了解Adam,动量法等优化方法,因为上述方法存在两个致命的问题:
其一: 是如何对模型选择合适的学习率,自始至终保持同样的学习率其实不太合适,刚开始学习率较大会尽快找到最优解,但是等到后面逼近的时候,学习率较大则会越过最优点。
其二:如何对参数选择合适的学习率,在实践中,对每个参数都保持同样的学习率也不合理,有些参数频繁更新,在可以适当小一点,有些参数更新缓慢,那么学习率就应该大一点。
3.2 逻辑回归的目的:
- 该函数的目的就是将数据二分类,提高准确率
3.3 对逻辑回归的进一步提问:
- 逻辑回归的损失函数为什么要用极大似然函数?
- 损失函数有四种:平方损失函数,对数损失函数,HingeLoss0-1损失函数,绝对值损失函数,将极大似然函数取对数等价于对数损失函数。在逻辑回归模型下,一方面,如果是平方损失函数,将Sigmoid函数代入后,会得到一个非凸函数,可能存在不止一个极小值,这样会导致计算结果存在偏差。另一方面,对数损失函数的求解参数的速度更快,因为根据最后梯度下降的公式,最后式子的更新速度只和x和y有关,与Sigmoid函数无关。
在逻辑回归训练过程中,如果有很多特征高度相关或者说有个特征重复了100遍,会有什么影响?
- 如果在损失函数最终收敛的情况下,其实计算很多特征高度相关不会影响分类器的效果
- 对于特征本身来说,假设只有一个特征,在不考虑采样的情况下,如果将它重复100遍,训练完以后,数据还是这么多,但是这个特征本身重复了100遍,实质上是将原来的特征分成100分,每一个特征都是原来特征权重的百分之一。
如果在随机采样的情况下,训练收敛完以后,还是可以认为这个100个特征和原来一个特征扮演的效果一样,可能中间很多正负相消了
4 逻辑回归优缺点总结:
优点:
- 形式简单,模型解释性非常好,从特征的权重可以看到不同特征对最后结果的影响,某个特征权重比较高,那么这个特征对最后结果的影响比较大;
- 模型效果不错,;
- 训练速度较快,计算量仅仅和特征的数量相关,
- 占用资源小,尤其是内存,因为只需要存储各个维度的特征值;
- 输出结果方便调整,逻辑回归可以很方便的的到最后的分类结果,因为输出的是每个样本的概率分数,可以很容易的对这些概率进行调整,也就是划分阈值。
缺点:
- 准确率不高,因为形式简单,很难拟合真实的数据分布;
- 很难处理数据不平衡的问题。如,如果我们对于一个正负样本非常不平衡的问题,10000:1,我们把所有样本都预测为正也能使得损失函数的值比较小,但作为一个分类器,它对正负样本的区分能力不会很好;
- 处理非线性数据麻烦。逻辑回归在不引入其他方法的情况下,只能处理线性可分的数据;
- 逻辑回归本色无法筛选特征,有时候,会有GBDT来筛选特征,然后再加上逻辑回归。
参考资料:
[1] 机器学习--Logistic回归计算过程的推导 :机器学习--Logistic回归计算过程的推导_ligang_csdn的博客-CSDN博客_logistic回归分析步骤
[2] 逻辑回归为什么使用对数损失函数:逻辑回归为什么使用对数损失函数_saltriver的专栏-CSDN博客_逻辑回归为什么使用对数损失函数
[3] 逻辑回归常见面试题总结:逻辑回归常见面试题总结_monkey512的博客-CSDN博客_逻辑回归常见面试题
[4] 机器学习实战
[5] 周志华《机器学习》