[机器学习]支持向量机的全部理解

序言:趁热打铁,再更一章!


【看山是山】

  

SVM 的底层思想是在高维空间中寻找最优的决策边界,以实现数据的分类。即找到一个超平面,使得两个类别之间的间隔最大化。这个超平面由支持向量定义,这些支持向量是距离决策边界最近的那些数据点。 这也是支持向量机名称的由来。

知识点提炼 ABSTRACT:

a.SVM 核函数:线性核;多项式核函数;高斯核函数;Sigmoid 核:

b.SMO:求解凸二次规划的最优化算法

c.SVM 损失函数:

支持向量机的学习算法是求解凸二次规划的最优化算法。

支持向量机学习方法包含构建由简至繁的模型:

线性可分支持向量机---线性支持向量机---非线性支持向量机(使用核函数)

  • 当训练数据线性可分时,通过硬间隔最大化(hard margin maximization)学习一个线性的分类器即线性可分支持向量机,又成为硬间隔支持向量机;
  • 当训练数据近似线性可分时,通过软间隔最大化(soft margin maximization)也学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机;
  • 当训练数据不可分时,通过核技巧(kernel trick)及软间隔最大化,学习非线性支持向量机。

注:以上各 SVM 的数学推导应该熟悉:硬间隔最大化(几何间隔)---学习的对偶问题---软间隔最大化(引入松弛变量)---非线性支持向量机(核技巧)。


【看山不是山】
(1). 分割超平面(在二维中叫做分割线)。首先构造超平面:

\omega^T\boldsymbol{\varphi}(x_k)+b\geq1,y_k=+1\\\omega^T\boldsymbol{\varphi}(x_k)+b\leq-1,y_k=-1

然后使得两个类别之间的间隔(margin)最大化,也即目标函数 min\frac{1}{2}\parallel w\parallel^{2}(由间隔的倒数表示)

min\frac{1}{2}\parallel w\parallel^{2},...s.t. y_{i}(w^{T}x_{i}+b)\geq1,i=1,2,...,m.

这是一个凸优化问题,(凸二次规划让人喜欢的地方就在于,它有全局最优解,而且可以找到,并且为了提高解的效率,即收敛速度,会转化为其对偶问题)为了方便求解,转换为其拉格朗日对偶问题:

\max_{\lambda_{i}\geq0}\min_{w,b}\mathcal{L}(w,b,\lambda)=d^{*},\cdots\mathcal{L}(\boldsymbol{w},b,\lambda)=\frac{1}{2}\|\boldsymbol{w}\|^{2}-\sum_{i=1}^{n}\lambda_{i}\left(y_{i}(\boldsymbol{w}^{T}\boldsymbol{x}_{i}+b)-1\right)

最优解需要满足KKT条件,这样便可以利用SMO算法快速求解。

(2). 正则化参数C(软间隔)

又称松弛变量,使得模型在追求最大化间隔的同时,也能够处理现实世界中的不完美数据,提高了模型的实用性和泛化能力。通过调整正则化参数C,我们可以控制模型对间隔大小和分类错误的权衡,以达到最佳的分类效果。

\begin{aligned}&L(w,b,\lambda)=\frac{1}{2}\parallel w\parallel^{2}-\sum_{i=1}^{n}\lambda_{i}\cdot(y_{i}\cdot(wx_{i}+b)-1+\varepsilon_{i})+C\sum_{i=1}^{n}\varepsilon_{i}-\sum_{i=1}^{n}\mu_{i}\varepsilon_{i}\\&\lambda_{i}\geq0,\mu_{i}\geq0\end{aligned}

接着,最优解需要满足KKT条件,

\begin{cases}\nabla_x\mathcal{L}(x,\lambda)=0\\\lambda^\mathrm{T}g(x)=0\\\lambda\geq0\\g(x)\leq0\end{cases}

在本问题中为,

