1. Support Vector Machine
了解SVM,就要知道,但是SVM现在已经被神经网络的风头所盖过,但是SVM依然活跃于各大领域。
1.SVM分类器是如何工作?
2.SVM分类器与区分度较小的数据类型?
3.计算复杂度怎么样?
1. SVM是如何工作的?
SVM的分类方法,是在这组分布中找出一个超平面作为决策边界,使模型在数据上的分类误差尽可能接近于0,尤其在未知数据集上泛化误差尽可能的小。这里需要先引入一个概念“超平面”,超平面是一个空间的子空间。由于数据集在高维空间(三维)上看是一个空间可变数据集,那么超平面可以认为是二维的平面,若数据是二维的,超平面则是一条一维的直线。
对于二维空间分布,在二分类问题中,超平面可以认为是数据的“决策边界”,决策边界的一侧所有点分类为属于一个类,另一侧所有点分类属于另一个类。那么二分类问题即可以变成数据与决策边界的相对位置。我们要找的一个重点是在训练数据上表现优秀的决策边界,同时在测试数据上也表现优秀的决策边界,对于现有的数据集而言,我们有B1与B2两条可能的决策边界,将决策边界向两边平移,那么就可以得到4条线,每对b11与b12中间的距离,叫做B1(B2)这条决策边界的边际(margin),通常记为d。
接着引入和原本数据集相同分布的测试样本(红色所示),那么可以发现那条决策边界更好,对于这样的测试,往往来说是无意义的,浪费算力的,决策边际这一效应可以使用结构风险最小化定律来证明(SRM),边际较大,泛化能力越强。
SVM就是通过找出边际最大的决策边界,来对数据进行分类的过程。
2. 问题与定义
SVM就是“找出边际最大的决策边界”,这是一个最优化的问题,最优化的问题往往和损失函数联系在一起。那么SVM的损失函数是什么呢?
假设数据中总共有N个训练样本,每个训练样本i可以被表示为(xi,yi)(i=1,2,...,N),其中数据xi是(x1i,x2i,...,xni)这样的一个特征向量,
3. SVM推导过程
3.1 点到平面的距离
在计算的过程,我们需要计算哪个点离我这个面是最近的,对于平面来说,是wx + b=0,当前x到平面的距离是dist(x,h),计算时,先取平面上的两个点x',x'',可以算出 :
(1)wx' = -b
(2)wx'' = -b
联立方程(1)与(2)得到 w (x'' - x') = 0,那么由于我们所需要计算的点到直线的距离是(x - x')这个向量垂直方向上的投影,根据这个投影我可以算出这个投影与其垂直方向的单位向量即可,那么我们就可以找到点到直线的距离,得到下面的公式: