逻辑回归的优缺点

优点:
1)速度快,适合二分类问题
2)简单易于理解,直接看到各个特征的权重
3)能容易地更新模型吸收新的数据
缺点:
对数据和场景的适应能力有局限性,不如决策树算法适应性那么强

http://blog.csdn.NET/pakko/article/details/37878837/

什么是逻辑回归?

Logistic回归与多重线性回归实际上有很多相同之处,最大的区别就在于它们的因变量不同,其他的基本都差不多。正是因为如此,这两种回归可以归于同一个家族,即广义线性模型(generalizedlinear model)。

这一家族中的模型形式基本上都差不多,不同的就是因变量不同。

  • 如果是连续的,就是多重线性回归;
  • 如果是二项分布,就是Logistic回归;
  • 如果是Poisson分布,就是Poisson回归;
  • 如果是负二项分布,就是负二项回归。

Logistic回归的因变量可以是二分类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释。所以实际中最常用的就是二分类的Logistic回归。

Logistic回归的主要用途:

  • 寻找危险因素:寻找某一疾病的危险因素等;
  • 预测:根据模型,预测在不同的自变量情况下,发生某病或某种情况的概率有多大;
  • 判别:实际上跟预测有些类似,也是根据模型,判断某人属于某病或属于某种情况的概率有多大,也就是看一下这个人有多大的可能性是属于某病。

Logistic回归主要在流行病学中应用较多,比较常用的情形是探索某疾病的危险因素,根据危险因素预测某疾病发生的概率,等等。例如,想探讨胃癌发生的危险因素,可以选择两组人群,一组是胃癌组,一组是非胃癌组,两组人群肯定有不同的体征和生活方式等。这里的因变量就是是否胃癌,即“是”或“否”,自变量就可以包括很多了,例如年龄、性别、饮食习惯、幽门螺杆菌感染等。自变量既可以是连续的,也可以是分类的。

常规步骤

Regression问题的常规步骤为:

  1. 寻找h函数(即hypothesis);
  2. 构造J函数(损失函数);
  3. 想办法使得J函数最小并求得回归参数(θ)

构造预测函数h

Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别),所以利用了Logistic函数(或称为Sigmoid函数),函数形式为:

Sigmoid 函数在有个很漂亮的“S”形,如下图所示(引自维基百科):

下面左图是一个线性的决策边界,右图是非线性的决策边界。

对于线性边界的情况,边界形式如下:

构造预测函数为:

函数的值有特殊的含义,它表示结果取1的概率,因此对于输入x分类结果为类别1和类别0的概率分别为:


构造损失函数J

Cost函数和J函数如下,它们是基于最大似然估计推导得到的。

下面详细说明推导的过程:

(1)式综合起来可以写成:

取似然函数为:

对数似然函数为:

最大似然估计就是求使取最大值时的θ,其实这里可以使用梯度上升法求解,求得的θ就是要求的最佳参数。但是,在Andrew Ng的课程中将取为下式,即:

因为乘了一个负的系数-1/m,所以取最小值时的θ为要求的最佳参数。


梯度下降法求的最小值

θ更新过程:

θ更新过程可以写成:

 


向量化Vectorization

Vectorization是使用矩阵计算来代替for循环,以简化计算过程,提高效率。

如上式,Σ(...)是一个求和的过程,显然需要一个for语句循环m次,所以根本没有完全的实现vectorization。

下面介绍向量化的过程:

约定训练数据的矩阵形式如下,x的每一行为一条训练样本,而每一列为不同的特称取值:

g(A)的参数A为一列向量,所以实现g函数时要支持列向量作为参数,并返回列向量。由上式可知可由一次计算求得。

θ更新过程可以改为:

综上所述,Vectorization后θ更新的步骤如下:

(1)求

(2)求

(3)求 

正则化Regularization

过拟合问题

对于线性回归或逻辑回归的损失函数构成的模型,可能会有些权重很大,有些权重很小,导致过拟合(就是过分拟合了训练数据),使得模型的复杂度提高,泛化能力较差(对未知数据的预测能力)。

