SVM with kernel function

本文介绍了支持向量机(SVM)在使用核函数后的强大能力,特别是在解决线性不可分问题上的应用。通过引入核函数,SVM能够在高维空间中找到线性决策边界,从而提高分类性能。文章以高斯核函数为例,展示了如何在PyTorch中实现SVM,并给出了训练过程和结果,训练集准确率达到了98.73%。
摘要由CSDN通过智能技术生成

简单介绍

在不使用kernel function的情况下,SVM只可以用来解决线性可分问题,面对线性不可分问题时,使用效果不佳.但是加入kernel function后,SVM的表达能力将会显著增加,下面将会简单介绍其原因,并使用PyTorch加以实现.
源代码以及题目等文件见博客

原理

SVM的原理不再进行赘述,具体可见博客.我们需要理解两个方面,1.为什么要使用kernel function.2.为什么使用kernel function可以解决线性不可分问题.
对于问题2,原因在于如果原始空间是有限维,即属性有限时,一定存在一个高维特征空间使样本可分.通俗的说,也就是当样本特征维度有限时,我们可以通过一定方式,扩展样本特征,使其从线性不可分变为线性可分.(机器学习(周志华)有讲,但我还没看到证明部分,不清楚具体原因)
对于问题1,原因在于对于SVM,实际上就是求解有约束优化问题,它的形式如下:
m i n 1 2 ∣ ∣ w ∣ ∣ 2 s . t . y ( w T ϕ ( x ) + b ) > = 1 min \frac{1}{2}||w||^2 \\ s.t. \\ y(w^T\phi(x)+b)>=1 min21w2s.t.y(wTϕ(x)+b)>=1
其中 ϕ ( x ) \phi(x) ϕ(x)表示将原先的 x x x映射到更高维度的空间,使其变为线性可分.
使用拉格朗日乘子法,我们可以将其转化为如下对偶问题:
m a x ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j ϕ ( x i ) T ϕ ( x j ) s . t . ∑ i = 1 m α i y i = 0 α i > = 0 , i = 1 , 2 , . . . , m max \sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\phi(x_i)^T\phi(x_j) \\ s.t. \\ \sum_{i=1}^m\alpha_iy_i=0 \\ \alpha_i>=0, i=1,2,...,m maxi=1mαi21i=1mj=1mαiαj

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值