支持向量机以前很火了。 现在风头被深度学习给占据了。
支持向量机的相关理论非常的beautiful and elegant, 最后将学习的问题转化成了一个凸优化的问题, 确保了最优解的存在。 并且可以利用kernels解决了样本的非线性可分问题。 这也是SVM的优点吧。
SVM是用于分类的一种强大的工具。
给定一个具有m个训练样本的训练样本集(training set):
其中:
,
也就是说x 是我们的n维的输入特征向量, y是样本的labels, 可以取 +1或者-1。 note: 这里先考虑2-class classification的问题。
现在的目的就是找出一个hyperplane, 能够使得训练集合中的正负样本尽可能的(即margine 达到最大)分割开来。
所谓的margine, 就是样本距离那个用hyperplane 定义的decision boundary的距离。 其距离的定义如下:
由于我们要保证margine是一个正数值, 所以我们乘以其类标号yi(取值只有+1, -1两种情况)。
我们希望对于所有的训练样本, 最终得到的margin是越大(即距离decision boundary 越远越好), 我们对于样本类标号的分割就更加自信。
然而单纯的使用作为计算我们的margin是有问题的, 因为这会导致对于margin的随意性。 这种随意性源于如下:
假如我们的decision boundary的函数如下:
我们知道将上述等式左右两边同时乘以一个常数a, 那么等式依然成立, 这个新的等式仍然定义着同样的一个hyperplane, 但是问题来了, 我们在计算训练样本的margin的时候, 这个数值都变成了原来的a倍了。 这种随意的margin是我们无法掌控的。
所以改进办法就是采用平面的方向向量进行归一化。 这样我们得到的margin也被称为geometric margin。 如下图:
具体推导忽略。 这大概是高中数学知识, 求某一个点到一条线的几何距离。直接将点的坐标带入到直线中得到一个值, 对这个值取绝对值, 然后用指向的向量qui求得的值进行归一化了。
当yi= -1的时候, 带入求出的值是一个负数, 所以乘以yi就变成了正数。 这就是我们的几何距离了。
现在我们的任务就是maximize这个minimum的margine就可以了(minimum的margin最大化了, 当然就是最大化所有的训练样本的marigin了, 这些距离decision boundary 最近的样本就是我们后面调到的support vectors(支持向量))。<