下面左图即为欠拟合,中图为合适的拟合,右图为过拟合。

问题的主因

过拟合问题往往源自过多的特征。

解决方法

1)减少特征数量(减少特征会失去一些信息,即使特征选的很好)

  • 可用人工选择要保留的特征;
  • 模型选择算法;

2)正则化(特征较多时比较有效)

  • 保留所有特征,但减少θ的大小

正则化方法

正则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项或惩罚项。正则化项一般是模型复杂度的单调递增函数,模型越复杂,正则化项就越大。

从房价预测问题开始,这次采用的是多项式回归。左图是适当拟合,右图是过拟合。

直观来看,如果我们想解决这个例子中的过拟合问题,最好能将的影响消除,也就是让。假设我们对进行惩罚,并且令其很小,一个简单的办法就是给原有的Cost函数加上两个略大惩罚项,例如:

这样在最小化Cost函数的时候,

正则项可以取不同的形式,在回归问题中取平方损失,就是参数的L2范数,也可以取L1范数。取平方损失时,模型的损失函数变为:

lambda是正则项系数:

  • 如果它的值很大,说明对模型的复杂度惩罚大,对拟合数据的损失惩罚小,这样它就不会过分拟合数据,在训练数据上的偏差较大,在未知数据上的方差较小,但是可能出现欠拟合的现象;
  • 如果它的值很小,说明比较注重对训练数据的拟合,在训练数据上的偏差会小,但是可能会导致过拟合。

正则化后的梯度下降算法θ的更新变为:

正则化后的线性回归的Normal Equation的公式为:

http://blog.sina.com.cn/s/blog_818f5fde0102vvpy.html

在大大小小的面试过程中,多次被问及这个问题:“请说一下逻辑回归(LR)和支持向量机(SVM)之间的相同点和不同点”。第一次被问到这个问题的时候,含含糊糊地说了一些,大多不在点子上,后来被问得多了,慢慢也就理解得更清楚了,所以现在整理一下,希望对以后面试机器学习方向的同学有所帮助(至少可以瞎扯几句,而不至于哑口无言ha(*^-^*))。

(1)为什么将LR和SVM放在一起来进行比较?

回答这个问题其实就是回答LR和SVM有什么相同点。

第一,LR和SVM都是分类算法。

看到这里很多人就不会认同了,因为在很大一部分人眼里,LR是回归算法。我是非常不赞同这一点的,因为我认为判断一个算法是分类还是回归算法的唯一标准就是样本label的类型,如果label是离散的,就是分类算法,如果label是连续的,就是回归算法。很明显,LR的训练数据的label是“0或者1”,当然是分类算法。其实这样不重要啦,暂且迁就我认为他是分类算法吧,再说了,SVM也可以回归用呢。

第二,如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的。

这里要先说明一点,那就是LR也是可以用核函数的,至于为什么通常在SVM中运用核函数而不在LR中运用,后面讲到他们之间区别的时候会重点分析。总之,原始的LR和SVM都是线性分类器,这也是为什么通常没人问你决策树和LR什么区别,决策树和SVM什么区别,你说一个非线性分类器和一个线性分类器有什么区别?

第三,LR和SVM都是监督学习算法。

这个就不赘述什么是监督学习,什么是半监督学习,什么是非监督学习了。

第四,LR和SVM都是判别模型。

判别模型会生成一个表示P(Y|X)的判别函数(或预测模型),而生成模型先计算联合概率p(Y,X)然后通过贝叶斯公式转化为条件概率。简单来说,在计算判别模型时,不会计算联合概率,而在计算生成模型时,必须先计算联合概率。或者这样理解:生成算法尝试去找到底这个数据是怎么生成的(产生的),然后再对一个信号进行分类。基于你的生成假设,那么那个类别最有可能产生这个信号,这个信号就属于那个类别。判别模型不关心数据是怎么生成的,它只关心信号之间的差别,然后用差别来简单对给定的一个信号进行分类。常见的判别模型有:KNN、SVM、LR,常见的生成模型有:朴素贝叶斯,隐马尔可夫模型。当然,这也是为什么很少有人问你朴素贝叶斯和LR以及朴素贝叶斯和SVM有什么区别(哈哈,废话是不是太多)。

