不得不提的LR和SVM

发现很多算法,机器学习,深度学习面经中经常会提到一个问题,LR和SVM的比较,也稍微整理了以下

首先是两者的共同点:

1,LR和SVM都是分类算法

2,如果不考虑核函数,LR和SVM都是线性分类算法,即分类决策面都是线性的

3,LR和SVM都是有监督学习算法

4,LR和SVM都是判别模型

模型作为统计学习的三要素之一(模型,策略,算法)

模型:学习什么样的模型,模型就是所要学习的条件概率分布或者说是决策函数,ps有监督学习和无监督学习都要训练一个模型,然后泛化应用

策略:按照什么样的准则学习或者选择最优的模型,包括损失函数和风险函数,损失函数是一次的好坏,风险函数是平均的好坏

常用的损失函数有0-1损失函数,平方损失函数,绝对值损失函数和对数损失函数,认为损失函数值越小,模型就越好

经验风险就是模型关于联合分布的期望损失,经验风险最小化(ERM)策略就认为经验风险最小的模型为最优模型,最大似然估计就是经验风险最小化的一个例子

扫描二维码关注公众号,回复: 1442632 查看本文章

结构风险最小化就等价于正则化,加入正则化项或者惩罚项,往往对训练数据和测试数据都有很好的预测(避免对于训练数据的过拟合问题,具有较好的泛化能力),贝叶斯估计中的最大后验概率估计就是结构风险最小化的例子

算法:也就是指学习模型的具体计算方法,统计学习通常归结为最优化问题,如何保证找到全局最优解,并使求解过程非常高效,就需要好的最优化算法

判别模型主要有:K近邻,感知机(SVM),决策树,逻辑斯蒂回归(LR),最大熵模型,提升方法(boost)和条件随机场

与判别模型对应的是生成模型,比如朴素贝叶斯,隐马尔可夫模型

两者的区别是生成模型由数据求得联合概率分布P(X, Y),然后求出条件概率分布P(Y|X)作为预测

而判别模型由数据直接求得决策函数f(x),或者条件概率分布P(Y|X)

判别模型的特点:直接面对预测,准确率高;可以简化学习问题,对数据进行各种程度的抽象,定义特征等

生成模型的特点:可以还原出联合概率密度;收敛速度快,当样本容量增加时也能很快的收敛;存在隐变量时,仍可以使用

两者的不同点:

1,损失函数的不同,逻辑回归采用的是log loss(对数损失函数),svm采用的是hinge loss(合页损失函数)

2,分类原理的不同,LR基于概率理论,通过极大似然估计的方法估计出参数的值,而SVM基于几何间隔最大化原理,认为存在最大几何间隔的分类面为最优分类面,从最大间隔出发,转化为求对变量w和b的凸二次规划问题

3,由于分类原理的不同,也导致了LR是所有样本都有影响,而SVM只是少量样本有影响的(支持向量),在支持向量外添加样本点是没有影响的

4,正因为LR受数据影响较大,所以在数据不同类别时,要先对数据做balancing

5,同样的,由于SVM依赖数据表达的距离测度,所以要先对数据做normalization标准化

6,对于线性不可分的情况,SVM的核函数可以帮助将低维不可分的数据转换到高维,变成线性可分的,而LR很少用到核函数(并不是没有。。)假设我们在LR里也运用核函数的原理,那么每个样本点都必须参与核计算,这带来的计算复杂度是相当高的。所以,在具体应用时,LR很少运用核函数机制。​

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

关于LR和SVM的选择:

1. 如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM

2. 如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel

3. 如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况

参考:

https://www.cnblogs.com/zhizhan/p/5038747.html

猜你喜欢

转载自blog.csdn.net/figthingforadream/article/details/79869595