8. 支持向量机SVM原理以及代码实现

#! https://zhuanlan.zhihu.com/p/611475806

支持向量机原理以及代码实现

完整的实验代码在我的github上👉QYHcrossover/ML-numpy: 机器学习算法numpy实现 (github.com) 欢迎star⭐

支持向量机(SVM)是一种常用的二分类模型,其通过在数据集中找到一个超平面(或分割线)来分割两个不同的分类,同时使得该超平面距离两个分类的最近数据点最大化,从而实现了对未知数据进行分类的目的。

SVM原理

支持向量机(Support Vector Machine,SVM)是一种常见的二分类模型。SVM的目标是在数据集中找到一个超平面(或分割线)来分割两个不同的分类,同时使得该超平面距离两个分类的最近数据点最大化,从而实现了对未知数据进行分类的目的。

假设我们有一个二分类问题,数据集为 { ( x i , y i ) } i = 1 m \{(x_i,y_i)\}_{i=1}^m {(xi,yi)}i=1m,其中 x i x_i xi为数据点, y i ∈ { − 1 , 1 } y_i\in\{-1,1\} yi{ 1,1}为该数据点所属的类别。假设我们的数据集是线性可分的,也就是说,可以找到一个超平面 ω T x + b = 0 \omega^Tx+b=0 ωTx+b=0来将两个类别分开。此时,我们的模型可以表示为:

f ( x ) = sign ( ω T x + b ) f(x) = \text{sign}(\omega^Tx+b) f(x)=sign(ωTx+b)

其中, sign \text{sign} sign为符号函数,即:

sign ( x ) = { 1 , x > 0 − 1 , x < 0 0 , x = 0 \text{sign}(x) = \begin{cases} 1, & x>0 \\ -1, & x<0 \\ 0, & x=0 \end{cases} sign(x)= 1,1,0,x>0x<0x=0

但是,很多时候,我们的数据集并不是线性可分的,也就是说,不存在一个超平面可以将两个类别完全分开。此时,我们需要使用一些技巧,将数据集映射到一个更高维的空间中,使得数据集在该空间中是线性可分的。这个技巧称为核方法(kernel trick)。

核方法的基本思想是将原始空间中的数据点 x x x映射到一个更高维的特征空间中,然后在该特征空间中寻找一个超平面来进行分类。具体地,我们定义一个核函数 K ( x i , x j ) K(x_i,x_j) K(xi,xj),它表示将 x i x_i xi x j x_j xj映射到特征空间中后的内积。于是,我们的模型可以表示为:

f ( x ) = sign ( ∑ i = 1 m α i y i K ( x i , x ) + b ) f(x) = \text{sign}\left(\sum_{i=1}^m\alpha_iy_iK(x_i,x)+b\right) f(x)=sign(i=1mαiyiK(xi

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值