机器学习 - 支持向量机的推导

支持向量机(Support Vector Machine,SVM)是一种用于分类和回归分析的机器学习算法,特别适用于高维数据。它的核心思想是找到一个最佳的超平面,将不同类别的样本进行正确的分类。

支持向量机的基本原理

  1. 线性可分的情况

    假设我们有两类数据集,我们希望找到一个超平面将这两类数据分开。对于二维数据,这个超平面就是一条直线;对于三维数据,它就是一个平面;更高维度的情况类似。SVM的目标是找到这个超平面,使得它不仅能分开这两类数据,还能使得两类数据离这个超平面尽可能远。

  2. 数学表示

    对于一个超平面,我们可以用方程来表示: wx + b = 0 ,其中:

    • w 是超平面的法向量。
    • b 是数据点。
    • (b) 是偏移量(bias)。

    我们希望找到这样的 w 和 b ,使得超平面将两类数据分开,并且离每一类数据的最小距离最大化。

  3. 最大化间隔(Margin)

    间隔是指从超平面到最近的一个数据点的距离。SVM希望最大化这个间隔。对于线性可分的情况,我们希望找到以下两个约束条件:

    • 对于属于正类的点: w ⋅ x i + b ≥ 1 \mathbf{w} \cdot \mathbf{x}_i + b \geq 1 wxi+b1
    • 对于属于负类的点: w ⋅ x i + b ≤ − 1 \mathbf{w} \cdot \mathbf{x}_i + b \leq -1 wxi+b1

    这两个约束可以统一为: y i ( w ⋅ x i + b ) ≥ 1 y_i (\mathbf{w} \cdot \mathbf{x}_i + b) \geq 1 yi(wxi+b)1 ,其中 y i y_i yi 是数据点的标签,正类为1,负类为-1。

  4. 优化问题

    现在我们的目标是找到 w 和 b,使得间隔最大化。这个优化问题可以转化为:

min ⁡ w , b 1 2 ∣ ∣ w ∣ ∣ 2 \min_{\mathbf{w}, b} \frac{1}{2} ||\mathbf{w}||^2 w,bmin21∣∣w2

使得 y i ( w ⋅ x i + b ) ≥ 1 y_i (\mathbf{w} \cdot \mathbf{x}_i + b) \geq 1 yi(wxi+b)1

这里,我们用 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2} ||\mathbf{w}||^2 21∣∣w2 作为目标函数是因为这样可以简化数学推导。

非线性可分的情况

现实中,大多数数据集并不是线性可分的。为了处理这种情况,SVM引入了两种方法:软间隔和核技巧。

  1. 软间隔

    为了允许少量的误分类,我们引入了松弛变量 ξ i \xi_i ξi 使得约束变为: y i ( w ⋅ x i + b ) ≥ 1 − ξ i y_i (\mathbf{w} \cdot \mathbf{x}_i + b) \geq 1 - \xi_i yi(wxi+b)1ξi,并且 ξ i ≥ 0 \xi_i \geq 0 ξi0
    目标函数变为:

min ⁡ w , b 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 n ξ i \min_{\mathbf{w}, b} \frac{1}{2} ||\mathbf{w}||^2 + C \sum_{i=1}^n \xi_i w,bmin21∣∣w2+Ci=1nξi

