支持向量机(Support Vector Machine)

支持向量机(SVM)是一种间隔最大化的线性分类器,通过寻找最大间隔的分隔超平面进行二类分类。本文介绍了SVM的基本概念,包括线性可分、分隔超平面、支持向量,以及SVM的优化目标——最大化间隔。还概述了SMO算法的实现,并给出了数据集、代码实现及结果展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是支持向量机?

支持向量机,其英文名为support vector machine,一般简称SVM,通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。SVM有很多实现,但是本篇文章只关注其中最流行的一种实现,即序列最小优化(Sequential Minimal Optimization,SMO)算法。

线性可分

对于二维空间来说,我们可以找到一条线,将两个不同类别的样本划分开来,我们就说这个样本集是线性可分的,如下图所示。

分隔超平面,支持向量与SVM

下图中有一个二维平面,平面上有两种不同的数据,分别用圈和叉表示。由于这些数据是线性可分的,所以可以用一条直线将这两类数据分开,而这条直线就叫做一个"分隔超平面",当然如果给定一个三维空间那么分割数据点的就是一个平面,因此给定一个n维空间,则其则需要n-1维的某某对象来进行分割,那么该某某对象就被叫做”超平面“。

而由上图我们也许会想到这个直线不这么画行不行呢?歪一点貌似也可以将不同数据点分割到两边,事实确实如此,所以我们希望找到离分隔超平面最近的点,确保它离这个分隔超平面尽可能远,其中点到分隔超平面的距离就被称为"间隔",我们希望间隔尽可能大,这是因为如果我们犯错或者在有限数据集上训练分类器的话,我们希望分类器尽可能健壮。
而其中离超平面最近的那些点则被称作为"支持向量"。

理解SVM,咱们必须先弄清楚一个概念:线性分类器。

    给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些数据分成两类。如果用x表示数据点,用y表示类别(y可以取1或者-1,分别代表两个不同的类),一个线性分类器的学习目标便是要在n维的数据空间中找到一个超平面(hyper plane),这个超平面的方程可以表示为(w 是垂直于超平面的一个向量,定义为法向量,而中的T代表转置):

                                                            

    可能有读者对类别取1或-1有疑问,事实上,这个1或-1的分类标准起源于logistic回归。

    我们尝试把logistic回归做个变形。首先,将使用的结果标签y = 0和y = 1替换为y = -1,y = 1,然后将)中的替换为b,最后将替换为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值