SVM初学
一、 一点基础数学知识
如今硕士都快毕业了,反而将自己的很多数学知识忘的几乎相同了。所以。如今决心再捡起来。以补齐自己的数学短板。为以后的研究做好铺垫吧。如今结合自己学习SVM、MLC、ANN等机器学习方法来回想曾经的数学知识以及补充新的数学知识。
在SVM中,首先面临的问题是计算样本点到分类超平面的距离。如今就从最简单的点到直线的距离、点到平面的距离等内容開始回想。
1) 点到直线的距离计算公式
如果直线L的方程为:
那么。点(x0,y0)到直线L的距离为d
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
如点(2,2)到直线2x-y+1=0的距离为:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
几何示意图例如以下:
2)点到平面的距离
如果平面P的方程为 ,则点(X0,Y0,Z0)到平面P的距离d为:
几何示意图例如以下。
对于高维空间。如果存在超平面f(x)=W*X+b,那么样本点到超平面的相对距离距离能够用
来表示。可是,这并非严格的定义。在确切的描写叙述高维空间中,点到超平面的距离之前。首先要引入向量、范数等数学知识加以描写叙述。
3)向量内积(点积或者数量积)
如果有a=[a0,a1,a2,a3,…,an],和向量b=[b0,b1,b2,b3,…,bn],则向量a与向量b之间的内积为:a.b=a0b0+a1b1+a2b2+a3b3+…+anbn=|a||b|cosθ=a*bT, θ为向量a与向量b之间的夹角,T表示矩阵转置运算.
4)向量叉积(向量叉乘)
a×b=|a||b|sinθ,θ为向量a与向量b之间的夹角。其运算结果是一个向量而不是标量。
如果a=(ax,ay,az),b=(bx,by,bz)
为了便于记忆,利用三阶行列式,写成
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
则:
a×b=(aybz-azby)i+(azbx-axbz)j+(axby-aybx)k=( aybz-azby, azbx-axbz,axby-aybx)
5)范数
定义:范数(norm)是数学中的一种基本概念。在泛函分析中,范数是一种定义在赋范线性空间中函数,满足对应条件后的函数都能够被称为范数。是具有“长度”概念的函数。在线性代数、泛函分析及相关的数学领域,范函是一个函数。其为矢量空间内的全部矢量赋予非零的正长度或大小。半范数反而能够为非零的矢量赋予零长度。
对于向量v,向量的长度(范数)为非负数
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
如果v是 实数域中的向量。
,假设v与二维平面上的点(a,b)相应,那么范数 的几何意义为二维平面上原点到点(a,b)的直线距离。
有了范数的概念,我们便能推导点到超平面的距离(SVM中的几何间隔)。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
上图所看到的,对于一个点x ,令其垂直投影到超平面上的相应的为x0 ,因为w是垂直于超平面的一个向量(即超平面的一个法向量)。 为样本x到分类间隔的距离,我们有:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
当中。
即为范数。
即为超平面的单位法向量。
我们在此将上式代入超平面方程进行推导:
由于,x0为超平面上的点,满足f(x0)=0
因此:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
又由于 ,因此:
至此,我们推导了点到超平面的几何距离。
可是,回到SVM中。因为SVM中超平面存在方向性,即在超平面的左側或者右側。其函数值存在正负。因此。我们还须要对上述的几何距离的定义加以约束。通俗点说,就是f(x)的取值有正有负,但距离必须是正的,所以。在SVM中,因为採用类别标签(+1,-1)来表示分类的类别属性。因此定义
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
因此,在SVM中,其几何间距(Geometrical Margin)
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
从这也能够看出,对于二分类问题,SVM为什么习惯将类别标签默觉得(+1。-1)。
SVM初学的更多相关文章
- SVM一点心得体会
支持向量机的学习说是刚刚开始,又不合理,只能说隔了很长的时间再看,终于在分类这块的层面上有了新的认识. 总的来说,支持向量机分为线性支持向量机和非线性支持向量机,线性支持向量机又可以分为硬间隔最大化线 ...
- 一步一步搞懂支持向量机——从牧场物语到SVM(上)
之前在数据挖掘课程上写了篇关于SVM的"科普文",尽量通俗地介绍了SVM的原理和对各公式的理解.最近给正在初学机器学习的小白室友看了一遍,他觉得"很好,看得很舒服&quo ...
- 支持向量机(SVM)的推导(线性SVM、软间隔SVM、Kernel Trick)
线性可分支持向量机 给定线性可分的训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习到的分离超平面为 \[w^{\ast }x+b^{\ast }=0\] 以及相应的决策函数 \[f\le ...
- DDD初学指南
去年就打算总结一下,结果新换的工作特别忙,就迟迟没有认真动手.主要内容是很多初学DDD甚至于学习很长时间的同学没有弄明白DDD是什么,适合什么情况.这世界上没有银弹,抛开了适合的场景孤立的去研究DDD ...
- gulp初学
原文地址:gulp初学 至于gulp与grunt的区别,用过的人都略知一二,总的来说就是2点: 1.gulp的gulpfile.js 配置简单而且更容易阅读和维护.之所以如此,是因为它们的工作方式不 ...
- 初学seaJs模块化开发,利用grunt打包,减少http请求
原文地址:初学seaJs模块化开发,利用grunt打包,减少http请求 未压缩合并的演示地址:demo2 学习seaJs的模块化开发,适合对seajs基础有所了解的同学看,目录结构 js — —di ...
- EasyPR--开发详解(6)SVM开发详解
在前面的几篇文章中,我们介绍了EasyPR中车牌定位模块的相关内容.本文开始分析车牌定位模块后续步骤的车牌判断模块.车牌判断模块是EasyPR中的基于机器学习模型的一个模块,这个模型就是作者前文中从机 ...
- 8.SVM用于多分类
从前面SVM学习中可以看出来,SVM是一种典型的两类分类器.而现实中要解决的问题,往往是多类的问题.如何由两类分类器得到多类分类器,就是一个值得研究的问题. 以文本分类为例,现成的方法有很多,其中一劳 ...
- 5.SVM核函数
核函数(Kernels) 定义 1.1 (核或正定核) 设是中的一个子集,称定义在上的函数是核函数,如果存在一个从到Hilbert空间的映射 使得对任意的,都成立.其中表示Hilbert空间中的内积. ...
随机推荐
- 仿微信小红圈消息提示App消息红圆点提示
代码: <div class="wrap"> <div class="img"></div> <div class=& ...
- Eclipse中用两个控制台测试网络通信程序
1.启动发送端和接收端程序,这时在控制台可以看到两个程序在运行,如下图. 2.这种情况下只有一个控制台窗口,不便于测试程序,于是新建一个控制台窗口,如下图. 3.这时可以发现已经有了两个控制台窗口了, ...
- C# asp.net 实现导出Excel
原文地址:传送门 这段时间用到了导出Excel的功能,这个功能还是比较常用的,我常用的有两个方法,现在整理一下,方便以后查看. 1.实现DataTable数据导出到本地,需要自己传进去导出的路径. / ...
- [实战]MVC5+EF6+MySql企业网盘实战(9)——编辑文件名
写在前面 上篇文章实现了文件的下载,本篇文章将实现编辑文件名的功能. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) ...
- Python全栈开发之2、运算符与基本数据结构
运算符 一.算数元算: 读者可以跟着我按照下面的代码重新写一遍,其中需要注意的是,使用除的话,在python3中可以直接使用,结果是4没有任何问题,但是在python2中使用的话,则不行,比如 9/2 ...
- Python类总结-ClassMethod, StaticMethod
classmethod-把classmethod装饰的方法变成为类中的方法 作用: 把classmethod装饰的方法变成为类中的方法,这个方法直接可以被类调用,不需要依托任何对象 应用场景: 当这个 ...
- Linux check whether hyperthreading is enabled or not
There parameters need to be obained: no. of physical CPU; no. of cores on each CPU; no. of all threa ...
- JAVA中常见异常小结
1.java.lang.ArithmeticException 算术运算异常,例如除数为0,所以引发了算数异常 2.Java.lang.StringIndexOutOfBoundsException: ...
- Hibernate.cfg.xml详解
在搭建Hibernate环境时需要配置Hibernate.cfg.xml配置文件,本文将想详细讲解配置文件的内容. 1.数据库连接信息 配置数据库驱动.(其中name为连接方式,我在这写jdbc的连接 ...
- [NOI2009]诗人小G --- DP + 决策单调性
[NOI2009]诗人小G 题目描述: 小G是一个出色的诗人,经常作诗自娱自乐. 但是,他一直被一件事情所困扰,那就是诗的排版问题. 一首诗包含了若干个句子,对于一些连续的短句,可以将它们用空格隔开并 ...