跳转至

课本三例题:例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\),试求最大间隔分离超平面。

方法套路(原始法三步)

  1. 套目标 + 抄约束:目标永远是 \(\min\frac12\|w\|^2\);约束逐个样本写 \(y_i(w\cdot x_i+b)\geqslant1\)把每个点的坐标和 \(y_i\) 代进去(正例 \(y=+1\) 直接抄,负例 \(y=-1\) 整行变号)。
  2. 解这个二次规划(点少时可直接观察/试边界)求出 \(w,b\)
  3. 写超平面 + 标支持向量:让约束取等号 \(=1\) 的点就是支持向量。

⭐ 手算到底怎么解出来的(课本只甩答案,没演示——这三点是关键)

课本直接写"求得 \(w_1=w_2=\tfrac12,b=-2\)",但手算时要靠下面三步才凑得出来:

  1. 负例代入要变号:约束 \(y_i(w\cdot x_i+b)\geqslant1\) 里负例 \(y_i=-1\)整行连同 \(b\) 一起反号。本题 \(x_3=(1,1)\) 给出 \(-(w_1+w_2+b)\geqslant1\)
  2. "在边界上"只给部分方程,不够,要靠目标补足:支持向量在间隔边界上 → 取等号 $\(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\) 钉死的那一刀。
  3. 求出 \(w\) 再回代求 \(b\):把 \(w_1=w_2=\tfrac12\) 代回任一边界方程 \(w_1+w_2+b=-1\)\(1+b=-1\)\(b=-2\)

💡 一句话:边界方程定方向、目标函数定大小、回代定截距。这也是为什么 SVM 不能只靠"支持向量在边界上"就解出来——少了"间隔最大"这个目标,解是不唯一的。

按算法 7.1 构造约束最优化问题:

\[\min_{w,b}\ \frac12(w_1^2+w_2^2)$$ $$\text{s.t.}\quad 3w_1+3w_2+b\geqslant1,\quad 4w_1+3w_2+b\geqslant1,\quad -w_1-w_2-b\geqslant1\]

👀 注意第三行:负例 \(x_3=(1,1)\)\(y_3=-1\),整条约束 \(-(w_1+w_2+b)\geqslant1\) 全变号。

求得解 \(w_1=w_2=\dfrac12,\ b=-2\)。最大间隔分离超平面:

\[\frac12x^{(1)}+\frac12x^{(2)}-2=0\]

其中 \(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 求线性可分支持向量机。

方法套路(对偶法五步)⭐ 考试最常考

  1. 算内积、列对偶目标:套 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\) 的内积表)。
  2. 写约束\(\sum_i\alpha_iy_i=0\)\(\alpha_i\geqslant0\)
  3. 降元:用约束把一个 \(\alpha\) 替换掉(如 \(\alpha_3=\alpha_1+\alpha_2\)),代回目标变成两元函数 \(s(\alpha_1,\alpha_2)\)
  4. 求极值 + 检查边界:偏导置 0 求驻点;若驻点违反 \(\alpha_i\geqslant0\),最小值必在边界(令某个 \(\alpha=0\) 逐个比较)。← 本题最容易踩的坑。
  5. 回代求 \(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)\)

对偶问题为

\[\min_{\alpha}\ \frac12\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_j y_i y_j(x_i\cdot x_j)-\sum_{i=1}^N\alpha_i$$ $$=\frac12\big(18\alpha_1^2+25\alpha_2^2+2\alpha_3^2+42\alpha_1\alpha_2-12\alpha_1\alpha_3-14\alpha_2\alpha_3\big)-\alpha_1-\alpha_2-\alpha_3\]
\[\text{s.t.}\quad \alpha_1+\alpha_2-\alpha_3=0,\qquad \alpha_i\geqslant0,\ i=1,2,3\]

\(\alpha_3=\alpha_1+\alpha_2\) 代入目标函数,记

\[s(\alpha_1,\alpha_2)=4\alpha_1^2+\frac{13}{2}\alpha_2^2+10\alpha_1\alpha_2-2\alpha_1-2\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\) 是支持向量。回代:

\[w_1^*=w_2^*=\frac12,\qquad b^*=-2\]

分离超平面 \(\dfrac12x^{(1)}+\dfrac12x^{(2)}-2=0\),决策函数

\[f(x)=\operatorname{sign}\!\left(\frac12x^{(1)}+\frac12x^{(2)}-2\right)\]

自检点: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\)

方法套路(核映射两步)

  1. 按维度展开最外层平方:先令 \(x=(x^{(1)},x^{(2)})^T\),把 \(K(x,z)\) 平方/立方硬展开。
  2. 凑成"每项 = x 的某表达式 × z 的同款表达式":让展开式的每一项都长成 \((\text{含 }x)\times(\text{同款含 }z)\)
  3. 逐项配 \(\phi\)——系数 \(c\) 就给 \(\phi\) 分量乘 \(\sqrt c\)\(\phi\) 的每个分量,要让"该分量 × 自己"等于展开式里对应那一项。
  4. 系数 1 的项(如 \((x^{(1)})^2(z^{(1)})^2\))→ \(\phi\) 分量取 \((x^{(1)})^2\),因为 \(1\cdot1\) 就是 1,不用动。
  5. 系数 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)}\) 的原因。

  1. 强调 \(\phi\) 不唯一:同一个 \(K\) 可以有多种 \(\phi\)、甚至不同维度的特征空间。

\(\mathcal H=\mathbf R^3\),记 \(x=(x^{(1)},x^{(2)})^T\)\(z=(z^{(1)},z^{(2)})^T\)。由于

\[(x\cdot z)^2=(x^{(1)}z^{(1)}+x^{(2)}z^{(2)})^2=(x^{(1)}z^{(1)})^2+2x^{(1)}z^{(1)}x^{(2)}z^{(2)}+(x^{(2)}z^{(2)})^2\]

可取映射

\[\phi(x)=\big((x^{(1)})^2,\ \sqrt2\,x^{(1)}x^{(2)},\ (x^{(2)})^2\big)^T\]

易验证 \(\phi(x)\cdot\phi(z)=(x\cdot z)^2=K(x,z)\)

φ 不唯一——仍取 \(\mathcal H=\mathbf R^3\) 也可用

\[\phi(x)=\frac{1}{\sqrt2}\big((x^{(1)})^2-(x^{(2)})^2,\ 2x^{(1)}x^{(2)},\ (x^{(1)})^2+(x^{(2)})^2\big)^T\]

或取 \(\mathcal H=\mathbf R^4\)

\[\phi(x)=\big((x^{(1)})^2,\ x^{(1)}x^{(2)},\ x^{(1)}x^{(2)},\ (x^{(2)})^2\big)^T\]

三者都满足 \(\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\) 不唯一。