逻辑回归LR模型简介「建议收藏」

逻辑回归LR模型简介「建议收藏」4.LR与线性回归的区别1.都是广义的线性回归,但LR可用于分类,在feature到结果的映射中加入了sigmoid(),实现了非线性。2.损失函数:线性回归–>平方损失函数;LR–>似然函数3.预测范围:线性回归–>整个实数域(敏感度一致);LR–>[0,1]…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

1. 定义

LR是线性二分类模型,也是广义的线性回归模型,可以计算某个样本特征下事件发生的概率。

假设数据服从伯努力分布,通过极大化似然函数的方法,运用梯度下降求解参数,来达到将数据二分类的目的。

1.1 基本假设

(1) 假设数据服从伯努力分布

P(正)=h_{\theta }(x)        P(负)=1-h_{\theta }(x)

(2)假设样本为正的概率是 P=\frac{1}{1+e^{-\theta^{T}x}}=h_{\theta }(x)

所以LR的最终形式为:

h_{\theta }(x;\theta )=\frac{1}{1+e^{-\theta ^{T}x}}

P(y|x)=f(z)^{y}(1-f(z))^{1-y}

1.2 损失函数

是它的极大似然函数(假设训练样本独立同分布)

L_{\theta }(x)=\prod_{i=1}^{m}h_{\theta }(x_{i};\theta )^{y_{i}}*(1-h_{\theta }(x_{i};\theta ))^{1-y_{i}}=\prod_{i=1}^{n}P(y_{i}|x_{i};w)

利用极大似然估计根据给定的训练集估计出参数w。

1.3 LR的目的

将数据二分类,提高准确率。

1.4 LR如何分类

划定一个阈值,y值>这个阈值的是一类,小于的是另一类。

小知识:什么是几率?

事件发生与不发生的概率比值  odds=\frac{p}{1-p}

ln\frac{y}{1-y}=ln\frac{P(Y=1|x)}{1-P(Y=1|x)}=ln\frac{1}{e^{-\theta ^{T}x}}=\theta ^{T}x=f(x)

2. LR 损失函数推导

令事件发生概率

P(Y=1|x)=h_{\theta }(x_{i})          P(Y=0|x)=1-h_{\theta }(x_{i})

似然函数

  L(w)=\prod_{i=1}^{n}(h_{\theta }(x_{i}))^{y_{i}}*(1-h_{\theta }(x_{i}))^{1-y_{i}}

对数似然函数(损失函数) 

lnL(w)=\frac{1}{n}\sum_{i=1}^{n}[y_{i}lnh_{\theta }(x_{i})+(1-y_{i})ln(1-h_{\theta }(x_{i}))]

取反,令其最小

J(\theta )=-lnL(\theta )=-\frac{1}{n}\sum_{i=1}^{n}[y_{i}lnh_{\theta }(x_{i})+(1-y_{i})ln(1-h_{\theta }(x_{i}))]

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: 对数似然函数

J(\theta )=-\frac{1}{m}[\sum_{i=1}^{m} y_{i}logh_{\theta }(x_{i})+(1-y_{i})log(1-h_{\theta }(x_{i}))]

    SVM: 合页损失函数

L(w,b,\alpha )=\frac{1}{2}\left \| w \right \|^{2}-\sum_{i=1}^{n}\alpha _{i}(y_{i}(wx_{i}+b)-1))

其中\frac{1}{2}\left \| w \right \|^{2}为最大间隔距离。

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的目标函数自带正则项\frac{1}{2}\left \| w \right \|^{2}),这也是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都是原来特征权重值的\frac{1}{100}。(可以认为这100个特征效果和原来feature效果相同)。

        对于高度共线的两个feature,如x1、x2分别表示米和厘米,

则1.5米=1*x1+50*x2=2*x1-50×2

易知:虽然表达能力没变,但x2的系数却发生了反转。导致较弱的一个自变量回归符号不符合预期,符号被扭转。

在随机采样的情况下:

        在训练收敛完之后,可以认为这100个特征和原来那一个特征扮演的效果一样,只是可能中间很多特征的值正负相消了。

6.5 LR的损失函数为什么要使用极大似然函数?

        因为目标是要让每一个样本预测都要得到最大概率(要让预测为正的概率最大,也要让预测为负的概率最大),将所有样本预测后的概率进行相乘都最大,这就能到似然函数了。

1. 常见的损失函数有:平方损失、对数损失、HingeLosso-1损失、绝对值损失函数等,其中将极大似然函数取对数以后等同于对数损失函数,在LR模型下,对数损失函数的训练求解速度比较快。因为 \theta _{j}=\theta _{j}-(y^{i}-h_{\theta }(x^{i};\theta ))*x_{j}^{i} 这个式子的更新速度只与x_{j}^{i},y^{i}相关,而与sigmoid函数本身的梯度无关,这样更新的速度自始至终都比较稳定。

2. 为什么不选平方损失函数?

(1)平方损失函数梯度更新的速度与sigmoid函数本身的梯度是很相关的;

(2)sigmoid函数梯度不大于0.25,训练会很慢。

6.6 LR的求解方法

该极大似然函数无法直接求解,一般通过梯度下降法不断逼近最优解。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182383.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 飞鸽传书2011下载(飞鸽传书)

    飞鸽传书2011下载(飞鸽传书)

    2021年12月10日
    57
  • long转string的方法

    long转string的方法publicclassTest{publicstaticvoidmain(String[]args){longa1=12;Strings1=a1+””;//法1:直接加空串System.out.println(s1+999);longa2=34;Strings2…

    2022年5月15日
    39
  • vs2013安装失败解决办法_dns解析失败怎么解决

    vs2013安装失败解决办法_dns解析失败怎么解决个人解决方案:在控制面板-》软件卸载中将VisualC++2012redistributable、VisualC++2010redistributable相关的编程语言的东西卸载后,重启再安装就可以了。有个问题就是:在重启的过程中发现win10关机和启动花了很长时间,可能因为我卸载了上面这些组件导致其需要更新。关于VisualC++2012redistributable是什么,

    2022年8月12日
    5
  • java xml与实体类转换「建议收藏」

    java xml与实体类转换「建议收藏」@XmlRootElement注解定义xml的根节点通过name改变根节点的xml值          @XmlRootElement(name=”amimal_test”)@XmlType注解指定序列生成的xml节点顺序         @XmlType(propOrder={“id”,”age”,”name”,”bir

    2022年7月21日
    14
  • 数据库模型设计,第一范式、第二范式、第三范式简单例子理解

    数据库模型设计,第一范式、第二范式、第三范式简单例子理解有几年经验了,也经历了不少项目,接触了各种数据模型,可是数据库模型设计范式只是知道有这个东西,具体范式的要求是什么呢?你是不是还很模糊?赶紧来普及下吧,第一范式、第二范式、第三范式简单例子理解。

    2022年5月23日
    52
  • 什么是5g网络切片_5g网络切片架构三层

    什么是5g网络切片_5g网络切片架构三层2020年,相信很多小伙伴已经用上了5G手机,感受到了5G的网络带来的飞一般的感觉。不过,可能也有小伙伴会发出疑问:我买了5G手机,也体验了5G,好是好,但似乎也没有外界吹得那么神乎啊。不是说好的技术革命吗?就只是网速变快了而已?其实这背后主要有两个原因,一个是目前5G切实落地的应用还比较少,第二个就是目前5G的技术确实也还在演进过程中。我们回想一下5G的三大核心应用场景:增强型移动宽带(eMBB):更大的网络吞吐量、峰值速率和低延时;海量机器通信(mMTC):巨大的连

    2022年10月2日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号