机器学习-LR推导及与SVM的区别
之前整理过一篇关于逻辑回归的帖子,但是只是简单介绍了一下了LR的基本思想,面试的时候基本用不上,那么这篇帖子就深入理解一下LR的一些知识,希望能够对面试有一定的帮助。
1、逻辑斯谛分布
介绍逻辑斯谛回归模型之前,首先看一个并不常见的概率分布,即逻辑斯谛分布。设X是连续随机变量,X服从逻辑斯谛分布是指X具有如下的累积分布函数和概率密度函数:

式中,μ为位置参数,γ>0为形状参数。逻辑斯谛的分布的密度函数f(x)和分布函数F(x)的图形如下图所示。其中分布函数属于逻辑斯谛函数,其图形为一条S形曲线。该曲线以点(μ,1/2)
为中心对称,即满足:

曲线在中心附近增长较快,在两端增长较慢,形状参数γ的值越小,曲线在中心附近增长得越快。

2、逻辑斯谛回归模型:
线性回归的应用场合大多是回归分析,一般不用在分类问题上,原因可以概括为以下两个:
1)回归模型是连续型模型,即预测出的值都是连续值(实数值),非离散值;
2)预测结果受样本噪声的影响比较大。
2.1 LR模型表达式
LR模型的表达式为参数化的逻辑斯谛函数,即:


2.2 理解LR模型
2.2.1 对数几率
一个事件发生的几率(odds)是指该事件发生的概率与该事件不发生的概率的比值。如果事件发生的概率是p,那么该事件的几率为p/(1-p) ,该事件的对数几率(log odds)或logit函数是:

对LR而言,根据模型表达式可以得到:

即在LR模型中,输出y=1的对数几率是输入x的线性函数,或者说y=1的对数几率是由输入x的线性函数表示的模型,即LR模型。
2.2.2 函数映射
除了从对数几率的角度理解LR之外,从函数映射也可以理解LR模型。
考虑对输入实例x进行分类的线性表达式θT,其值域为实数域,通过LR模型的表达式可以将线性函数θTx的结果映射到(0,1)区间,取值表示为结果为1的概率(在二分类场景中).
线性函数的值越接近于正无穷大,概率值就越近1;反之,其值越接近于负无穷,概率值就越接近于0,这样的模型就是LR模型。
LR本质上还是线性回归,只是特征到结果的映射过程中加了一层函数映射,即sigmoid函数,即先把特征线性求和,然后使用sigmoid函数将线性和约束至(0,1)之间,结果值用语二分或回归预测。
2.2.3 概率解释
LR模型多用于解决二分类问题,如广告是否被点击(是/否),商品是否被购买(是/否)等互联网领域中常见的应用场景。但在实际场景中,我们又不把它处理成绝对的分类,而是用其预测值作为事件发生的概率。
这里从事件,变量以及结果的角度给予解释。
我们所能拿到的训练数据统称为观测样本。问题,样本是如何生成的?
一个样本可以理解为发生的一次事件,样本生成的过程即事件发生的过程,对于0/1分类问题来讲,产生的结果有两种可能,符合伯努利试验的概率假设。因此,我们可以说样本的生成过程即为伯努利试验过程,产生的结果(0/1)服从伯努利分布,那么对于第i个样本,概率公式表示如下:

将上面两个公式合并在一起,可以得到第i个样本正确预测的概率:

上式是对一个样本进行建模的数据表达。为什么可以这么做呢,因为y=1时后面一项为1,y=0时前面一项为1。那么对于所有的样本,假设每条样本生成过程独立,在整个样本空间中(N个样本)的概率分布(即似然函数)为:

接下来我们就可以通过极大似然估计方法求概率参数。
3、模型参数估计
3.1 Sigmoid函数
上图所示即为sigmoid函数,它的输入范围为−∞→+∞,而值域刚好为(0,1),正好满足概率分布为(0,1)的要求。用概率去描述分类器,自然要比阈值要来的方便。而且它是一个单调上升的函数,具有良好的连续性,不存在不连续点。

此外非常重要的,sigmoid函数求导后为:

3.2 参数估计推导
上一节的公式不仅可以理解为在已观测的样本空间中的概率分布表达式。如果从统计学的角度可以理解为参数θ
θ
似然性的函数表达式(即似然函数表达式)。就是利用已知的样本分布,找到最有可能(即最大概率)导致这种分布的参数值;或者说什么样的参数才能使我们观测到目前这组数据的概率最大。参数在整个样本空间的似然函数可表示为:

为了方便参数求解,对这个公式取对数,可得对数似然函数:

然后,我们使用随机梯度下降的方法,对参数进行更新:

最后,通过扫描样本,迭代下述公式可救的参数:

式中,a表示学习率。
以上的推导,就是LR模型的核心部分,在机器学习相关的面试中,LR模型公式推导可能是考察频次最高的一个点,要将其熟练掌握。
4、LR的优缺点
优点
一、预测结果是界于0和1之间的概率;
二、可以适用于连续性和类别性自变量;
三、容易使用和解释;
缺点
一、对模型中自变量多重共线性较为敏感,例如两个高度相关自变量同时放入模型,可能导致较弱的一个自变量回归符号不符合预期,符号被扭转。需要利用因子分析或者变量聚类分析等手段来选择代表性的自变量,以减少候选变量之间的相关性;
二、预测结果呈“S”型,因此从log(odds)向概率转化的过程是非线性的,在两端随着log(odds)值的变化,概率变化很小,边际值太小,slope太小,而中间概率的变化很大,很敏感。 导致很多区间的变量变化对目标概率的影响没有区分度,无法确定阀值。
5、LR和SVM
1、LR采用log损失,SVM采用合页损失。
2、LR对异常值敏感,SVM对异常值不敏感。
3、在训练集较小时,SVM较适用,而LR需要较多的样本。
4、LR模型找到的那个超平面,是尽量让所有点都远离他,而SVM寻找的那个超平面,是只让最靠近中间分割线的那些点尽量远离,即只用到那些支持向量的样本。
5、对非线性问题的处理方式不同,LR主要靠特征构造,必须组合交叉特征,特征离散化。SVM也可以这样,还可以通过kernel。
6、svm 更多的属于非参数模型,而logistic regression 是参数模型,本质不同。其区别就可以参考参数模型和非参模型的区别
那怎么根据特征数量和样本量来选择SVM和LR模型呢?Andrew NG的课程中给出了以下建议:
如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM
如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel
如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况。(LR和不带核函数的SVM比较类似。)
参考文献:https://plushunter.github.io/2017/01/12/机器学习算法系列(3):逻辑斯谛回归/
作者:石晓文的学习日记
链接:https://www.jianshu.com/p/e8dca5613da6
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
机器学习-LR推导及与SVM的区别的更多相关文章
- 机器学习常见面试题—支持向量机SVM
前言 总结了2017年找实习时,在头条.腾讯.小米.搜狐.阿里等公司常见的机器学习面试题. 支持向量机SVM 关于min和max交换位置满足的 d* <= p* 的条件并不是KKT条件 Ans: ...
- 机器学习(二)—支持向量机SVM
1.SVM的原理是什么? SVM是一种二类分类模型.它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器.(间隔最大是它有别于感知机) 试图寻找一个超平面来对样本分割,把样本中的正例和反例 ...
- 机器学习技法笔记(2)-Linear SVM
从这一节开始学习机器学习技法课程中的SVM, 这一节主要介绍标准形式的SVM: Linear SVM 引入SVM 首先回顾Percentron Learning Algrithm(感知器算法PLA)是 ...
- LR和SVM的区别
一.相同点 第一,LR和SVM都是分类算法(SVM也可以用与回归) 第二,如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的. 这里要先说明一点,那就是LR也是可以用核 ...
- Stanford机器学习---第八讲. 支持向量机SVM
原文: http://blog.csdn.net/abcjennifer/article/details/7849812 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回 ...
- 机器学习技法--学习笔记04--Soft SVM
背景 之前所讨论的SVM都是非常严格的hard版本,必须要求每个点都被正确的区分开.但是,实际情况时很少出现这种情况的,因为噪声数据时无法避免的.所以,需要在hard SVM上添加容错机制,使得可以容 ...
- KNN和SVM的区别和联系
先从两者的相同点来看吧,两者都是比较经典的机器学习分类算法,都属于监督学习算法,都对机器学习的算法选择有着重要的理论依据. 区别: 1 KNN对每个样本都要考虑.SVM是要去找一个函数把达到样本可分. ...
- LR中线程和进程的区别
LoadRunner中的进程与线程 1.进程与线程的区别: 进程和线程的区别是什么?进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性.进程和线程的区别 ...
- 机器学习实战 - 读书笔记(06) – SVM支持向量机
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第6章:SVM 支持向量机. 支持向量机不是很好被理解,主要是因为里面涉及到了许多数学知 ...
随机推荐
- JLRoutes使用
JLRoutes 地址:https://github.com/joeldev/JLRoutes JLRoutes原理: 它是通过url scheme来实现app内部,web到app,app与app之间 ...
- rar压缩类
using System; using System.Collections.Generic; using System.Text; using System.Diagnostics; namespa ...
- java之httpClient 3.x、AsyncHttpClient1.9.x使用总结
首先请大牛们见谅菜鸟重复造轮子的学习方式,本文适合新手看~ 下面使用的同步http是HttpClient 3.X的版本,不过早已不在维护,如果刚开始使用http,建议大家都换成4.X版本,别看下面的有 ...
- Linux上跑MySQL优化技巧
1.禁止操作系统更新文件的atime属性 atime是Linux/UNIX系统下的一个文件属性,每当读取文件时,操作系统都会将读操作时间回写到磁盘上.对于读写频繁的数据库文件来说,记录文件的访问时间一 ...
- HIVE简单操作
1.hive命令登录HIVE数据库后,执行show databases;命令可以看到hive数据库中有一个默认的default数据库. [root@hadoop hive]# hive Logging ...
- 算法 -- 求最长公共字符串&PHP
https://blog.csdn.net/hongyuancao/article/details/83308093 本文是利用PHP,求最长公共字符串.思路:利用动态规划和矩阵的思想. 动态规划:就 ...
- Spark中repartition和partitionBy的区别
repartition 和 partitionBy 都是对数据进行重新分区,默认都是使用 HashPartitioner,区别在于partitionBy 只能用于 PairRDD,但是当它们同时都用于 ...
- [py]python的time和datetime模块获取星期几
import time import datetime #今天星期几 today=int(time.strftime("%w")) print today #某个日期星期几 any ...
- [django]http请求
请求参数 http基本认证 https://zxc0328.github.io/2015/11/04/http-basic-auth/ 我们看到在http请求的header里有一个Authorizat ...
- Extjs event domain 研究
Listeners and Event Domains In Ext JS 4.2, the MVC event dispatcher was generalized with the introdu ...