\begin{cases}\frac{\alpha L}{\alpha w}=w-\sum_{i=1}^{n}\lambda_{i} y_{i}x_{i}=0\\\frac{\alpha L}{\alpha b}=\sum_{i=1}^{n}\lambda_{i} y_{i}=0\\\frac{\alpha L}{\alpha\varepsilon}=C-\lambda_{i}-\mu_{i}=0\\\lambda_{i}\cdot(y_{i}\cdot(wx_{i}+b)-1)=0 [i=1,2,3...N]\end{cases}

最终化简形式为:

min\frac{1}{2}\sum_{j=1}^{n}\sum_{i=1}^{n}\lambda_{i} \lambda_{j}y_{i}y_{j}x_{i}x_{j}-\sum_{i=1}^{n}\lambda_{i} ;s.t-\sum_{i=1}^{n}\lambda_{i} y_{i}=0 ;0\leq\lambda_{t}\leq C_{\psi}

松弛变量的引入是SVM算法中的一个重要改进,它使得模型在追求最大化间隔的同时,也能够处理现实世界中的不完美数据,提高了模型的实用性和泛化能力。通过调整正则化参数C,我们可以控制模型对间隔大小和分类错误的权衡,以达到最佳的分类效果。

(3). 核函数(非线性分隔)

在原始特征空间中,数据可能不是线性可分的。核技巧允许SVM在更高维的空间中进行计算,以便找到非线性的决策边界。

核技巧的关键在于核函数的使用,核函数是一个能够计算两个数据点在新特征空间中内积的函数,理论表示为:将 x_{i}x_{j} 扩展为 \phi(\overrightarrow{x_{i}})\cdot\phi(\overrightarrow{x_{j}})。常见的核函数 包括线性核、多项式核、径向基函数(RBF)核和sigmoid核。核技巧是SVM算法中一个非常关键的部分,它极大地提高了SVM在处理复杂数据集时的能力。通过合理选择和调整核函数,可以有效地提高模型的分类性能。

(4). SVM原始目标优化求解(凸优化问题)

前面提到过对偶问题和原问题满足的几个条件,首先由于目标函数和线性约束都是凸函数,而且这里不存在等式约束。因此,一定存在 \omega^*\lambda^{*},使得 \omega^* 是原问题的解,\lambda^{*}是对偶问题的解。在这里,求 \lambda_{i} 就是求 \lambda^{*} 了。

支持向量的 \lambda_{i}>0,其他点 \lambda_{i}=0


【看山还是山】

Q1:SVM为什么采用间隔最大化?

当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是唯一的。另一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强

然后应该借此阐述,几何间隔,函数间隔,及从函数间隔求解最小化min\frac{1}{2}\parallel w\parallel^{2} 时的w和b。即线性可分支持向量机学习算法—最大间隔法的由来。

Q2: 为什么要将求解SVM的原始问题转换为其对偶问题?

对偶问题往往更易求解(当我们寻找约束存在时的最优点的时候,约束的存在虽然减小了需要搜寻的范围,但是却使问题变得更加复杂。为了使问题变得易于处理,我们的方法是把目标函数和约束全部融入一个新的函数,即拉格朗日函数,再通过这个函数来寻找最优点。)自然引入核函数,进而推广到非线性分类问题

Q3: 为什么SVM要引入核函数?

当样本在原始空间线性不可分时,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。

SVM叫做结构风险最小化算法,所谓结构风险最小化,意思就是在训练误差和模型复杂度之间寻求平衡,防止过拟合,从而达到真实误差的最小化。未达到结构风险最小化的目的,最常用的方法就是添加正则项,后面的博客我会具体分析各种正则因子的不同,这里就不扯远了。但是,你发现没,SVM的目标函数里居然自带正则项!!!

L2 regularization(权重衰减),L2正则化就是在代价函数后面再加上一个正则化项,防止过拟合。更小的权重。

L1 regularization,可以让一部分权重变为零,因此产生稀疏模型。更少的参数。


【仁秀银的喷空小卖部】

有需求的小伙伴可以光顾我的小卖部~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值