第五,LR和SVM在学术界和工业界都广为人知并且应用广泛。

讲完了LR和SVM的相同点,你是不是也认为有必要将他们进行比较一下了呢?而且比较LR和SVM,是不是比让你比较决策树和LR、决策树和SVM、朴素贝叶斯和LR、朴素贝叶斯和SVM更能考察你的功底呢?

(2)LR和SVM的不同。

第一,本质上是其loss function不同。

逻辑回归的损失函数
支持向量机的目标函数

不同的loss function代表了不同的假设前提,也就代表了不同的分类原理,也就代表了一切!!!简单来说,​逻辑回归方法基于概率理论,假设样本为1的概率可以用sigmoid函数来表示,然后通过极大似然估计的方法估计出参数的值,具体细节参考http://blog.csdn.net/pakko/article/details/37878837。支持向量机​基于几何间隔最大化原理,认为存在最大几何间隔的分类面为最优分类面,具体细节参考http://blog.csdn.net/macyang/article/details/38782399

第二,支持向量机只考虑局部的边界线附近的点,而逻辑回归考虑全局(远离的点对边界线的确定也起作用)。

当​你读完上面两个网址的内容,深入了解了LR和SVM的原理过后,会发现影响SVM决策面的样本点只有少数的结构支持向量,当在支持向量外添加或减少任何样本点对分类决策面没有任何影响;而在LR中,每个样本点都会影响决策面的结果。用下图进行说明:

支持向量机改变非支持向量样本并不会引起决策面的变化
逻辑回归中改变任何样本都会引起决策面的变化

​理解了这一点,有可能你会问,然后呢?有什么用呢?有什么意义吗?对使用两种算法有什么帮助么?一句话回答:

