逻辑回归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的求解方法

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Flowable 快速入门教程:SpringBoot 集成 Flowable + Flowable Modeler 流程配置可视化(超详细)[通俗易懂]

    Flowable 快速入门教程:SpringBoot 集成 Flowable + Flowable Modeler 流程配置可视化(超详细)[通俗易懂]Flowable快速入门教程:SpringBoot集成Flowable+FlowableModeler流程配置可视化(超详细)版本加依赖内部日志初始化ProcessEngine代码初始化flowable.cfg.xml初始化我的初始化示例版本这里选择的版本为6.4.1Flowable6.4.1release中文版用户手册:FlowableBPMN用户手册如果需…

  • js的touch事件的实际引用

    一开始做前端页面的时候,接触的也是js,但是随后便被简单高效的jquery吸引过去,并一直使用至今。而js,则被我主观的认为底层技术而抛弃。直到这几天工作需要,研究移动端页面的触屏滑动事件,搜索jqu

    2021年12月27日
  • vue 路由嵌套_vue嵌套路由怎么定义

    vue 路由嵌套_vue嵌套路由怎么定义嵌套路由有时候在路由中,主要的部分是相同的,但是下面可能是不同的。比如访问首页,里面有新闻类的/home/news,还有信息类的/home/message。这时候就需要使用到嵌套路由。项目结构如下:

  • 传统的行存储和(HBase)列存储的区别「建议收藏」

    传统的行存储和(HBase)列存储的区别「建议收藏」1为什么要按列存储列式存储(Columnarorcolumn-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的区别就是如何组织表(翻译不好,直接抄原文了):Ø Row-basedstoragestoresatableinasequenceofrows.Ø Column-basedstorag

  • 面试题整理|45个CSS面试题

    面试题整理|45个CSS面试题面试题整理|45个CSS面试题一、初级CSS面试题二、中级CSS面试题三、进阶CSS面试题四《HTML5&CSS3还原美团外卖》移动端布局实战CSS已成为Web设计不可或缺的一部分,它让web页面变得更加美观,更具设计感。在前端面试中,CSS面试题也占有一定比重。本篇文章,将为大家分享45个和CSS相关的面试题及其解析,难度分为:初级、中级、高级三个部分,由易到难,循序渐进。一、初级CSS面试题Q1、CSS全称是什么?CSS英文全称:CascadingStyleSheets,也就是层

  • mysql phpmyadmin配置_phpmyadmin 配置方法与安装教程[通俗易懂]

    mysql phpmyadmin配置_phpmyadmin 配置方法与安装教程[通俗易懂]今天我们来看看phpmyadmin配置教程吧,也可以叫做phpmyadmin安装吧,安装我就不说了,你直接到网上下载一个phpmyadmin包解压到你的站点目录,就行了.下面我们来看个简单的例子吧.安装目录:/admin/好了我们现在打开我们刚才解压的文件夹找到config.sample.inc.php把它改名为config.inc.php下面我们就打开这个文件.找到$cfg[‘PmaAbs…

发表回复

您的电子邮箱地址不会被公开。

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