机器学习算法-支持向量机

一、支持向量机简介

        支持向量机(Support Vector Machine,SVM)简称SVM算法,它的基本思想是在特征空间中找到一个超平面,能够将不同类别的样本分开,并且使得离这个超平面最近的样本点到该平面的距离(即间隔)最大化,SVM可以用来处理分类和回归分析。

二、如何理解SVM算法?

        我们先来做一道题:假如桌子上放有两种颜色的球,你想用一根木棍把它们分开,你会怎么做呢?

        如上图所示,我们用了两种不同的方式将他们分开了。这两种方式在这个问题上看起来差别不大,它们都可以完美的把这两种球分开。

        接下来我们加大难度,在这个基础上加上两个红色的样本点,如下图中的两个红色球,它们一个距离图中左下方的橙色球更近,另一个距离右上方的蓝色球更近。

        如果我们还用刚才的分类算法,这回的效果就完全不一样了。我们用前边讲过的KNN算法对这两个点进行分类,KNN算法是用距离去衡量两个样本点的相似度,距离越近表示它们越相似。根据这个原理,我们可以得出一个结论:靠近橙色球的样本大概率属于橙色球,靠近蓝色的 样本点大概率属于蓝色球。这样一来,做对这道题的就只有右边的分类算法了。

        那为什么只有第二个分类做对这道题呢?我们可以看到,相比于第一个分类算法,第二个分类算法在完美区分所有样本点的同时,还在努力保证边界样本点到这个分类算法的决策边界的距离尽可能远,这就意味着两个分类样本之间的距离会被放大。根据距离公式,距离远表示相异,所以这两个分类样本的区分度会更高。

        第二个分类方式可以进行正确分类的原因,用一句话总结就是:在保证了分类正确性的同时,还尽可能的让两个样本的类别更容易区分。简单的来说就是,不仅要做对,还保证了质量。

三、SVM算法原理

        我们刚才说的划分橙色和蓝色小球的方法就是SVM的算法思路:当样本数据是线性可分(用一条直线可以将样本数据分开)的时候,找到距离两类样本间隔最大的一条直线,或者说是两类样本数据之间的中轴线。因为有无数条直线可以区分两个分类,只有它们之间的中轴线距离所有样本点的距离最远。

        其中,距离这条直线最近的几个样本点,就叫做支持向量(Support Vector),这几个点到这条直线的距离称为间隔。

        支持向量(Support Vectors): 这些是离超平面最近的数据点,它们对于定义超平面并确定分类决策边界起着关键作用。支持向量机的训练过程中,只有支持向量的位置才会影响最终模型。
        间隔(Margin): 间隔是指超平面与支持向量之间的距离,支持向量机的目标是最大化这个间隔。

        那为什么一定要找到间隔最大的这条直线呢?它除了能让分类样本的区分度最高,还有一个好处就是当新数据发生波动的时候,就算超过了原有数据样本点的最近边界,分类结果仍然不会受影响,即提高模型的泛化能力。因此,寻找最大间隔的过程也是SVM算法优化参数的过程。

四、如何处理分线性可分?

        在实际问题中,很多数据是线性不可分的,就比如橙色和蓝色球均匀地混合在一起。这个时候,我们找不到一条直线可以把两类小球很好地分开。在这种情况下,SVM又要怎么处理呢?

        SVM的解决办法就是将二维平面映射到三维空间中,我们可以想象成是把二维平面中的直线通过在三维空间上的投影构造出一个平面,这个平面把原有的空间分割成了两部分,让两类颜色的小球样本在高维空间中线性可分。当然我们也可以在平面的基础上进行延伸,比如映射到一个超过三维的空间,这就构造出一个超平面。这种数学思路就是SVM算法优秀的地方,也是SVM算法和其他线性算法最大的区别。

        总之,线性分类算法都可以叫做线性分类器,它在二维空间中是直线,在三维空间中是平面,在三维以上的空间维度就是超平面。 在一个 n 维空间中,一个 n-1 维的子空间就是一个超平面。

        在讲SVM解决办法的时候,我们还有一个问题没解决:SVM是怎么把分类器从二维平面映射到高维空间的?其实就是通过“核函数”来实现的,核函数的作用简单来说就是把低维空间映射到高维空间,常见的核函数有线性核函数、高斯核函数等。SVM就是通过核函数将样本从原始空间映射到一个更高维的特征空间中,让样本数据在新的空间中线性可分。

        总的来说,SVM就是一个有监督的二分类器,目标是找到一个超平面,让两类数据距离这个超平面最远,从而对新的数据分类更准确。

五、SVM算法构建过程

        SVM算法构建过程可以分为:数据准备、训练阶段、预测阶段和参数调优。

        1. 数据准备
        在训练和预测阶段,需要一个已标记的数据集,其中包含输入特征和相应的类别标签。

        2. 训练阶段
        2.1 特征映射(如果需要)
        对于非线性问题,可以使用核函数将数据映射到更高维的空间。这可以通过内积运算来完成,而无需实际计算新空间中的坐标。
        2.2 寻找超平面
        SVM的目标是找到一个能够最大化间隔(支持向量到超平面的距离)的超平面,以分隔不同类别的样本。这通常是一个凸优化问题。常见的优化方法包括序列最小优化(Sequential Minimal Optimization,SMO)等。
        2.3 确定支持向量
        找到超平面后,支持向量就是离该超平面最近的训练样本点。它们对于定义超平面并确定分类决策边界起着关键作用。
        2.4 决策函数
        根据找到的超平面和支持向量,建立一个决策函数。对于新的未标记样本,通过这个决策函数来预测其类别。

        3. 预测阶段
        3.1 特征映射(如果需要)
        对于测试数据,如果在训练阶段使用了特征映射,则需要将测试数据映射到相同的高维空间。
        3.2 应用决策函数
        使用训练阶段得到的决策函数,根据测试样本的特征进行分类预测。

        4. 参数调优
        支持向量机有一些参数需要调优,例如:核函数的选择、C参数的设定等。这可以通过交叉验证等方法来完成,以提高模型的性能和泛化能力。 C 参数是一个正则化参数,它控制了对误分类样本的惩罚程度。较小的 C 值会导致更大的间隔,但可能允许一些样本被错误分类;较大的 C 值则会强调对误分类样本的惩罚,可能导致更复杂的决策边界。

六、SVM算法优缺点

        SVM算法作为机器学习领域非常强大的算法,它不仅可以处理线性问题,还适应于非线性问题的处理。它对高维数据集和低维数据集都有不错的表现,它可以在数据特征很少的情况下生成非常复杂的决策边界,并且在特征数据足够多的情况下效果更好,原因是数据集的复杂度只取决于支持向量而不是数据集的维度。

        相比于KNN、决策树这些局部最优解的算法来说,SVM算法可以求得一个全局的最优解。

        SVM的缺点就是训练所需要的资源很大,由于运算量和存储量都很高,SVM的训练非常消耗时间和内存,因此支持向量机比较适合小的样本量。而且SVM无法直接解决多分类的问题,只能通过多个二分类组合来解决多分类的问题。

  • 21
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值