概述:
SVM支持向量机是最常用的机器学习分类算法之一,属于有监督学习。这种算法的本质是对数据进行二元线性分类,这种特点和其算法原理有直接关系,通俗来说SVM支持向量机在单一计算周期中只能将数据分成两类并且分隔的手段都表现为线性特征,如对于二维空间内的分隔为线,三维空间内为平面,更高维度的称为超平面。
算法原理:
1、通过散点图观察数据的分布情况,因为是一个二分类问题所以例子中的数据只有蓝色和红色两个类别
2、对数据进行二分类的话可以发现能够找到无数种分隔方式
3、既然分隔方式有无数种,SVM支持向量机算法的意义就在于通过计算来确定一个最优化的分隔方式,根据SVM算法原理中分隔的手段都表现为线性的特点,二维空间的分隔为线、三维空间的分隔为平面、更高维度的为超平面(不可见),因此算法在计算分隔方式的时候本质就是计算最优的分隔线、分隔平面和分隔超平面,以二维空间为例,计算出的分割线需要处于以下位置
4、以二维空间为例,如果分隔线处在最合适的位置,表现出的特征应该是其距离两个类别中最近的点的距离相等,即L1=L2
5、距离分隔线最近的两类中的点,即称为支持向量,如图中绿色标记的两个点即为本例子中的支持向量,可以得出结论:分隔线的确定只与支持向量有关,同其余样本无关
6、图中两条虚线间的距离为L1+L2,由于分隔线的分隔结果需要与两个支持向量的距离相等即做到L1=L2,因此计算的目的就是求出(L1+L2)/2最大值的过程
7、将分隔线以及更高维度的分隔平面和分隔超平面函数化,即分隔线的方程为Y=aX+b,需要根据第6步的原理计算出a和b以确定分隔线的方程
8、升维到平面和超平面的函数即为Y=WT*X+b,其中T是指W矩阵的转置,同理需要根据第6步的原理计算出WT和b来确定分隔平面和分隔超平面的方程
9、为了方便计算,二分类中将两个类别分别称为正例和负例,假设正例的输出值为1,负例的输出值为-1,则最佳的分隔线、分隔平面和分隔超平面的输出值为0如图所示
10、实际的数据分布不会像例子中那样能够方便的进行分类,如下图的数据无法在二维平面内进行线性分隔
11、SVM算法在这种情况下采用核函数的方法进行分类,核函数的选择有很多种,本质思维是一样的,就是将空间进行升维,原空间即本例子中的二维空间称为输入空间,升维后的空间称为特征空间,将输入空间内的数据映射到特征空间,使数据在高维度的空间内有分类的可能,在本例子中因为数据已经无法在二维空间内进行线性分隔,因此通过核函数将数据样本映射到三维空间内进行分类,如图所示
阿里云PAI平台SVM模块参数选择重点:
1、PAI平台中的SVM模块只支持二分类
2、PAI平台中的SVM模块无法使用核函数,即无法将数据映射到高维度空间进行分类
3、最重要的参数有以下几个:
positiveLabel:正例的值,是一个可选的值,如果不选择则在label的取值中随机选择一个,因为SVM只进行二分类,当两类样本的差异较大时,选择其中一个值作为正例的值,或者称为基准值能够提高分类的准确性。
positiveCost:正例权重值,即正例惩罚因子。惩罚因子可以根据需要选择所有大于0的数,越大表示整个过程中对于总误差的重视程度越高,对于减小误差的要求越高,甚至不惜使间隔减小。通俗的说法就是惩罚因子越大则对误差的容忍度越小,追求的是分类的准确性,当惩罚因子趋向于无穷时代表对误差没有任何容忍。当惩罚因子趋于0时,则不再关注分类是否正确,只要求间隔越大越好,那么算法将无法得到有意义的解且算法不会收敛,因为分类如果不需要任何准确性的话就根本无法确定间隔。
negativeCost:负例权重值,即负例惩罚因子,其意义与正例权重值一样。
epsilon:收敛系数,同样表示的是对分类误差的容忍程度,阿里云PAI平台SVM模块的默认收敛系数是0.001,代表1000个数据样本中最多只能容许有1个数据样本分类错误。