【机器学习|学习笔记】详解支持向量机(Support Vector Machine,SVM)之为什么要将求解SVM的原始问题转换为对偶问题?
·
【机器学习|学习笔记】详解支持向量机(Support Vector Machine,SVM)之为什么要将求解SVM的原始问题转换为对偶问题?
【机器学习|学习笔记】详解支持向量机(Support Vector Machine,SVM)之为什么要将求解SVM的原始问题转换为对偶问题?
文章目录
欢迎铁子们点赞、关注、收藏!
祝大家逢考必过!逢投必中!上岸上岸上岸!upupup
大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文。详细信息可关注VX “
学术会议小灵通”或参考学术信息专栏:https://blog.csdn.net/2401_89898861/article/details/148514108
前言
- 这是一个机器学习与优化理论交叉的重要问题:为什么支持向量机(SVM)在训练时,往往将原始问题(Primal)转换为对偶问题(Dual)来求解?这与核函数、稀疏性、高效计算等密切相关。
✅ 一、先明确:SVM 的原始问题(Primal Form)
对硬间隔线性可分的 SVM,目标是最大化间隔,相当于最小化:
其中:
- w w w:超平面的法向量
- b b b:偏置
- y i ∈ − 1 , 1 y_i∈{−1,1} yi∈−1,1, x i ∈ R d x_i∈R^d xi∈Rd
❓ 为什么不直接解 Primal?为什么要转化为 Dual?
✅ 二、转化为对偶问题的三个动机
🎯 1. 便于引入核函数(Kernel Trick)
- 原始问题中的约束涉及 w T x w^Tx wTx,无法使用核技巧。
- 而对偶问题中,只涉及样本间 点积:

- 这正好适配核函数 K ( x i , x j ) K(x_i,x_j) K(xi,xj),无需显式构造映射 ϕ ( x ) ϕ(x) ϕ(x)。
🎯 2. 满足稀疏性 —— 支持向量理论核心
对偶变量 α i α_i αi中,大部分为 0,只有支持向量的 α i > 0 α_i>0 αi>0,这就:
- 降低计算量;
- 提高模型泛化能力;
- 模型只依赖于少量关键样本(支持向量)!
🎯 3. 更易求解(凸优化 + 二次规划)
- 原始问题是一个带不等式约束的凸优化问题;
- 对偶问题是一个标准 二次规划问题(Quadratic Programming),求解器支持良好;
- 可以直接使用 SMO 算法等高效策略求解对偶问题。
✅ 三、SVM 对偶问题的形式

得到最优 α α α 后,再求:
🧪 四、Python示例:对偶求解带核的 SVM
from sklearn.datasets import make_classification
from sklearn.svm import SVC
import matplotlib.pyplot as plt
# 构造非线性可分数据
X, y = make_classification(n_samples=100, n_features=2, n_informative=2,
n_redundant=0, n_clusters_per_class=1,
flip_y=0.1, class_sep=0.5, random_state=42)
y = 2*y - 1 # 变换为 ±1
# SVC 默认求解对偶问题
clf = SVC(kernel='rbf', C=1.0)
clf.fit(X, y)
# 取出支持向量
print(f"支持向量数:{len(clf.support_vectors_)}")
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='coolwarm')
plt.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1],
s=100, facecolors='none', edgecolors='k', label='支持向量')
plt.legend()
plt.title("SVM 对偶求解 & 支持向量")
plt.show()
✅ 五、总结:为什么转为对偶问题?
| 原因 | 说明 |
|---|---|
| 💡 支持核函数 | 对偶中只有样本间点积,方便引入核 |
| ⚡ 稀疏性利用 | 仅支持向量对应 α i > 0 \alpha_i > 0 αi>0,提高效率 |
| 🧮 数学简洁 | 对偶问题为标准二次规划,优化理论支持成熟 |
| 🔁 泛化能力强 | 支持向量决定边界,具有鲁棒性 |
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)