SVM初学

一、            一点基础数学知识

现在硕士都快毕业了,反而将自己的许多数学知识忘的差不多了,所以,现在决心再捡起来,以补齐自己的数学短板,为以后的研究做好铺垫吧。现在结合自己学习SVM、MLC、ANN等机器学习方法来回顾以前的数学知识以及补充新的数学知识。

在SVM中,首先面临的问题是计算样本点到分类超平面的距离,现在就从最简单的点到直线的距离、点到平面的距离等内容开始回顾。

1)  点到直线的距离计算公式

假设直线L的方程为:

那么,点(x0,y0)到直线L的距离为d

如点(2,2)到直线2x-y+1=0的距离为:

几何示意图如下:

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)

为了便于记忆,利用三阶行列式,写成

则:

a×b=(aybz-azby)i+(azbx-axbz)j+(axby-aybx)k=( aybz-azby, azbx-axbz,axby-aybx)

5)范数

定义:范数(norm)是数学中的一种基本概念,在泛函分析中,范数是一种定义在赋范线性空间中函数,满足相应条件后的函数都可以被称为范数。是具有“长度”概念的函数。在线性代数、泛函分析及相关的数学领域,范函是一个函数,其为矢量空间内的所有矢量赋予非零的正长度或大小。半范数反而可以为非零的矢量赋予零长度。

对于向量v,向量的长度(范数)为非负数

假设v是 实数域中的向量,
,如果v与二维平面上的点(a,b)对应,那么范数 的几何意义为二维平面上原点到点(a,b)的直线距离。

有了范数的概念,我们便能推导点到超平面的距离(SVM中的几何间隔)。

上图所示,对于一个点x ,令其垂直投影到超平面上的对应的为x0 ,由于w是垂直于超平面的一个向量(即超平面的一个法向量), 为样本x到分类间隔的距离,我们有:

其中, 即为范数。 即为超平面的单位法向量。我们在此将上式代入超平面方程进行推导:

因为,x0为超平面上的点,满足f(x0)=0

因此:

又因为 ,因此:

至此,我们推导了点到超平面的几何距离。但是,回到SVM中,由于SVM中超平面存在方向性,即在超平面的左侧或者右侧,其函数值存在正负。因此,我们还需要对上述的几何距离的定义加以约束。通俗点说,就是f(x)的取值有正有负,但距离必须是正的,所以,在SVM中,由于采用类别标签(+1,-1)来表示分类的类别属性,因此定义

因此,在SVM中,其几何间距(Geometrical Margin)

从这也可以看出,对于二分类问题,SVM为什么习惯将类别标签默认为(+1,-1)。

时间: 2024-08-08 02:03:44

SVM初学的相关文章

关于支持向量机(SVM)一些不得不说的话

做为一种监督学习模型,支持向量机(Supprot Vector Machine)在机器学习领域内很重要.首先,SVM用来干什么?一句话将,就是分类(Classification).比较简单的分类,比如线性分类.Logistic 回归等等,得到的分类结果未必是最优的.而SVM则旨在找到一个最优的分类器.从这个目的出发,SVM提出了Soft Margin,Support Vector等等看似很直观的概念. 对支持向量机的介绍,往往从线性模型开始讲起.如果想对这个部分有一个了解,有两个英文的资料绝对值

一步一步搞懂支持向量机——从牧场物语到SVM(上)

之前在数据挖掘课程上写了篇关于SVM的"科普文",尽量通俗地介绍了SVM的原理和对各公式的理解.最近给正在初学机器学习的小白室友看了一遍,他觉得"很好,看得很舒服",认为不发到blog上太可惜=  = 由于word转blog发布好麻烦,特别是图片什么的,所以我直接把文档转图片传上来好了(懒癌晚期) 里面的许多内容都是参考网上的大牛博客而来的(已列在参考资料中),自己进行了梳理和汇总,并对一些晦涩难懂的地方进行了更进一步的理解和说明,所以写得很长,但对于小白来说仔细读

一步一步搞懂支持向量机——从牧场物语到SVM(下)

之前在数据挖掘课程上写了篇关于SVM的"科普文",尽量通俗地介绍了SVM的原理和对各公式的理解.最近给正在初学机器学习的小白室友看了一遍,他觉得"很好,看得很舒服",认为不发到blog上太可惜=  = 由于word转blog发布好麻烦,特别是图片什么的,所以我直接把文档转图片传上来好了(懒癌晚期) 里面的许多内容都是参考网上的大牛博客而来的(已列在参考资料中),自己进行了梳理和汇总,并对一些晦涩难懂的地方进行了更进一步的理解和说明,所以写得很长,但对于小白来说仔细读

支持向量机(SVM)的推导(线性SVM、软间隔SVM、Kernel Trick)

线性可分支持向量机 给定线性可分的训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习到的分离超平面为 \[w^{\ast }x+b^{\ast }=0\] 以及相应的决策函数 \[f\left( x\right) =sign\left(w^{\ast }x+b^{\ast } \right)\] 称为线性可分支持向量机 如上图所示,o和x分别代表正例和反例,此时的训练集是线性可分的,这时有许多直线能将两类数据正确划分,线性可分的SVM对应着能将两类数据正确划分且间隔最大的直线. 函数

汽车检测SIFT+BOW+SVM

整个执行过程如下:1)获取一个训练数据集. 2)创建BOW训练器并获得视觉词汇. 3)采用词汇训练SVM. 4)尝试对测试图像的图像金字塔采用滑动宽口进行检测. 5)对重叠的矩形使用非极大抑制. 6)输出结果. 该项目的结构如下: |-----car_detector|       |--detector.py| |--__init__.py| |--non_maximum.py| |--pyramid.py| |--sliding_window.py|-----car_sliding_wind

SVM与LR的比较

两种方法都是常见的分类算法,从目标函数来看,区别在于逻辑回归采用的是logistical loss,svm采用的是hinge loss.这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重.SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器.而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重.两者的根本目的都是一样的.此外,根据需要,两个方法都可以增加不同的正则化项

在opencv3中利用SVM进行图像目标检测和分类

采用鼠标事件,手动选择样本点,包括目标样本和背景样本.组成训练数据进行训练 1.主函数 #include "stdafx.h" #include "opencv2/opencv.hpp" using namespace cv; using namespace cv::ml; Mat img,image; Mat targetData, backData; bool flag = true; string wdname = "image"; voi

SVM整理

SVM整理 Last modified: 2015.9.2 1.算法总结 支持向量机是Cortes和Vapnik于1995年首先提出的,它在解决小样本,非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中. SVM方法是建立在统计学习理论的VC维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力(或称泛化能力).   1.1进一步小结

支持向量机(SVM)算法

支持向量机(support vector machine)是一种分类算法,通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本量较少的情况下,亦能获得良好统计规律的目的.通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,即支持向量机的学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解. 具体原理: 1. 在n维空间中找到一个分类超平面,将空间上的点分类.如下图是线性分类的例子. 2. 一般而言,一个点距离超平面的