KNN与SVM对比&SVM与逻辑回归的对比

KNN与SVM对比&SVM与逻辑回归的对比

首先说一下两种学习方式: lazy learning  和  eager learning

先说 eager learning, 这种学习方式是指在进行某种判断(例如,确定一个点的分类或者回归中确定某个点对应的函数值)之前,先利用训练数据进行训练得到一个目标函数,待需要时就只利用训练好的函数进行决策,这是一种一劳永逸的方法, SVM 就属于这种学习方式;

而 lazy learning 是指只有到了需要决策时才会利用已有数据进行决策,而在这之前不会经历eager learning 所拥有的训练过程, KNN 属于这种方式。

 

Eager learning 考虑到了所有训练样本,说明它是一个全局的近似,优点是虽然它需要耗费训练时间,可是它的决策时间基本为 0。

Lazy learning 在决策时虽然需要计算所有样本与查询点的距离,但是在真正做决策时却只用了局部的几个训练数据,所以它是一个局部的近似,然而虽然不需要训练,它的复杂度还是需要 O(n),n 是训练样本的个数。

Lazy learning 的缺点: 1.  需要的存储空间比较大  2. 决策过程比较慢。

 

针对全局和局部的问题,我想了一个实际的例子。假设,现在我们要针对中国各地区的贫富问题进行划分,已经知道西部大部分地方比较贫穷,少部分地方富裕;而东部大部分地方富裕,少部分地方贫穷。首先,我们使用 SVM进行求解,按照 SVM 的思想,最后的结果一定是沿着中国地图无情的划一条线,而用KNN 时,东部城市中北京,上海等算是富裕的,而菏泽啊这样的就不太富裕;西部呢,像成都啊(不知道算不算西部,就假设算吧)算是富裕的,西宁啊这样的算是不太富裕的。

使用应用KNN算法时,我们无法对预测的误差有一个统计意义上的估计,结果的波动可能很大,这通常不是我们希望看到的。但是KNN的实现简单,使用灵活,也有自己的用武之地。

 

参考:http://www.52ml.net/10152.html

 

因此:

SVM需要训练过程,预测效率高。

KNN计算复杂度高,但是需要调的参比较小。

 

 

至于
逻辑回归和SVM,一个统计的方法,一个几何的方法,逻辑回归对于每一个样本都有考虑,而SVM只考虑了支持向量。
同样的线性分类情况下,如果异常点较多的话,无法剔除,由于LR中每个样本都是有贡献的,因此分类效果会受到影响,可能存在过拟合。
LR模型找到的那个超平面,是尽量让所有点都远离他,而SVM寻找的那个超平面,是只让最靠近中间分割线的那些点尽量远离,即只用到那些支持向量的样本。

<span>KNN与SVM对比&SVM与逻辑回归的对比</span>

 

理由:因为训练样本数量特别大,使用复杂核函数的SVM会导致运算很慢,因此应该考虑通过引入更多特征,然后使用线性核函数的SVM或者lr来构建预测性更好的模型。

SVM有多种核可以选择,可以处理各种非线性问题(条件是选对核函数)。大多数情况准确率都比LR要高,但是模型较大,训练效率低。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119459.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 15道常考SpringBoot面试题整理

    15道常考SpringBoot面试题整理1、什么是SpringBoot?多年来,随着新功能的增加,spring变得越来越复杂。只需访问https://spring.io/projects页面,我们就会看到可以在我们的应用程序中使用的所有Spring项目的不同功能。如果必须启动一个新的Spring项目,我们必须添加构建路径或添加Maven依赖关系,配置应用程序服务器,添加spring配置。因此,开始一个新的spring项目需…

    2022年5月21日
    38
  • 智能化让商业地产迎来新一轮黄金期

    智能化让商业地产迎来新一轮黄金期

    2021年6月5日
    98
  • 新年放大招:Github 私库免费了!

    新年放大招:Github 私库免费了!据《Github嫁入豪门》这篇文章刚好半年了,那时候栈长还表示对Github的期待,仅仅半年,现在就已经有了巨大改变。微软果然是豪门,嫁入半年就已经开花结果了,免费私库已全面无限制开启……我们来看下Github的官宣:Newyear,newGitHub:AnnouncingunlimitedfreeprivatereposandunifiedEnterpr…

    2022年7月18日
    17
  • c++图形界面开发_在界面用显示时间的步骤

    c++图形界面开发_在界面用显示时间的步骤BCGControlBarLibraryProfessionalEdition installation:整个库的源代码安装在\BCGCBPro目录下面.可执行文件(*.dll)安装在\Bin(forVisualStudio6.0)或\Bin7(forVisualStudio.NET)下面。请在你的源代码中做如下的改变:·                    

    2022年10月8日
    3
  • jdbc java_jpa使用

    jdbc java_jpa使用SpringBoot集成jpa网上有很对jpa的介绍,但是都不是很全,这边根据公司的实际使用情况进行的总结。JPA、Hibernate、Springdatajpa之间的关系主要参考https://my.oschina.net/u/3080373/blog/1828589大家可以读一下这篇文章什么是JPA?全称JavaPersistenceAPI,可以通过注解或者XML描述【对象-关系表】之间的映射关系,并将实体对象持久化到数据库中。为我们提供了:1)ORM映射元数据:JPA支持XML

    2022年10月20日
    3
  • debian apt-get update报错GPG error

    debian apt-get update报错GPG error查看http://ftp-master.debian.org/查看“Archivesigningkey”,点击download或者wgethttp://ftp-master.debian.org/archive-key-5.0.asc然后apt-keyaddarchive-key-5.0.ascOK也有可能是另一个问题:

    2022年10月9日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号