因为上面的原因,得知:线性SVM不直接依赖于数据分布,分类平面不受一类点影响;LR则受所有数据点的影响,如果数据不同类别strongly unbalance,一般需要先对数据做balancing。​(引自http://www.zhihu.com/question/26768865/answer/34078149)

第三,在解决非线性问题时,支持向量机采用核函数的机制,而LR通常不采用核函数的方法。

​这个问题理解起来非常简单。分类模型的结果就是计算决策面,模型训练的过程就是决策面的计算过程。通过上面的第二点不同点可以了解,在计算决策面时,SVM算法里只有少数几个代表支持向量的样本参与了计算,也就是只有少数几个样本需要参与核计算(即kernal machine解的系数是稀疏的)。然而,LR算法里,每个样本点都必须参与决策面的计算过程,也就是说,假设我们在LR里也运用核函数的原理,那么每个样本点都必须参与核计算,这带来的计算复杂度是相当高的。所以,在具体应用时,LR很少运用核函数机制。​

第四,​线性SVM依赖数据表达的距离测度,所以需要对数据先做normalization,LR不受其影响。(引自http://www.zhihu.com/question/26768865/answer/34078149)

一个机遇概率,一个机遇距离!​

第五,SVM的损失函数就自带正则!!!(损失函数中的1/2||w||^2项),这就是为什么SVM是结构风险最小化算法的原因!!!而LR必须另外在损失函数上添加正则项!!!

以前一直不理解为什么SVM叫做结构风险最小化算法,所谓结构风险最小化,意思就是在训练误差和模型复杂度之间寻求平衡,防止过拟合,从而达到真实误差的最小化。未达到结构风险最小化的目的,最常用的方法就是添加正则项,后面的博客我会具体分析各种正则因子的不同,这里就不扯远了。但是,你发现没,SVM的目标函数里居然自带正则项!!!再看一下上面提到过的SVM目标函数:

SVM目标函数

​有木有,那不就是L2正则项吗?

不用多说了,如果不明白看看L1正则与L2正则吧,参考http://www.mamicode.com/info-detail-517504.html​

http://www.zhihu.com/question/26768865/answer/34078149

逻辑回归(logistic regression)和支持向量机(SVM)的比较

发表于 2012 年 10 月 25 日 由 michaeltang

Liblinear支持两个热门的二元线性分类器:常规逻辑回归LR和线性SVM。给出一组实例标签(xi,yi),i=1,...l,xi∈Rn,yi∈{-1,1},这两个分类器使用了不同的损失算法解决下面的约束优化问题。其中,C是大于0的惩罚因子。对于SVM来说,有两个常用的损失算法max(1-yiwTxi,0)和max(1-yiwTxi,0)2,分别指的是L1-SVM和L2-SVM。对LR来说,损失算法是log(1+e-yiwTxi),得自一个概率模型。在有些案例中,分类器的判别式还要包含一个偏差项b。Liblinear通过对每个实例和纬度加强影响来实现偏差:wT<-[wT,b],XiT<-[XiT,B].其中B是用户指定的常量。与此不同,L1-SVM和L2-SVM的算法是坐标下降法。Liblinear为L2-SVM和LR都实现了信任区域的牛顿方法。在测试阶段,我们预测一个数据点上x>0,如果WTx>0.对于多元实例训练,我们为之提供了1Vrest的策略。

无意间看到上面这段话,想起了那天吃饭的时候一个同事说他碰到一个面试题目是: svm 和 lr 的异同,当时思考了一下,之后想起了曾经在学习logistic regression classification model的梯度的时候,推到和一个简单的两层的sigmoid输出的的梯度是一样,后来发现神经网络拟合的时候,我们用的是均方误差的loss function ,而在这个lr 的推倒的时候,我同样用了均方误差的loss,因此得到一样的结果,但是通常在lr的推倒的时候,我们是直接用 最大似然估计的,然后只有当 误差的分布满足高斯分布的时候,最大似然的结果才会和最小二乘相同(loss function 为均方误差)

刚才看到上面的loss function 的形式,想到了cross entropy loss,在网上找到这篇文章印证了这个

http://www.cs.mcgill.ca/~dprecup/courses/ML/Lectures/ml-lecture05.pdf,不做这个ppt中的lable是0和1,所以和上面的公式有所不同,表达形式没有那么漂亮,但是是一样的,有时间再把这几个公式整理一下吧。

lr 和 svm本质不同在于loss function的不同,不过想想这几乎对所有的单层模型都使用,lr的损失函数是 cross entropy loss, adaboost的损失函数是 expotional loss ,svm是hinge loss,常见的回归模型通常用 均方误差 loss。

Logistic回归以及LR与SVM异同相关推荐

  1. 机器学习中的Logistic回归算法(LR)

    Logistic回归算法(LR) 算法简介 LR名为回归,实际是一种分类算法.其针对输入样本集 x x,假设的输出结果 y=hθ(x)y=h_{\theta}(x) 的取值范围为 y=[0,1] y= ...

  2. Logistic 回归 (LR)推导

    Logistic 回归是一个常用的分类模型以及神经网络的基础. 二项逻辑斯谛回归 Logistic 回归的思想是将线性模型用来做分类任务,需要找到一个单调可微函数将分类任务的真实标记 y y y 与线 ...

  3. Logistic回归和SVM的异同

    这个问题在最近面试的时候被问了几次,让谈一下Logistic回归(以下简称LR)和SVM的异同.由于之前没有对比分析过,而且不知道从哪个角度去分析,一时语塞,只能不知为不知. 现在对这二者做一个对比分 ...

  4. 【手把手教你】使用Logistic回归、LDA和QDA模型预测指数涨跌

    1 引言 机器学习(Machine Learning)是人工智能(AI)的重要组成部分,目前已广泛应用于数据挖掘.自然语言处理.信用卡欺诈检测.证券市场分析等领域.量化投资作为机器学习在投资领域内最典 ...

  5. Logistic回归解析

    1.概述   Logistic回归为概率型非线性模型回归模型,是研究二分类观察结果y与一些样本特征(x1,x2,-,xn)(x_1,x_2,-,x_n)之间的关系的这一种多分量分析方法,简单讲就是研究 ...

  6. logistic回归详解一:为什么要使用logistic函数

    项目github地址:bitcarmanlee easy-algorithm-interview-and-practice 欢迎大家star,留言,一起学习进步 从线性分类器谈起 给定一些数据集合,他 ...

  7. 逻辑斯蒂回归(logisic regression)和SVM的异同

    逻辑斯蒂回归主要用于二分类,推广到多分类的话是类似于softmax分类.求 上述问题可以通过最大化似然函数求解. 上述问题可以采用最小化logloss进行求解. 一般地,我们还需要给目标函数加上正则项 ...

  8. [机器学习] LR与SVM的异同

    1 为什么将LR和SVM放在一起来进行比较? 回答这个问题其实就是回答LR和SVM有什么相同点. 第一,LR和SVM都是分类算法. 看到这里很多人就不会认同了,因为在很大一部分人眼里,LR是回归算法. ...

  9. SVM与Logistic回归的区别

    SVM与Logistic回归的区别 1.相同点 1.1 都是分类算法 1.2 如果不考虑核函数,LR和SVM都是线性分类算法 1.3 LR和SVM都是监督学习算法. 1.4 LR和SVM都是判别模型. ...

  10. R语言分类模型:逻辑回归模型LR、决策树DT、推理决策树CDT、随机森林RF、支持向量机SVM、Rattle可视化界面数据挖掘、分类模型评估指标(准确度、敏感度、特异度、PPV、NPV)

    R语言分类模型:逻辑回归模型LR.决策树DT.推理决策树CDT.随机森林RF.支持向量机SVM.Rattle可视化界面数据挖掘.分类模型评估指标(准确度.敏感度.特异度.PPV.NPV) 目录

最新文章

  1. 如何写好一篇科技论文?以Wiley科技刊为例(附视频)
  2. 英语语法---介词详解
  3. mysql连接失败 ping通_哭~问:oracle 数据库有时会突然连接失败,但能ping通主机...
  4. 老司机实战Windows Server Docker:2 docker化现有iis应用的正确姿势
  5. winafl 源码分析
  6. Pytorch:上采样、下采样
  7. linux安装nfs服务器
  8. IPOP下的tcl脚本
  9. 二级计算机合格,计算机二级考试合格的分数线
  10. 翟菜花:她经济的营销攻坚战,4C的用户导向才是破局之法
  11. 推荐一款有趣的APP-种子习惯
  12. 一个好的学习算法的网站
  13. java:AXIS调用webService接口,返回String类型xml,并用dom4j简单解析xml
  14. [硫化铂]treecnt
  15. AndroidStudio连接真机测试运行
  16. Xilinx zc706开发板使用
  17. ConvMAE实战:使用ConvMAE实现对植物幼苗的分类(非官方)(一)
  18. 首个中国自主研发DRAM正式投片!长鑫存储迎来新CEO
  19. 计算星期几(蔡勒公式)
  20. 圣魔大战3(Castle Fantisia)艾伦希亚战记改动器/秘籍——究极改动大法

热门文章

  1. 使用ntp协议同步时间,chronyc sources -v 同步时间
  2. 聊天室自动滚动效果实现
  3. docker-2 深入了解docker
  4. Think in Java读书笔记--对象入门
  5. 全国首款网页版(web)真3D商城
  6. java web中的相对路径和绝对路径
  7. RPM打包原理、示例、详解及备查( 转)
  8. delphi 连接DBF
  9. VMware安装Linux系统
  10. 未能加载文件或程序集或它的某一个依赖项。参数不正确