二、非线性支持向量机
在以上二维点的实例讲解中,我们假设训练样本是线性可分的,即存在一个划分超平面能将训练样本正确分类。然而在现实任务中,原始样本空间内,也许并不存在一个能正确划分两类样本的超平面。如图 2-8-7 所示,椭圆内的点代表“+”数据,椭圆外的点代表“-”数据,而这两类数据都无法用一条直线进行分割,如图 2-8-7所示的两条直线都是失败的划分。
图 2-8-7 二维平面无法分割的样本集
那如何解决非线性可分问题呢?
对于原空间中的非线性可分问题,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。如图 2-8-8所示,可以将以上数据集的二维数据映射到一个合适的三维空间,就能找到一个合适的划分超平面。幸运的是,如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使样本可分。启发案例:一维升二维
,如果是二维不可分割,如何在三维空间中解决问题,见如下数字动态图,即可观看二维数据映射到三维空间后的各点分布。

图 2-8-8 椭圆数据二维迁三维示意图
在图 2-8-8 中,二维平面中的所有数据点被经过函数变换后映射到三维空间。可以直观地看到,映射后的数据在三维空间形成了一个明显的分隔带。见以下数字动态图,即可观看到二维数据经过核函数转换后迁移到三维空间的过程。
那么如何将低维空间数据映射到高维空间,这里我们要用到核函数(Kernel Function)。核函数是对低维的属性值进行某种计算,实现在低维下计算出高维映射后的内积结果的一种函数。简单来讲,核函数就是关于低维特征值与高维特征值之间的内积函数。
设升维函数为 ,则
这里,即为核函数。
将以上二维平面上的数据点列示如下,其中设“+”数据点为类别“0”,“-”数据点为类别“1”。升维函数 为 。升维后数据点的映射表如表 2-8-1 所示。
表 2-8-1 升维后的数据点映射表

数据升维之后,由图 2-8-8 可以清晰看出,两类数据在三维空间中形成明显的分隔带。现在的任务是找出支持向量,借助 Orange 工具预测结果,如图 2-8-9 所示。
图 2-8-9 SVM 在 Orange 中的流程
通过可视化工具可以看出,该数据集的支持向量有 5 个数据点,如图 2-8-10 和表 2-8-2所示。

图 2-8-10 椭圆数据的支持向量点
在确定了支持向量之后,就需要按照超平面的函数方程,按步骤求解出 值和 值,将以上支持向量的数据代入目标函数及约束条件,可得:
由于以上算式已经超出了手动求解的范围,可以引入求解线性规划问题的专业软件Lingo 18.0 进行求解。输入算式,解得
软件求解的结果报告如图 2-8-11 所示。
图2-8-11 支持向量点线性规划求解窗口
根据超平面 值求解公式, ,代入数值计算:

根据超平面 值求解算式: ,这里代入的值。
至此,求得此数据集的分类超平面方程为 ,超平面图示如上图 2-8-12所示。

从这个算例中可以显示支持向量机的一个重要性质:训练完成后,大部分的训练样本都不需保留,最终模型仅与支持向量有关。