SVM的新理解

  svm导出的原始问题然后利用KKT条件,为何还需要对偶空间?

  一方面,实际上KKT条件怎么得到的?KKT条件的推导是:svm原始问题->极大极小问题(先算极小这步,但极小这步中α是有约束的,不好求)->满足某些条件(如凸的等)->极小极大问题(先算极大这步,α约束条件跑到第二步,极大这步没约束)->推导出KKT条件。

  另一方面,如果没有对偶空间,对于非线性问题,第一步先映射到线性,第二步再使用最大间隔线性分类。这样的时间花费很大,于是,考虑用核函数。核函数的优点就是将这两步合在一起计算,这样使得时间花费变少。

  核函数:KΦ(x,x‘)=Φ(x)TΦ(x‘)                                                                    (1)

  计算简化,如对一个映射Φ2,KΦ2(x,x‘)=...=1+(xTx‘)+(xTx‘)2                                       (2)

  很显然,(1)式中花费为O(d2),(2)式中花费为O(d),因为这里只需计算xTx‘,其中这里d只x的维数。

参考文献:台湾大学林轩田视频

时间: 2024-11-11 07:37:59

SVM的新理解的相关文章

对SVM的个人理解

对SVM的个人理解 之前以为SVM很强大很神秘,自己了解了之后发现原理并不难,不过,“大师的功力在于将idea使用数学定义它,使用物理描述它”,这一点在看SVM的数学部分的时候已经深刻的体会到了,最小二乘法.梯度下降法.拉格朗日乘子.对偶问题等等被搞的焦头烂额.在培乐园听了讲课之后才算比较清晰的了解了整个数学推导的来龙去脉. 1. 为什么一定要研究线性分类? 首先说一下为什么对数据集一定要说线性可分或线性不可分,难道不可以非线性分开吗?想要非线性分开当然可以,实际上SVM只是把原来线性不可分的数

关于erlang中的进程字典(process dictionary)的新理解及其访问速度 (copy来的)

之前对于erlang的进程字典了解的不够清楚,只是知道put().get()函数,即存值和取值,而每个put.get中都有自己的一对Key--Value(键值对)与之对应.一个Key对应一个Value.在erlang中,启动进程节点之后,进程字典的put.get的值是对缓存的处理,而对数据库的操作,相当于是对硬盘的一个操作,可以理解成是一个数据的备份. 举个简单的例子:在游戏中都有好友操作,启动服务之后,玩家点击添加好友操作,进程的节点已经开启,先从内存中获取玩家的进程字典的Value的值,这里

数据库水平分库,垂直分库的新理解

水平分库:当数据量巨大时,将数据放到不同的表中,比如表1,表2,表3,...: 垂直分库:当一张表的字段太多,可拆分出一张或多张分表,根据主键唯一标示: 新理解: 垂直分库:当一张表中字段不多,当某些字段长度过长,表占用空间很大,检索表的时候需要执行大量的IO(数据库检索的本质是对硬盘中的文件进行io访问), 此时可以考虑对长度较长的字段进行拆分,单独成表,用原表主键进行唯一标示. 相反: 当数据库记录数不多,但字段较多,可对部分字段进行整合,比如用户的信息(电话,手机号...),以json字符

接口测试的新理解

最近一直关注接口测试的方方面面. 慢慢的对接口测试的一些更细节的方面有着一些理解. 简单的说,接口测试的过程中需要关注的一些是: 1. 接口的有效性. 2. 接口数据的冗余性. 先说有效性: 有效性的意思在于接口数据的重用,因为在测试的过程中遇到了一种情况,大概的情况是: App上有一个页面,做成了两个Activity,在app上展示为一个页面,上方是个人信息的图片,头像和评论数等一系列的信息.下方是详细信息的一些内容. 不可以理解的是前端做成了两个Activity,A和B ,两个Xml布局,

auc ks 新理解

转https://www.zybuluo.com/frank-shaw/note/152851 新理解:我认为auc,和ks异曲同工.auc是根据预测概率(由大到小排序)作为阈值,可分割为不多于样本个数n个阈值.即可得到n个recall和precision把这些点连成线即为roc曲线.auc即为roc下的面积.那个点最接近左上角即为最好的阈值.1和0作阈值分别得到(0,0)和(1,1)点.样本点只是曲线上的点,理论上无穷大,不可能描绘完.横:假阳率,纵:recall.n个点为相应阈值分割得到的r

对SVM的个人理解---浅显易懂

原文:http://blog.csdn.net/arthur503/article/details/19966891 之前以为SVM很强大很神秘,自己了解了之后发现原理并不难,不过,“大师的功力在于将idea使用数学定义它,使用物理描述它”,这一点在看SVM的数学部分的时候已经深刻的体会到了,最小二乘法.梯度下降法.拉格朗日乘子.对偶问题等等被搞的焦头烂额.在培乐园听了讲课之后才算比较清晰的了解了整个数学推导的来龙去脉. 1. 为什么一定要研究线性分类? 首先说一下为什么对数据集一定要说线性可分

JavaScript——对this指针的新理解

一直以来对this的理解只在可以用,会用,却没有去深究其本质. 这次,借着<JavaScript The Good Parts>,作了一次深刻的理解. 下面我们一起来看看这个this吧. 在我们声明一个函数时,每个函数除了有定义时的parameters(形参),自身还会有额外的两个参数,一个是this,一个是arguments(实参).arguments就是函数实际接受到的参数,是一个类数组.arguments我只做个简略的介绍,重点我们放在this指针上. 在面向对象变成中,this十分重要

对Delphi控件作用的新理解

最近几天,对Delphi控件的含义有了一个新的理解.其实它不仅仅是给程序员提供功能的一个表层调用,控件本身的源代码就是一个很强的工业级源码.而且它的Main例子,往往就已经是半成品.而别的语言里没有那么多控件——换句话说,就是没有那么多工业级项目的源代码(往往都是通用工具类型)供你使用和学习(两层意思).这是我们Delphier独一无二的优势.不得不说,当年设计Delphi的两位老兄Anders Hejlsberg和Chuck Jazdzewski真是双剑合璧,无敌于天下——当然,只是产品无敌于

关于js参数传递矛盾新理解

之前看了很多人的解释,说js中,函数的参数传递都是值传递中不理解. 他们无非举了两个例子 在这两个例子中,第二个例子可以看出参数是由值传递的.因为函数内对象的变化没有影响到函数外对象的变化.但是在第一个例子中,我们却发现,函数内和函数外都指向了一个地址.但是博主并没有说明 既然是值传递,为什么参数里面的改变却影响了外面的值.博主只解释了第二个例子是值传递,却没有解释第一个例子为什么会出现这样的原因,只是一句两个变量指向一个对象 就一笔带过,我觉得这个并没有解决大多数人的理解.所以我觉查看了js高