注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

数据挖掘

学习数据挖掘

 
 
 

日志

 
 

KNN SVM Logistic  

2014-05-15 16:11:44|  分类: 数据挖掘 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
来自知乎:
http://www.zhihu.com/question/21704547
SVM和logistic回归分别在什么情况下使用?
Support Vector Machine(常简称为SVM)是一种监督式学习的方法,可广泛地应用于统计分类以及回归分析。
支持向量机将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面,分隔超平面使两个平行超平面的距离最大化。假定平行超平面间的距离或差距越大,分类器的总误差越小。
两种方法都是常见的分类算法,从目标函数来看,区别在于逻辑回归采用的是logistical loss,svm采用的是hinge loss。这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。两者的根本目的都是一样的。此外,根据需要,两个方法都可以增加不同的正则化项,如l1,l2等等。所以在很多实验中,两种算法的结果是很接近的。

但是逻辑回归相对来说模型更简单,好理解,实现起来,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些。但是SVM的理论基础更加牢固,有一套结构化风险最小化的理论基础,虽然一般使用的人不太会去关注。还有很重要的一点,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算量。


http://www.zhihu.com/question/19887252

KNN 与 SVM 的区别是什么?

KNN基本没有训练时间,来一个新的样本记住就可以了。
但预测时间就坑爹了,如果一路上记了100万个样本,那就要和100万个样本算距离,再排序出前K个最近的。即使用堆排序或者其他改进过的排序算法,只在乎前k个顺序不再往下排序,也还是需要k*log(n)数量级的排序运算。特别是预测大量样本之后的样例。
不过KNN可以做online learning。

SVM训练时间相对久一些,不过在可接受的时间内。拉格朗日对偶以后其实算起来还挺快的。预测时需要对所有训练样本做核函数运算,虽然也不能算秒出结果,但时间也在可接受范围内。
另外,由于核函数的存在,可能预测精度会稍高一些。不过真实情况下,核函数和参数的选择也不太好选,做起来更复杂一些。


总之,在二者之间选择KNN:
准确率并不需要精益求精的时候
样本不多
样本不能一起性获取。只能随着时间一个个得到。

选择SVM:
哪怕提高一点正确率也很重要的时候
样本很多
SVM研究起来比KNN好玩哈哈

一般分类任务主要有两个步骤:1.训练;2.测试。
对于SVM,是先在训练集上训练一个模型,然后用这个模型直接对测试集进行分类。这两个步骤是独立的。
对于KNN,没有训练过程。只是将训练数据与训练数据进行距离度量来实现分类。

最大区别:
KNN预测时要用到全部训练样本点,非稀疏模型
SVM只用到支持向量,稀疏模型
最大相似:
KNN的距离度量函数类似SVM的核函数,势的叠加也是类似的
  评论这张
 
阅读(403)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017