1. 引言
在前面的博客中,我们已经探索了线性回归、逻辑回归、决策树和 KNN 等机器学习算法。 这些算法各有优势和局限性。 线性回归适用于预测连续数值,逻辑回归擅长解决二分类问题,决策树可以处理非线性关系,而 KNN 则依赖于近邻样本。 然而,在处理更复杂的问题时,例如图像识别和文本分类,这些算法可能无法达到理想的效果。
这时,支持向量机 (SVM) 就展现出它的强大之处。 SVM 是一种强大的分类和回归算法,它试图找到一个最佳的超平面,将不同类别的数据点分隔开,并具有最大的间隔。 想象一下,你要在一张桌子上区分两种颜色的弹珠,SVM 就像是用一把尺子(超平面)将两种颜色的弹珠分开,并且尽可能地让尺子远离两种颜色的弹珠。
SVM 算法在图像识别、文本分类、生物信息学等领域都有广泛的应用。 在本篇博客中,我们将通过一个实际的项目,使用 SVM 算法识别手写数字,深入了解 SVM 算法的原理和应用。
2. 理论基础
-
SVM 算法的基本思想:
SVM 算法的目标是找到一个最优的超平面,将不同类别的数据点分隔开,并且最大化间隔 (Maximum Margin)。
- 超平面 (Hyperplane): 一个将数据空间分隔开的平面。 在二维空间中,超平面是一条直线;在三维空间中,超平面是一个平面;在更高维空间中,超平面是一个线性子空间。
- 支持向量 (Support Vectors): 距离超平面最近的数据点。 这些数据点对超平面的位置起着决定性的作用。
- 间隔 (Margin): 超平面与支持向量之间的距离。 SVM 算法的目标是最大化间隔。
最大间隔的意义:
- 更好的泛化能力: 间隔越大,模型对噪声的容忍度越高,泛化能力越强。
- 更好的鲁棒性: 间隔越大,模型对数据变化的敏感度越低,鲁棒性越好。
-
线性可分 SVM:
当数据是线性可分的时候,我们可以找到一个超平面将两类数据完全分开。 假设训练集为 (xi,yi),i=1,2,…,n,其中 xi 是输入特征, yi∈−1,1 是类别标签。 线性可分 SVM 的目标是求解以下优化问题:
其中,w 是超平面的法向量,b 是截距,
是 w 的平方范数。 该优化问题的目标是最小化
,即最大化间隔
。
可以使用拉格朗日乘子法来求解该优化问题。 引入拉格朗日乘子 αi≥0,构造拉格朗日函数: