支持向量机(SVM)
一、支持向量机核心目标与基本概念
1. 核心需求
在样本空间里找到一个 “划分超平面”,把不同类别的样本明确分开,这是支持向量机解决分类问题的核心目的。
2. 理想超平面的标准
理想的划分超平面对训练样本的 “局部扰动容忍性” 最好 —— 也就是说,哪怕样本位置有微小变化,分类结果也能保持稳定,这种稳定性是判断超平面好不好的关键。
3. 关键概念
- 间隔(Margin):指样本到超平面的距离。支持向量机的优化目标是 “最大化间隔”,因为间隔越大,超平面对局部扰动的容忍性越强。
- 支持向量:距离超平面最近的样本点。这些点决定了间隔的大小,是构建超平面的核心 —— 其他离超平面远的样本点,对超平面的位置和间隔没有影响。
- 超平面定义:超平面是 n 维空间映射到 n-1 维空间的子空间,由一个 n 维向量(通常用字母 w 表示)和一个实数(通常用字母 b 表示)共同定义,它的方程可以描述为:w 的转置乘以 x,再加上 b,结果等于 0。
- 二维空间中,超平面就是 “直线”(比如常见的 Ax + By + C = 0 这种形式);
- 三维空间中,超平面就是 “平面”;
- n 维空间中,超平面是 n-1 维的子空间。
二、超平面相关计算
1. 点到超平面的距离
(1)二维空间特例
如果有一个点(坐标用 x 和 y 表示),以及一条直线(方程是 Ax + By + C = 0),那么这个点到这条直线的距离,计算方式是:先算 Ax + By + C 的绝对值,再除以根号下(A 的平方加上 B 的平方)。
(2)n 维空间推广
如果扩展到 n 维空间,有一个点(用 x 表示)和一个超平面(方程是 w 的转置乘以 x,再加上 b,结果等于 0),那么点到超平面的距离,计算方式是:先算 w 的转置乘以 x 再加上 b 的绝对值,再除以根号下(w 的转置乘以 w)。
三、SVM 的优化目标与约束条件
1. 优化目标推导
支持向量机的核心是最大化间隔(Margin)。而间隔的大小和 “样本到超平面的最小距离”(用 d 表示)有关,具体来说,间隔等于 2 乘以 d。所以 “最大化间隔” 其实就等价于 “最大化这个最小距离 d”。
2. 样本标签与决策方程
- 样本标签:为了方便后续计算,我们给正例样本的标签设为 + 1,负例样本的标签设为 - 1(和传统的 0-1 标签不同,这种设定能简化推导过程)。
- 决策方程:判断样本类别的方程可以表示为:y (x) 等于 w 的转置乘以 Φ(x),再加上 b。这里的 Φ(x) 是对原始数据做的 “特征变换”—— 后面会讲,它主要用来解决 “低维空间里样本分不开” 的问题。
3. 约束条件与目标函数转化
(1)约束条件
为了保证分类正确,我们要求所有样本都满足:第 i 个样本的标签 y_i,乘以(w 的转置乘以 Φ(x_i) 再加上 b)的结果,大于等于 1。这里的 x_i 是第 i 个样本的数据,这个条件是通过对 w 和 b 进行 “放缩” 得到的,目的是让离超平面最近的样本刚好满足等号。
(2)目标函数转化
前面说过,最大化间隔等价于最大化最小距离 d,而 d 的计算式里有 “根号下(w 的转置乘以 w)” 作为分母,所以 “最大化 d” 其实等价于 “最小化根号下(w 的转置乘以 w)”。为了方便求导计算,我们可以进一步转化为 “最小化(1/2 乘以 w 的转置乘以 w)”—— 这里的 1/2 只是系数,不影响最终找到极值的位置。
综上,支持向量机的优化问题最终变成:在 “所有样本满足 y_i(w 的转置乘以 Φ(x_i) + b)≥1” 这个约束条件下,找到 w 和 b,使得(1/2 乘以 w 的转置乘以 w)的结果最小。
四、SVM 的求解方法(拉格朗日乘子法)
1. 拉格朗日函数构造
对于这种 “带约束的优化问题”,我们可以引入拉格朗日乘子(每个样本对应一个乘子,用 α_i 表示,且 α_i≥0),构造出拉格朗日函数。这个函数的形式是:(1/2 乘以 w 的转置乘以 w),减去求和项(求和项是每个 α_i 乘以(y_i(w 的转置乘以 Φ(x_i) + b) - 1))。
2. 对偶问题转化
利用 “对偶性质”,我们可以把原来 “先对 w 和 b 求最小、再对 α 求最大” 的问题,转化成 “先对 w 和 b 求最小、再对 α 求最大” 的问题(顺序调整后更易求解)。接下来,我们对 w 和 b 分别求偏导数,并让偏导数等于 0,得到两个关键条件:
- 对 w 求偏导后得到:w 等于求和项(每个 α_i 乘以 y_i 再乘以 Φ(x_i))—— 这说明 w 是由支持向量对应的 α_i、y_i 和 Φ(x_i) 共同决定的;
- 对 b 求偏导后得到:求和项(每个 α_i 乘以 y_i)等于 0—— 这是求解 b 的重要依据。
3. 代入化简与最终优化问题
把上面两个条件代入原来的拉格朗日函数,化简后可以得到新的优化目标:最大化求和项(每个 α_i),减去(1/2 乘以求和项(每个 α_i 乘以 α_j 乘以 y_i 乘以 y_j 再乘以(Φ(x_i) 的转置乘以 Φ(x_j))))。
同时,还需要满足两个约束条件:一是 “所有 α_i 乘以 y_i 的和等于 0”,二是 “每个 α_i 都大于等于 0”。
五、SVM 的扩展:软间隔与核变换
1. 软间隔(解决噪音样本问题)
(1)问题背景
之前的方法要求 “所有样本都被超平面正确分开”,这个要求太严格了 —— 如果数据里有噪音样本(异常点),强行分开会导致超平面的间隔变小,模型稳定性变差。所以我们需要 “放松约束”,引入 “松弛因子”(用 ξ_i 表示,ξ_i≥0)。
(2)调整后的约束与目标函数
- 约束条件调整为:y_i(w 的转置乘以 x_i + b)≥1 - ξ_i—— 允许部分样本不满足 “严格分类”,ξ_i 越大,说明该样本偏离理想分类的程度越大。
- 目标函数调整为:最小化(1/2 乘以 w 的转置乘以 w)加上(C 乘以求和项(每个 ξ_i))。这里的 C 是一个需要人工设定的参数,作用是平衡 “间隔大小” 和 “分类错误率”:
- 当 C 很大时:意味着对分类错误的容忍度低,几乎不允许有错误样本;
- 当 C 很小时:意味着对分类错误的容忍度高,可以接受更多错误样本,优先保证间隔大。
(3)软间隔的拉格朗日求解
引入拉格朗日乘子 μ_i(μ_i≥0)后,构造新的拉格朗日函数,求解后会得到调整后的约束:每个 α_i 的取值范围在 0 到 C 之间(原来只是 α_i≥0),其他求解步骤和硬间隔类似。
2. 核变换(解决低维不可分问题)
(1)问题背景
有些样本在低维空间里无法用超平面分开(比如二维空间里的 “环形分布” 样本),这时候需要把数据 “映射到更高维的空间”,让样本在高维空间里变得可分。
(2)核函数的作用
直接把数据映射到高维空间会有 “维度灾难”—— 比如 3 维数据映射到 9 维,计算量会大幅增加。而 “核函数”(用 K (x_i, x_j) 表示)可以避免直接计算高维空间的内积,直接在低维空间里计算出 “高维空间内积的结果”,极大简化计算。
(3)常见核函数示例
- 线性核函数:适用于本身线性可分的数据,形式是 K (x_i, x_j) 等于 x_i 的转置乘以 x_j(本质就是不做高维映射,直接用原始数据计算)。
- 高斯核函数:适用于非线性可分的数据,能把数据映射到无穷维空间,灵活性强。它的形式通过指数函数表示,可根据数据分布调整参数,适配不同的非线性场景。
(4)核函数应用示例
比如 3 维数据 x 和 y,若直接映射到 9 维空间计算内积,需要先展开 9 维向量再相乘;但用 “(x 和 y 的内积)的平方” 这个核函数,直接在 3 维空间计算 x 和 y 的内积,再平方,就能得到和 9 维空间内积相同的结果,计算量大幅减少。
六、SVM 求解实例梳理
以简单数据集为例,求解步骤大致如下:
- 根据样本数据和标签,列出初始的优化目标(含 α_i 的二次函数);
- 利用 “求和项(α_i 乘以 y_i)等于 0” 的约束,化简目标函数(比如用 α_3 表示 α_1 和 α_2);
- 对化简后的变量(如 α_1、α_2)求偏导,令偏导数为 0,求解 α_i 的值;
- 检查求解结果是否满足 “α_i≥0”(硬间隔)或 “0≤α_i≤C”(软间隔),若不满足则在边界上寻找最优解(如 α_1=0 或 α_2=0);
- 把满足条件的 α_i 代入 “w 等于求和项(α_i 乘以 y_i 乘以 Φ(x_i))”,计算 w;
- 选择支持向量(α_i>0 的样本),代入 “y_i(w 的转置乘以 x_i + b)=1”,求解 b;
- 最终得到超平面方程(含 w 和 b),用于后续分类预测。