这里的 C 是一个超参数,用于控制间隔最大化和误分类数量之间的平衡。

  1. 核技巧

    核技巧(Kernel Trick)是将原始数据映射到一个更高维的空间,使得在这个高维空间中数据变得线性可分。常见的核函数有:

    • 线性核: K ( x i , x j ) = x i ⋅ x j K(\mathbf{x}_i, \mathbf{x}_j) = \mathbf{x}_i \cdot \mathbf{x}_j K(xi,xj)=xixj
    • 多项式核: K ( x i , x j ) = ( x i ⋅ x j + 1 ) d K(\mathbf{x}_i, \mathbf{x}_j) = (\mathbf{x}_i \cdot \mathbf{x}_j + 1)^d K(xi,xj)=(xixj+1)d
    • 高斯核(RBF): K ( x i , x j ) = exp ⁡ ( − γ ∣ ∣ x i − x j ∣ ∣ 2 ) K(\mathbf{x}_i, \mathbf{x}_j) = \exp(-\gamma ||\mathbf{x}_i - \mathbf{x}_j||^2) K(xi,xj)=exp(γ∣∣xixj2)

    使用核函数后,SVM的优化问题就变成了: min ⁡ 1 2 ∑ i , j α i α j y i y j K ( x i , x j ) − ∑ i α i \min \frac{1}{2} \sum_{i,j} \alpha_i \alpha_j y_i y_j K(\mathbf{x}_i, \mathbf{x}_j) - \sum_i \alpha_i min21i,jαiαjyiyjK(xi,xj)iαi

    使得 ∑ i α i y i = 0 \sum_i \alpha_i y_i = 0 iαiyi=0 α i ≥ 0 \alpha_i \geq 0 αi0,这里, α i \alpha_i αi 是拉格朗日乘子。核函数 K ( x i , x j ) K(\mathbf{x}_i, \mathbf{x}_j) K(xi,xj) 替代了原始的内积 x i ⋅ x j \mathbf{x}_i \cdot \mathbf{x}_j xixj,使得优化问题能够在高维空间中进行求解。

总结

支持向量机通过找到一个最佳的超平面来分类数据,在线性可分的情况下,通过最大化间隔来确定最佳的超平面。在非线性可分的情况下,通过引入软间隔和核技巧,使得SVM可以处理更复杂的数据集。最终的优化问题可以通过求解一个二次规划问题来完成。

更多问题咨询

Cos机器人

  • 28
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
支持向量机(Support Vector Machine,SVM)是一种常用的机器学习算法,用于分类和回归问题。其原理公式推导如下: 1. 线性可分支持向量机: 假设我们有一个训练数据集,其中包含一些正例和负例样本。我们的目标是找到一个超平面,将正例和负例样本分开。超平面可以表示为 wx + b = 0,其中 w 是法向量,b 是偏置项。 对于正例样本,我们希望满足 wx + b ≥ 1,对于负例样本,我们希望满足 wx + b ≤ -1。这两个约束条件可以合并为一个约束条件:yi(wx + b) ≥ 1,其中 yi 是样本的标签(1 表示正例,-1 表示负例)。 我们的目标是找到一个最大间隔的超平面,使得所有样本点到该超平面的距离都大于等于1。这可以转化为一个优化问题,即最小化 ||w||^2/2,同时满足约束条件 yi(wx + b) ≥ 1。 通过拉格朗日乘子法,我们可以得到拉格朗日函数 L(w, b, α) = ||w||^2/2 - Σαi[yi(wx + b) - 1],其中 α 是拉格朗日乘子。 最终,我们需要求解的是关于 w 和 b 的最小化问题,可以通过对拉格朗日函数求偏导数并令其等于零来得到最优解。 2. 非线性支持向量机: 在现实问题中,数据往往不是线性可分的。为了解决这个问题,我们可以使用核函数将数据映射到高维空间,使其在高维空间中线性可分。 核函数可以定义为 K(xi, xj) = φ(xi)·φ(xj),其中 φ 是将数据映射到高维空间的函数。 在非线性支持向量机中,我们的目标是找到一个最大间隔的超平面,使得所有样本点到该超平面的距离都大于等于1。这可以转化为一个优化问题,即最小化 ||w||^2/2,同时满足约束条件 yi(wx + b) ≥ 1。 通过拉格朗日乘子法,我们可以得到拉格朗日函数 L(w, b, α) = ||w||^2/2 - Σαi[yi(wx + b) - 1],其中 α 是拉格朗日乘子。 最终,我们需要求解的是关于 w 和 b 的最小化问题,可以通过对拉格朗日函数求偏导数并令其等于零来得到最优解。 以上是支持向量机的原理公式推导

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值