课本三例题:例7.1(原始法)· 例7.2(对偶法)· 例7.3(核映射)¶
- 章节:第7章 · 支持向量机
- 出处:李航《统计学习方法》课本原文(例 7.1 / 7.2 / 7.3,均带完整解答)。
- 为什么单独成篇:这是书上仅有的三道带解答的 SVM 例题。7.1 和 7.2 是同一份数据的两种解法(原始问题 vs 对偶问题),结果必须一致——是"线性可分 SVM 计算大题"的标准模板;7.3 是核映射构造题。重点记方法/套路,不是记数字。
例 7.1(原始问题直接解)¶
原题¶
正例点 \(x_1=(3,3)^T,\ x_2=(4,3)^T\),负例点 \(x_3=(1,1)^T\),试求最大间隔分离超平面。
方法套路(原始法三步)¶
- 套目标 + 抄约束:目标永远是 \(\min\frac12\|w\|^2\);约束逐个样本写 \(y_i(w\cdot x_i+b)\geqslant1\),把每个点的坐标和 \(y_i\) 代进去(正例 \(y=+1\) 直接抄,负例 \(y=-1\) 整行变号)。
- 解这个二次规划(点少时可直接观察/试边界)求出 \(w,b\)。
- 写超平面 + 标支持向量:让约束取等号 \(=1\) 的点就是支持向量。
⭐ 手算到底怎么解出来的(课本只甩答案,没演示——这三点是关键)¶
课本直接写"求得 \(w_1=w_2=\tfrac12,b=-2\)",但手算时要靠下面三步才凑得出来:
- 负例代入要变号:约束 \(y_i(w\cdot x_i+b)\geqslant1\) 里负例 \(y_i=-1\),整行连同 \(b\) 一起反号。本题 \(x_3=(1,1)\) 给出 \(-(w_1+w_2+b)\geqslant1\)。
- "在边界上"只给部分方程,不够,要靠目标补足:支持向量在间隔边界上 → 取等号 $\(x_1:\ 3w_1+3w_2+b=1,\qquad x_3:\ w_1+w_2+b=-1\)$ 2 条方程、3 个未知数,解不出来。两式相减消 \(b\) 得 \(w_1+w_2=1\),还差一个条件——这时搬出目标 \(\min(w_1^2+w_2^2)\)(即间隔最大 / \(\|w\|\) 最小)受 \(w_1+w_2=1\) 约束,对称性给出 \(w_1=w_2=\tfrac12\)。目标函数才是把 \(w\) 钉死的那一刀。
- 求出 \(w\) 再回代求 \(b\):把 \(w_1=w_2=\tfrac12\) 代回任一边界方程 \(w_1+w_2+b=-1\) → \(1+b=-1\) → \(b=-2\)。
💡 一句话:边界方程定方向、目标函数定大小、回代定截距。这也是为什么 SVM 不能只靠"支持向量在边界上"就解出来——少了"间隔最大"这个目标,解是不唯一的。
解¶
按算法 7.1 构造约束最优化问题:
👀 注意第三行:负例 \(x_3=(1,1)\) 因 \(y_3=-1\),整条约束 \(-(w_1+w_2+b)\geqslant1\) 全变号。
求得解 \(w_1=w_2=\dfrac12,\ b=-2\)。最大间隔分离超平面:
其中 \(x_1=(3,3)^T\) 与 \(x_3=(1,1)^T\) 为支持向量。
例 7.2(对偶问题解,同一数据)¶
原题¶
训练数据与例 7.1 相同(正例 \(x_1=(3,3)^T,x_2=(4,3)^T\),负例 \(x_3=(1,1)^T\)),试用算法 7.2 求线性可分支持向量机。
方法套路(对偶法五步)⭐ 考试最常考¶
- 算内积、列对偶目标:套 min 版对偶式 \(\dfrac12\sum_i\sum_j\alpha_i\alpha_j y_iy_j(x_i\cdot x_j)-\sum_i\alpha_i\),逐项把 \(y_iy_j(x_i\cdot x_j)\) 算成数字(这一步就是在填一张 \(N\times N\) 的内积表)。
- 写约束:\(\sum_i\alpha_iy_i=0\),\(\alpha_i\geqslant0\)。
- 降元:用约束把一个 \(\alpha\) 替换掉(如 \(\alpha_3=\alpha_1+\alpha_2\)),代回目标变成两元函数 \(s(\alpha_1,\alpha_2)\)。
- 求极值 + 检查边界:偏导置 0 求驻点;若驻点违反 \(\alpha_i\geqslant0\),最小值必在边界(令某个 \(\alpha=0\) 逐个比较)。← 本题最容易踩的坑。
- 回代求 \(w^*,b^*\):\(w^*=\sum_i\alpha_i^*y_ix_i\);\(b^*\) 用任一支持向量(\(\alpha_i^*>0\))代 \(y_j-\sum_i\alpha_i^*y_i(x_i\cdot x_j)\)。
解¶
对偶问题为
将 \(\alpha_3=\alpha_1+\alpha_2\) 代入目标函数,记
对 \(\alpha_1,\alpha_2\) 求偏导并令为 0,知 \(s\) 在 \(\left(\tfrac32,-1\right)^T\) 取极值,但该点不满足 \(\alpha_2\geqslant0\),故最小值在边界上取:
- 当 \(\alpha_1=0\):最小值 \(s\!\left(0,\tfrac{2}{13}\right)=-\tfrac{2}{13}\);
- 当 \(\alpha_2=0\):最小值 \(s\!\left(\tfrac14,0\right)=-\tfrac14\)。
比较得在 \(\alpha_1=\tfrac14,\ \alpha_2=0\) 处最小,\(\alpha_3=\alpha_1+\alpha_2=\tfrac14\)。
故 \(\alpha_1^*=\alpha_3^*=\dfrac14\),对应实例 \(x_1,x_3\) 是支持向量。回代:
分离超平面 \(\dfrac12x^{(1)}+\dfrac12x^{(2)}-2=0\),决策函数
✅ 自检点:7.2 的 \(w^*,b^*\) 必须和 7.1 一模一样——两种解法解同一个问题,对不上就是哪步算错了。
例 7.3(核函数 → 找特征空间与映射 φ)¶
原题¶
假设输入空间是 \(\mathbf R^2\),核函数是 \(K(x,z)=(x\cdot z)^2\),试找出其相关的特征空间 \(\mathcal H\) 和映射 \(\phi(x):\mathbf R^2\to\mathcal H\)。
方法套路(核映射两步)¶
- 按维度展开最外层平方:先令 \(x=(x^{(1)},x^{(2)})^T\),把 \(K(x,z)\) 平方/立方硬展开。
- 凑成"每项 = x 的某表达式 × z 的同款表达式":让展开式的每一项都长成 \((\text{含 }x)\times(\text{同款含 }z)\)。
- 逐项配 \(\phi\)——系数 \(c\) 就给 \(\phi\) 分量乘 \(\sqrt c\):\(\phi\) 的每个分量,要让"该分量 × 自己"等于展开式里对应那一项。
- 系数 1 的项(如 \((x^{(1)})^2(z^{(1)})^2\))→ \(\phi\) 分量取 \((x^{(1)})^2\),因为 \(1\cdot1\) 就是 1,不用动。
- 系数 2 的项(如 \(2x^{(1)}x^{(2)}z^{(1)}z^{(2)}\))→ \(\phi\) 分量取 \(\sqrt2\,x^{(1)}x^{(2)}\),因为 \(\sqrt2\cdot\sqrt2=2\) 才还原得出系数 2。
⚠️ 不是"取平方根/取一半",而是"把系数开根号塞进 \(\phi\) 分量":展开式里某项系数是 \(c\),对应 \(\phi\) 分量前面就乘 \(\sqrt c\)(系数 1→不变,系数 2→\(\sqrt2\))。这才是例 7.3 交叉项写成 \(\sqrt2\,x^{(1)}x^{(2)}\) 的原因。
- 强调 \(\phi\) 不唯一:同一个 \(K\) 可以有多种 \(\phi\)、甚至不同维度的特征空间。
解¶
取 \(\mathcal H=\mathbf R^3\),记 \(x=(x^{(1)},x^{(2)})^T\),\(z=(z^{(1)},z^{(2)})^T\)。由于
可取映射
易验证 \(\phi(x)\cdot\phi(z)=(x\cdot z)^2=K(x,z)\)。
φ 不唯一——仍取 \(\mathcal H=\mathbf R^3\) 也可用
或取 \(\mathcal H=\mathbf R^4\):
三者都满足 \(\phi(x)\cdot\phi(z)=K(x,z)\)。
一句话记忆¶
- 7.1 原始法:抄目标 \(\min\frac12\|w\|^2\) + 逐点抄约束(负例变号)→ 解 → 标支持向量。
- 7.2 对偶法:填内积表 → 降元 → 求极值记得查边界 → 回代 \(w^*,b^*\);结果必须等于 7.1。
- 7.3 核映射:按维度展开核函数 → 凑成"x 表达式 × z 同款" → 逐项配 \(\phi\),系数 \(c\) 就给 \(\phi\) 分量乘 \(\sqrt c\)(1→不变,2→\(\sqrt2\))→ \(\phi\) 不唯一。