大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
1. 定义
LR是线性二分类模型,也是广义的线性回归模型,可以计算某个样本特征下事件发生的概率。
假设数据服从伯努力分布,通过极大化似然函数的方法,运用梯度下降求解参数,来达到将数据二分类的目的。
1.1 基本假设
(1) 假设数据服从伯努力分布
P(正)= P(负)=1-
(2)假设样本为正的概率是
所以LR的最终形式为:
1.2 损失函数
是它的极大似然函数(假设训练样本独立同分布)
利用极大似然估计根据给定的训练集估计出参数w。
1.3 LR的目的
将数据二分类,提高准确率。
1.4 LR如何分类
划定一个阈值,y值>这个阈值的是一类,小于的是另一类。
小知识:什么是几率?
事件发生与不发生的概率比值
2. LR 损失函数推导
令事件发生概率
似然函数
对数似然函数(损失函数)
取反,令其最小
3. LR 优缺点
3.1 优点
1. 形式简单,模型可解释性好。从feature的权重可以看到不同特征对最后结果的影响。
2. 模型效果不错。在工程上作为baseline是可以接受的,如果特征工程做的好(组合特征),效果不会太差。
3. 训练速度快。分类时,计算量仅和特征数目相关。
4. 资源占用小。尤其是内存,只需存储各个维度的特征值。
5. 方便输出结果调整。输出的是每个样本的概率分数,可以很容易的对这些概率分数cutoff,即划分阈值。
6. 预测结果是介于0-1之间的概率,可处理连续型或类别型自变量。
3.2 缺点
1. 容易欠拟合,acc并不是很高。形式非常简单,很难去拟合数据的真实分布。
2. 难以发现组合特征,需要依赖人工特征工程,导致表达能力受限。也可以用gbdt来筛选特征,再加上LR。
3. 很难处理数据不均衡问题。
4. LR与线性回归的区别
1. 都是广义的线性回归,但LR可用于分类,在feature到结果的映射中加入了sigmoid(),实现了非线性。
2. 损失函数:
线性回归 –> 平方损失函数;
LR –> 似然函数
3. 预测范围:
线性回归 –> 整个实数域(敏感度一致);
LR –> [0,1]
5. LR与SVM的联系与区别
5.1 共同点
1. 都是有监督的分类算法,且一般处理二分类问题;
2. 都是判别模型;
3. 都可以增加不同的正则化项(L1,L2 等)
4. 如果不考虑核函数,LR和SVM都是线性分类算法(分类决策面都是线性的)。
5. Linear SVM与LR的性能都会受到outlier的影响,但LR比较敏感。
5.2 不同点
1. 损失函数不同
LR: 对数似然函数
SVM: 合页损失函数
其中为最大间隔距离。
2. 分类原理不同
LR基于概率理论,通过极大似然估计的方法估计出参数的值;而SVM则基于几何间隔max原理,认为存在max几何间隔的分类面为最优分类面,从最大间隔出发,转化为求对变量w和b的凸二次规划问题。
3. LR可以产生prob,而SVM不能。
4. 在解决非线形问题时,SVM采用核函数机制;LR通常采用特征构造,组合交叉特征引入非线性,而不是核函数。
5. LR容易欠拟合,准确度不高,(依赖特征构造,组合feature);SVM不太容易过拟合(松弛因子+损失函数形式)。
6. Linear SVM 依赖数据表达的距离测度,(会使度量较大的feature屏蔽较小的feature),需要对数据做归一化normalization;LR则不受其影响,但若正则化则需归一化。
7. 对小规模数据集,SVM表现较好,但在大数据中,SVM的计算复杂度受到限制,而LR因为训练简单,可以在线训练,经常被采用。
8. SVM更多的属于非参数模型,而LR则是参数模型,本质不同。
9. SVM学习时只考虑support vectors(在sv外添加样本是没有影响的),所以SVM不直接依赖于数据分布(对异常值不敏感),而LR则受所有数据点的影响(对异常值敏感),如果数据类别不均衡,需要先做balancing。
10. SVM的目标函数自带正则项(),这也是SVM是结构风险最小算法的原因;而LR需要另外在损失函数上添加正则项。
6. 常见问题
6.1 为什么要删除共线特征?
1. 提高模型的可解释性;
2. 提高模型的训练速度。
6.2 特征权重的绝对值可以用来衡量特征重要度吗?
不一定
1. 特征可能没有归一化,系数受到量级的影响。(如1m=1cm*100)
2. 特征间可能存在共线,导致特征系数不稳定,可解释性差。
6.3 LR为什么要特征离散化?
1. 模型表达能力增强。原来的一个feature变成了N个,加大了模型的拟合能力。
2. 离散后可以进行特征交叉,引入非线性。
3. 稀疏向量内积运算速度快,结果容易存储。
4. 离散后数据鲁棒性强,模型更稳定,不会因数据发生一点小的变动而表现出完全不同的性质。
6.4 相关特征与重复特征的影响
LR在训练过程中,如果有很多feature高度相关(成绩与G点),或一个feature重复了100遍,会有什么影响?
LR模型中特征的共线性不会影响模型的最优解,但会使系数不稳定,可解释性变差。
不考虑采样的情况下:
如果某个feature重复了100次,相当于把原来唯一的feature分成了100份,每一个feature都是原来特征权重值的。(可以认为这100个特征效果和原来feature效果相同)。
对于高度共线的两个feature,如x1、x2分别表示米和厘米,
则1.5米=1*x1+50*x2=2*x1-50×2
易知:虽然表达能力没变,但x2的系数却发生了反转。导致较弱的一个自变量回归符号不符合预期,符号被扭转。
在随机采样的情况下:
在训练收敛完之后,可以认为这100个特征和原来那一个特征扮演的效果一样,只是可能中间很多特征的值正负相消了。
6.5 LR的损失函数为什么要使用极大似然函数?
因为目标是要让每一个样本预测都要得到最大概率(要让预测为正的概率最大,也要让预测为负的概率最大),将所有样本预测后的概率进行相乘都最大,这就能到似然函数了。
1. 常见的损失函数有:平方损失、对数损失、HingeLosso-1损失、绝对值损失函数等,其中将极大似然函数取对数以后等同于对数损失函数,在LR模型下,对数损失函数的训练求解速度比较快。因为 这个式子的更新速度只与,相关,而与sigmoid函数本身的梯度无关,这样更新的速度自始至终都比较稳定。
2. 为什么不选平方损失函数?
(1)平方损失函数梯度更新的速度与sigmoid函数本身的梯度是很相关的;
(2)sigmoid函数梯度不大于0.25,训练会很慢。
6.6 LR的求解方法
该极大似然函数无法直接求解,一般通过梯度下降法不断逼近最优解。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/182383.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...