一.基本原理
面对一个分类问题,建立代价函数,通过优化方法迭代求解出最优的模型参数,然后测试验证我们这个求解的模型的好坏。逻辑回归是一种分类方法,主要用于二分类问题,应用于研究某些事件发生的概率
二.优缺点
优点
- 计算代价不高,易于理解和实现
- 速度快,适合二分类问题
- 简单易于理解,直接看到各个特征的权重
- 能容易更新模型吸收新的数据
- 不受多重共线性的影响(可通过正则化消除)
缺点
- 容易产生欠拟合
- 分类精度不高
- 很难处理样本不平衡问题
- 准确率不是很高,因为形式简单(类似于线性模型),很难拟合数据的真实分布
- 很难解决非线性问题,因为逻辑决策面是线性的
- 无法筛选特征,应用中常用GBDT(筛选特征)+ 逻辑回归组合
- 对数据和场景的适应能力有局限性,不如决策树算法适应性那么强
三.适用场景
- 是很多分类算法的基础组件:它的好处是输出值自然地落在0到1之间,并且有概率意义。因为它本质上是一个线性的分类器,所以处理不好特征之间相关的情况。虽然效果一般,却胜在模型清晰,背后的概率学经得住推敲。它拟合出来的参数就代表了每一个特征对结果的影响。也是一个理解数据的好工具
- 一般分类问题都可以使用,尤其因变量是二分类
- 不要求自变量和因变量是线性关系
- 信用评分卡
- 计算营销活动成功率
- 特定某天是否发生地震
- 广告点击预测
- 概率辅助决策
- 寻找危险因素
四.常见面试题
1.逻辑回归能否解决非线性分类问题?
2.逻辑回归为什么用sigmoid,而不用其他函数?
- sigmod 本身的性质:输出范围有限,数据在传递的过程中不容易发散;输出范围为(0,1),所以可以用作输出层,输出表示概率;抑制两头,对中间细微变化敏感,对分类有利
- 之所以LR 用sigmod,不是因为LR 选择了 sigmod ,而是用 指数簇分布和 最大熵原理 推导出来的形式,就是这个样子,后来起名叫sigmod
3.逻辑回归的系数想要都是正数,应该怎能做?
比如你训练好的模型是y = x1 - x2,这时候x2的系数是负数,然后你只要把样本x2这个维度的数字全取-j就好了,重新再次训练就全是正数了
4.为什么LR需要归一化或者取对数,为什么LR把特征离散化后效果更好?
目的是它能够让它符合我们所做的假设,使我们能够在已有理论上对其分析
LR更适合处理稀疏数据
逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合;(哑变量)
特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险
5.logistic的优化方法
这里理解题意为如何优化LR的效果
①引入非线性(能为模型引入非线性信息;onehot还能提高LR计算能力;同时还能处理缺失值特征;还能提高对异常值的鲁棒性)
- 特征分箱+onehot
- 特征项引入n次方
②处理共线性特征
- 计算特征间的pearson或者互信息,将相似的特征剔除
- GBDT+LR,用树模型构造特征,能得到组合特征信息,并避免原始特征中的共线性问题
③特征标准化,样本归一化
④去异常值
6.LR与线性回归的区别与联系?
@nishizhen
个人感觉逻辑回归和线性回归首先都是广义的线性回归, 其次经典线性模型的优化目标函数是最小二乘,而逻辑回归则是似然函数,另外线性回归在整个实数域范围内进行预测,敏感度一致,而分类范围,需要在[0,1]。逻辑回归就是一种减小预测范围,将预测值限定为[0,1]间的一种回归模型,因而对于这类问题来说,逻辑回归的鲁棒性比线性回归的要好
@乖乖癞皮狗:逻辑回归的模型本质上是一个线性回归模型,逻辑回归都是以线性回归为理论支持的。但线性回归模型无法做到sigmoid的非线性形式,sigmoid可以轻松处理0/1分类问题
7.LR与SVM的联系与区别?
联系
- LR和SVM都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题)
- 两个方法都可以增加不同的正则化项,如L1、L2等等。所以在很多实验中,两种算法的结果是很接近的
区别
- LR是参数模型,SVM是非参数模型
- 从目标函数来看,区别在于逻辑回归采用的是Logistical Loss,SVM采用的是hinge loss.这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重
- SVM的处理方法是只考虑Support Vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重
- 逻辑回归相对来说模型更简单,好理解,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算
- Logic 能做的 SVM能做,但可能在准确率上有问题,SVM能做的Logic有的做不了
8.LR和朴素贝叶斯的区别与联系?
9.逻辑回归为什么要对特征进行离散化?
- 逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合;离散特征的增加和减少都很容易,易于模型的快速迭代
- 稀疏变量内积乘法运算速度快,计算结果方便存储,容易扩展
- 方便交叉与特征组合:离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力
- 简化模型:特征离散化后,起到了简化逻辑回归模型的作用,降低了模型过拟合的风险
10.逻辑回归在训练的过程中,如果有很多的特征高度相关或者说有一个特征重复了100遍,会造成什么样的影响?
- 如果在损失函数最终收敛的情况下,有很多特征高度相关也不会影响分类器的效果
- 对特征本身来说的话,假设只有一个特征,在不考虑采样的情况下,你现在将它重复100遍。训练完以后,数据还是这么多,但是这个特征本身重复了100遍,实质上将原来的特征分成了100份,每个特征都是原来特征权重值的百分之一
- 如果在随机采样的情况下,其实训练收敛完以后,还是可以认为这100个特征和原来那一个特征扮演的效果一样,只是可能中间很多特征的值正负相消了
11.用逻辑回归时,特征中的某些值很大,意味着这个特征重要程度很高吗?
- 这里的特征是指输入特征,输入特征和模型没有任何直接关系
- 逻辑回归需要的数据,一般情况下需要进行离散化,以保证模型的鲁棒性
- 但是一般情况下会根据逻辑回归中参数的大小来判断其对应特征的重要程度,在线性模型中(特征归一化后)我们认为特征对应的参数值越大,其特征重要性越高
12.逻辑回归和多重线性回归的区别?
- 逻辑回归于多重线性回归实际上有很多相同之处,最大的区别就在于它们的因变量不同,其他基本都差不多。正因为如此,这两种回归可以归于同一个家族,即广义线性模型。这一家族中的的模型形式基本上都差不多,不同的就是因变量不同
- 如果是连续的,就是多重线性回归
- 如果是二项分布,就是逻辑回归
- 如果是poisson分布,就是poisson回归
- 如果是负二项分布,就是负二项回归
13.逻辑回归为什么不使用均方误差函数做损失函数,而是使用交叉熵损失函数?
逻辑回归使用mse为损失函数时,是非凸的损失函数,不方便优化;而对数损失(二元交叉熵损失)能保证损失函数为凸函数,优化到全局最低点
另外,逻辑回归的交叉熵损失函数也是可以通过最大似然估计推导出来的