机器学习| 面试题:01、机器学习中LR(Logistic Regression)和SVM(Support Vector Machine)有什么区别与联系?
问题
机器学习中LR(Logistic Regression)和SVM(Support Vector Machine)有什么区别与联系?
背景
LR和SVM的概念大家都有了解甚至很熟悉了,不过在面试中可能不止是简单地单独考察你对LR或SVM的理解,可能会让你对这两个算法进行比较分析,因此就有必要将两者放在一起比较一下。
LR和SVM的联系
1. LR和SVM都是分类算法
普通的LR和SVM算法只能处理二分类问题,当然,通过改进后的LR和SVM都可以用来处理多分类问题(后面会详细解释)。
2. 在不考虑核函数时,两者都是线性分类算法
注意,不考虑核函数时两者都是线性分类器。LR、SVM加了核函数后为分别为KLR、KSVM,只不过一般而言采用KSVM较多而KLR用得较少。
3. 两者都属于监督学习算法
4. 两者都是判别式模型
什么是判别式模型?假设给定观测集合X,需要预测的变量集合为Y,那么判别式模型就是直接对条件概率分布P(Y|X)进行建模来预测 Y;而生成式模型是指,先对联合概率模型P(X,Y)进行建模,然后在给定观测集合X的情况下,通过计算边缘分布来求解出P(Y|X)。
常见的判别式模型有:LR、SVM、KNN、神经网络、最大熵模型、条件随机场等
常见的生成式模型有:隐马尔科夫模型HMM、朴素贝叶斯、贝叶斯网络、高斯混合模型GMM等
LR和SVM的区别
1. 采用的Loss Function不同
从目标函数来看,LR采用的是Logistic Loss,而SVM采用的是Hinge Loss。
L R L o s s : L ( ω , b ) = ∑ i = 1 m l n ( y i p 1 ( x ; β ) + ( 1 − y i ) p 0 ( x ; β ) ) = ∑ i = 1 m ( − y i β T x i + l n ( 1 + e β T x i ) ) 其 中 , β = ( ω ; b ) , p 1 = p ( y = 1 ∣ x ; β ) , p 0 = p ( y = 0 ∣ x ; β ) S V M L o s s : L ( ω , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m α i ( 1 − y i ( ω T x i + b ) ) LR\ Loss:\ L(\omega,b)=\sum_{i=1}^{m}ln(y_{i}p_{1}(x;\beta)+(1-y_{i})p_{0}(x;\beta)) = \sum_{i=1}^{m}(-y_{i}\beta^{T}x_{i}+ln(1+e^{\beta^{T}x_{i}})) \\其中,\beta=(\omega;b), p_{1}=p(y=1|x;\beta), p_{0}=p(y=0|x;\beta) \\ \\SVM\ Loss:\ L(\omega,b,\alpha)=\frac{1}{2}||w||^2+\sum_{i=1}^{m}\alpha_{i}(1-y_{i}(\omega^{T}x_{i}+b)) LR Loss: L(ω,b)=i=1∑mln(yip1(x;β)+(1−yi)p0(x;β))=i=1∑m(−yiβTxi+ln(1+eβTxi))其中,β=(ω;b),p1=p(y=1∣x;β),p0=p(y=0∣x;β)SVM Loss: L(ω,b,α)=21∣∣w∣∣2+i=1∑mαi(1−yi(ωTxi+b))
LR: 基于概率理论,通过极大似然估计方法估计参数值
SVM:基于几何间隔最大化原理
补充: Logistic Loss: L l o g ( z ) = l o g ( 1 + e − z ) L_{log}(z)=log(1+e^{-z}) Llog(z)=log(1+e−z) // 用于 LR
Hinge Loss: L h i n g e ( z ) = m a x ( 0 , 1 − z ) L_{hinge}(z)=max(0,1-z) Lhinge(z)=max(0,1−z) // SVM
Exponential Loss: L e x p ( z ) = e − z L_{exp}(z)=e^{-z} Lexp(z)=e−z // Adaboost
2. SVM只考虑边界线上局部的点(即support vector),而LR考虑了所有点。
影响SVM决策分类面的只有少数的点,即边界线上的支持向量,其他样本对分类决策面没有任何影响,即SVM不依赖于数据分布;而LR则考虑了全部的点(即依赖于数据分布),通过非线性映射,减少远离分类平面的点的权重,即对不平衡的数据要先做balance。
3. 在解决非线性问题时,SVM采用核函数机制,而LR一般很少采用核函数的方法。
SVM使用的是hinge loss,可以方便地转化成对偶问题进行求解,在解决非线性问题时,引入核函数机制可以大大降低计算复杂度。
4. SVM依赖于数据分布的距离测度,所以需对数据先做normalization,而LR不受影响。
normalization的好处:进行梯度下降时,数值更新的速度一致,少走弯路,可以更快地收敛。
5. SVM的损失函数中自带正则化项( 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21∣∣w∣∣2),而LR需要另外添加。
LR和SVM什么时候用?
来自Andrew Ng的建议:
①若feature数远大于样本数量,使用LR算法或者Linear SVM
②若feature数较小,样本数量适中,使用kernel SVM
③若feature数较小,样本数很大,增加更多的feature然后使用LR算法或者Linear SVM
LR和SVM如何处理多分类问题?
SVM:
方式一:组合多个二分类器来实现多分类器(两种方法OvO或OvR)
①OvO(one-versus-one): 任意两个类别之间设计一个二分类器,N个类别一共 N ( N − 1 ) 2 \frac{N(N-1)}{2} 2N(N−1)个二分类器
②OvR(one-versus-rest): 每次将一个类别作为正例,其余的作为反例,共N个分类器。
注:OvO和OvR先训练出多个二分类器,在测试时,新样本将同时提交给所有的分类器进行预测,投票产生 最终结果,将被预测的最多的类别作为最终的分类结果
方式二:直接修改目标函数,将多个分类面的参数合并到一个最优化问题中,一次性实现多分类。
LR:
方式一: OvR:同上,组合多个logistic 二分类器
方式二: 修改目标函数,改进成softmax回归
参考资料
LR和SVM的相同和不同
SVM学习笔记——SVM解决多分类问题的方法
逻辑回归解决多分类和softmax
机器学习| 面试题:01、机器学习中LR(Logistic Regression)和SVM(Support Vector Machine)有什么区别与联系?相关推荐
- 机器学习算法 --- SVM (Support Vector Machine)
一.SVM的简介 SVM(Support Vector Machine,中文名:支持向量机),是一种非常常用的机器学习分类算法,也是在传统机器学习(在以神经网络为主的深度学习出现以前)中一种非常牛X的 ...
- SVM(support vector machine)算法详解中之转化对偶问题
本文总结一下SVM(support vector machine)算法. 学习SVM算法主要有三个难点: 如何推导出基本的优化目标.(其中包括理解函数距离与几何距离) 对于基本优化目标的公式如何转化为 ...
- 台湾大学林轩田机器学习技法课程学习笔记5 -- Kernel Logistic Regression
红色石头的个人网站:redstonewill.com 上节课我们主要介绍了Soft-Margin SVM,即如果允许有分类错误的点存在,那么在原来的Hard-Margin SVM中添加新的惩罚因子C, ...
- 台湾大学林轩田机器学习技法课程学习笔记2 -- Dual Support Vector Machine
红色石头的个人网站:redstonewill.com 上节课我们主要介绍了线性支持向量机(Linear Support Vector Machine).Linear SVM的目标是找出最"胖 ...
- [机器学习] 分类 --- Support Vector Machine (SVM)
1. 基本概念 支持向量机(Support Vector Machine, SVM)的基本模型是在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大.SVM是用来解决二分类问题的有监督学习算法 ...
- 李宏毅svm_【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)...
[李宏毅机器学习笔记]1.回归问题(Regression) [李宏毅机器学习笔记]2.error产生自哪里? [李宏毅机器学习笔记]3.gradient descent [李宏毅机器学习笔记]4.Cl ...
- SVM 支持向量机算法(Support Vector Machine )【Python机器学习系列(十四)】
SVM 支持向量机算法(Support Vector Machine )[Python机器学习系列(十四)] 文章目录 1.SVM简介 2. SVM 逻辑推导 2.1 Part1 化简限制条件 2.2 ...
- 机器学习技法1-Linear Support Vector Machine
注: 文章中所有的图片均来自台湾大学林轩田<机器学习技法>课程. 笔记原作者:红色石头 微信公众号:AI有道 本系列分成16节课,将会介绍<机器学习基石>的进阶版<机器学 ...
- 台湾大学林轩田机器学习技法课程学习笔记4 -- Soft-Margin Support Vector Machine
红色石头的个人网站:redstonewill.com 上节课我们主要介绍了Kernel SVM.先将特征转换和计算内积这两个步骤合并起来,简化计算.提高计算速度,再用Dual SVM的求解方法来解决. ...
最新文章
- python绘制月亮_Python函数
- mysql5.7 zip安装配置_MySQL5.7的.zip文件的配置安装
- DNS域名服务器双master+ntp时间服务器双主+keepalived企业高可用方案 附脚本
- 【Python】正负无穷
- java数据库连接类,已经把数据库操作的方法都封装好了
- (转)MySQL自带的性能压力测试工具mysqlslap详解
- 移动端导出excel_连载系列【4】Excel开发移动端quot;APPquot;
- bp 神经网络 优点 不足_基于粒子群算法和BP神经网络的多因素林火等级预测模型...
- centos 安装openoffice (办公软件 WPS)
- SecureCRT用证书方式登录
- LinkButton(按钮)
- IPtable 工作原理
- python爬虫re+requests+bs4爬取汽车之家全部过程,附代码。支持互联网免费至上,看了全部关于汽车之家的文章都是收费的,我很看不过去
- 麦客表单无法登录打开显示空白怎么办?
- 给Testerhome测试小道消息做个硬广告
- C语言编程>第二十七周 ① 请补充fun函数,该函数的功能是:寻找两个整数之间的所有素数(包括这两个整数),把结果保存在数组a中,函数返回素数的个数。
- CMD里如何用DiskPart命令删除分区
- 论文投稿指南——中文核心期刊推荐(物理学)
- JZOJ 5426 Galo
- 数据预处理归一化Z-score归一化Min-Max归一化程序
热门文章
- 希尔伯特曲线 java_《算法心得:高效算法的奥秘》PDF 下载
- 雷蛇手机2 android8.1,雷蛇手机2代安卓9.0/8.1安装面具ROOT方案
- extjs 修改官方主题
- 4g内存可以用linux系统吗,Ubuntu Linux系统支持4G及以上大内存解决方案
- kali暴力破解windows7的密码
- 解决SysFader:iexplore.exe应用程序错误
- 编写基于DM3730 ARM-A8内核测试程序(裸机版)1---X-LOADER启动分析
- Synchronization 同步
- 全能音视频转码 MediaCoder 0.8.36.5757 专业版
- 生产签名进行 Base64 编码