最近在复习svm和感知器的时候,遇到了一些问题,令我困惑不已,说到底还是数学功底不行。
第一个问题
正负样本:
所谓正负样本,其实就是两种类别,不同的标签。并不是说这一类样本的标签值y是负的,另外一类样本的标签值正的。标签是标签,没有值,没有正负。
具体来说假如我们现在有两个类别的样本ω₁ and ω₂
我们可以给其各自类别内的样本指定标签y,ω₁内的样本标签可以是任何符号,如1 or -1 or 2 or 100
同样我们也可以指定ω₂内的样本标签,如 1 or -1 or 3 or 50,只要和ω₁中的标签符号不一样即可。
通常情况下,我们都选择标签y=1 and -1 ,来当做两类的不同标签。
注:所以说,究竟哪类样本是应该是正样本,哪类样本是负样本,其实都一样。
第二个问题
不过还是要提醒的是一些细节问题:
假设有以下情景:
ω₁内的样本认为正样本,ω₂内的样本认为是负样本,(假设线性可分),
假设分类判别面为W·X+b=0,并且:
第一种情况:
- 在分类过程中认定:f(X)=W·X+b>0的一侧是正样本,<0的一侧是负样本,
- 经过迭代训练n次后,确定了W and b
- 那么这时所确定的分类面W·X+b=0,法向量是W,记W₁=W b₁=b (为了和以下区分开)
第二种情况:
1.在分类过程中认定: f(X)=W·X+b<0的一侧是正样本, f(X)=W·X+b>0的一侧是负样本
2.经过迭代训练m次后,确定了W and b
3.那么这时所确定的分类面W·X+b=0,法向量是W,记W₂=W,b₂=b
(以上两种情况不存在任何的扰动。即两种情景完全一样,仅仅是>0、<0的不同。)
有结论:
- W₂与W₁是方向相反长度相同的两个法向量。
- b₂和b₁互为相反数。
- W₁·X+b₁=0=W₂·X+b₂=0,即两个判别面完全一致。
以下内容也是对标签的讨论:
选自作者July的博客《支持向量机通俗导论 理解 SVM 的三层境界https://blog.csdn.net/v_JULY_v/article/details/7624837
问:
有一朋友飞狗来自 Mare_Desiderii,看了上面的定义之后,问道:请教一下 SVM functional margin 为 γˆ = y(wT x + b)= yf(x) 中的 y 是只取 1 和 -1 吗?y 的唯一作用就是确保 functional margin 的非负性?
答:
与白石讨论后,我来具体回答下这个问题:你把问题搞混了。y 是个分类标签,二分时 y 就取两个值,而刚好取了 -1 和 1,只是因为用超平面分类时,不同的类中的点函数值刚好有不同的符号,所以就用符号来进行分类。
具体阐述如下:
- 对于二类问题,因为 y 只取两个值,这两个是可以任意取的,只要是取两个值就行;
- 支持向量机去求解二类问题,目标是求一个特征空间的超平面,而超平面分开的两类对应于超平面的函数值的符号是刚好相反的;
- 基于上述两种考虑,为了使问题足够简单,我们取 y 的值为 1 和 -1;
- 在取定分类标签 y 为 -1 和 1 之后,那么,一个平面正确分类样本数据,就相当于用这个平面计算的那个 y ∗ f(x) > 0;
- 而且这样一来,y ∗ f(x) 有明确的几何含义;
总而言之:你要明白,二类问题的标签 y 是可以取任意两个值的,不管取怎样的值对于相同的样本点,只要分类相同,所有的 y 的不同取值都是等价的,之所以取某些特殊的值,只是因为这样一来计算会变得方便,理解变得容易。正如朋友张磊所言,SVM 取 1 或 -1 的历史原因是因为感知器最初的定义,实际取值可以任意,总能明确表示输入样本是否被误分,但是用 +1、-1 可以起码可以是问题描述简单化、式子表示简洁化、几何意义明确化。举个例子,如你要是取 y 为 1 和 2,比如原来取 -1 的现在取 1,原来取 1 的现在取 2 ,这样一来,分类正确的判定标准变为 (y 1.5)f(x) > 0 ,故取 1 和 -1 只是为了
计算简单方便,没有实质变化,更非一定必须取一正一负。