学习SVM时,关于类别选择问题陷入了一个误区,现在把这个过程记录下来,希望有同样疑问的童鞋也能注意一下。
如图1所示,直线方程为,设直线上方的"o"为正例,直线下方的"+"为负例。当样本点被超平面正确分类时,满足条件,但是这个前提是假设直线上方的点为正例,下方的点为负例。
现在换一种打标签的方式,现在我设直线下方的点为正例,上方的点为负例,显然(比如说取直线下方的点,代入直线方程得,而此时,所以),也就是说,即使我把数据点正确分类了,但是此时满足的是而不是。那岂不是说明,如果我这样打标签的话,SVM理论就不成立了?
答案当然不是,但看似这样想也没错,问题究竟出在哪呢?
这是因为我们先入为主了,想像一下,如果让你自己解决这个分类问题,你怎么解决?现在已知的是数据点和它对应的标签,但你并不知道这条直线方程,好,现在我们的目标当然是求这个直线方程。
(1)假设直线上方数据点是正例,下方的是负例,根据SVM算法,我们求出直线方程是,此时数据点被正确分类,满足。
(2)再假设直线上方数据点是负例,下方的是正例,根据SVM算法,我们求出直线方程是,注意,现在的直线方程虽然与是一样的,但却反映了不同的问题,此时数据点被正确分类,满足。(读者可以把正例点代入验证一下。)
最后再举一个简单的例子来阐述一下这个问题:
引用李航老师《统计学习方法》中的例7.1:已知一个如图1所示的训练数据集,其正例点是,,负例点是,试求最大间隔分离超平面。
解:
根据训练数据集构造约束优化问题:
解得:,,所以最大间隔分离超平面为:。数据点被正确分类。
现在把题目改动一下,设,为负例点,为正例点,则优化问题变成:
解得:,,所以最大间隔分离超平面为:。数据点被正确分类。
也就是说,对于二分类问题,不管选哪一类为正例,哪一类为负例,都不影响分类的正确性,分离超平面也是一样的。不同的是,一个超平面为,另一个超平面为,虽然表示的都是同一个超平面,但本质是不同的。这个差别保证了超平面一侧的点代入后的符号与相应的标签y是一致的。