支持向量机算法是机器学习中最具有代表性的算法,属于监督学习的范畴,用来解决分类问题,最为常见的解决二分类问题。支持向量机用来解决线性分类与非线性分类问题。对于支持向量机中有很多复杂的算法理论问题,也就是数学知识,例如凸优化,最优化问题,以及拉格朗日等,如果想要完整的弄明白需要进行完整的数学推导,相对复杂。支持向量机的理论与分类核心思想还是很好理解的,如下图所示;
现在我们要对图中的红点集群与绿色点群进行分类,我们以前都学习过在两条平行线之间画平行线有无数条(好吧,应该没学过,不过是正确的),如图中所画的H1,H2,H其实都可以进行分类,但是有一个实际的问题,在实际的生产中我们要选择一个最优解,这个最优解应该尽可能有一些余量,如果红色或绿色的点再多一两个,显然边界的分类问题就会出现分类错误,所以我们自然会选择H直线(平面)作为我们最终的分类结果。支持向量机的算法思想就是找到这条分类的直线平面,如果在三维空间或者多维空间就是分类平面。
在下面说几个支持向量机的名词吗,相对来说陌生一点
(1)支持向量机中的分离超平面:把样本进行分开的平面,就是我们所要的最终结果。
(2)支持向量机中的支持超平面:就是在支持向量机中的两个极限平面。一般会与几个样本进行相交,支持超平面相交的样本就是支持向量。
支持向量机(Support Vector Machine, SVM)的目的就是找到分类的边界·(支持向量),从而得到支撑超平面,进而求得最优的分类平面。
事实上到这,如果只是想使用SVM作为工具就去可以了,现在作为sklearn这种方便的机器学习工具箱应用做的很好了。
支持向量机的应用还是很多的,在神经网络没有兴起的时候,可以说秒杀一起啊。支持向量机中分类包括硬分类型,与软分类型两种。
硬分类:分类结果中不予许出现错误的结果。
软分类:分类结果中允许一定的失误。
相对来说,第二种更符合实际中的需要,但是单单用直线怎么能完全分类,万一样本的相关系数为0,就是一团散点那种,所以除了线性分类后,又有核分类函数进行SVM,一般采用高斯核函数,poly函数等。
例如上图这种,显然不能用线性的办法去找超平面,因此需要使用核函数进行曲线的超平面寻找,相对来说公式的推导涉及解析结合,计算量很大。不过最终的模型分类效果很不错。现在的SVM还可以用来做回归预测,功能十分不错,所以支持向量机还在被使用,甚至加入神经网络的运算中。