《机器学习(周志华)》学习笔记(六)

Q:支持向量机是什么鬼?

支持向量机不是一台“机”,而是一个算法。一般来说认为这是一个分类算法,而且分类效果极佳。
寻找最优的分割线
以基本的二分类任务为例。给定一堆训练数据,假设每个样本只有两个属性。我们试图在坐标系中找出一条线,把不同类的样本分开来。从图中可以看出,有多条直线可以把两类样本分开。但是从直觉上就可以察觉,在两类点中间的那条线(加粗那条),是最合适的。因为这条线离两类样本的距离都适中,因此最能适应新样本,也就是说泛化能力最强。

图中有很多样本,但真正决定这条线的位置和方向的,只有两个点,那就是每个类的点中离直线最近的点。因为它们代表了各自所在的类的边界,只有它们的变化会引起线的位置变化,所以说这两个点支持着这条线。这些样本在坐标系中表现为点,用代数表示就是向量(每个分量是对应的属性值)。这就是“支持向量机”算法名称的又来。

Q:怎样找出支持向量机用来分类的那根线?

支持向量机在样本属性只有两个的时候的任务是找一条线,在属性有三个的时候就是找一个平面。在样本属性有三个以上的时候找的是“超平面”。线、平面,都是超平面的特例,所以他们都可以用一个方程来表示:

超平面表达式

这个方程就是我们要找的超平面的代数表示。其参数w和b就是我们要确定的参数,也就是我们要学习的目标。这个超平面也可以认为是使得分类函数f(x)=0的点集:

支持向量机的分类方式略有别于logistic回归——logistic回归是把样本值代入分类函数后得出一个0到1之间的数,根据这个数是否大于某个阀值(如0.5)来进行分类。

支持向量机则是把样本值代入分类函数后得出一个实数,根据这个数是否大于0来分类。而且在用训练数据训练过程中,会设置约束条件,让所有样本数据的计算值在 “>1” 和 “<-1” 之间。也就是在两个类别之间留出一道间隙。

由空间几何理论可以知道,空间中一个点到超平面的距离是

点到平面距离公式

因为把样本值代入分类函数后得出的计算值在 “>1” 和 “<-1” 之间,所以超平面能正确分类的前提(即约束条件)之一是

优化的约束条件

那么离超平面最近的两个样本,代入分类函数后的计算值必然分别是1和-1。所以两个类之间的间隙就是这两个点到超平面的举例的和,也就是

优化的目标函数

要是的支持向量机效果最好,也就是说最能适应新样本,那就意味着是的两类训练样本之间的间隙最大化,所以我们的训练的具体目标就是——

求得参数w和b使得两类样本间的间隙最大,同时还要让各个样本代入分类函数后的计算值大于1(或小于-1)。

SVM的训练任务
这个最值问题的求解过程相当烧脑,用到对偶问题思想、拉格朗日乘子法、KKT条件、SMO算法等,略过。

当我们把训练数据一个个输入支持向量机,逐渐调整参数w和b,最后得到了分类函数。这就是支持向量机的基本形式。

Q:如果得到的训练数据在各个类别的边界处彼此混淆,不能用一个超平面划分,怎么办?

现实中确实存在线性不可分的数据集

线性不可分数据集

但我们可以将样本向量映射到一个高维空间,在更高维度的空间中我们就能找到一个划分各类的超平面了。这中数据升维的手段被称为核方法,其映射函数被称为核函数

数据升维 当样本向量x映射后,超平面的方程也就变成了
升为后的超平面表达式

而训练的具体目标则变成了

升维后的SVM训练任务
posted @   zrq96  阅读(176)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示