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空间中的内积. ...
随机推荐
- 【LOJ】 #2009. 「SCOI2015」小凸玩密室
题解 神仙dp啊QAQ 我们发现我们需要枚举一个起点,遍历完它所有的儿子然后向上爬 设\(f[i][j]\)表示第i个点的子树全部处理完之后到达i深度为j的祖先的兄弟处 我们只需要对叶子节点和只有一个 ...
- Redis实战(一)
一.准备 Redis 是一个开源的使用ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库.Redis的出现,很大程度补偿了memcached这类key/valu ...
- AngularJS核心01:如何启动
启动 下面解释了AngularJS是如何运行下面Html的(用一张图和一个例子来解释): 浏览器载入HTML,然后把它解析成DOM. 浏览器载入angular.js脚本. AngularJS等到DOM ...
- linux关闭地址空间随机化(ASLR)
转:http://www.xuebuyuan.com/1571079.html 确认ASLR是否已经被打开,"2"表示已经打开 shanks@shanks-ubuntu:/home ...
- 使用Jedis
前言 借助Jedis可以在Java上操作Redis. Jedis 到https://mvnrepository.com/去找jar包下载即可. 如果是maven项目: <!-- https:// ...
- python计数器Count
python计数器Count # -*- coding:utf-8 -*- """ python计数器Counter 需导入模块collections "&qu ...
- 【最小割】BZOJ3894-文理分科
[题目大意] 给定一个m*n的矩阵,每个格子的人可以学文或者学理,学文和学理各有一个满意度,如果以某人为中心的十字内所有人都学文或者学理还会得到一个额外满意度,求最大满意度之和. [思路] 发现这道题 ...
- Unity JsonFx 插件使用
在Unity中使用 JsonFx 插件笔记(提示:以下在 Unity3D v5.4.0 版本 Win 平台下测试成功) 下载 JsonFx 插件注意:JsonFx 插件其实就是一个 dll 文件(如果 ...
- servlet中请求转发(forword)和重定向(redirect)的区别
servlet请求转发与重定向的区别: request.setAttribute("test","hello"); request.getRequestDisp ...
- HDU 5653 Bomber Man wants to bomb an Array. dp
Bomber Man wants to bomb an Array. 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5653 Description ...