支持向量机分类方法的优缺点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了支持向量机分类方法的优缺点相关的知识,希望对你有一定的参考价值。
参考技术A SVM的优点:1)解决了小样本情况下的机器学习。
2)由于使用核函数方法克服了维数灾难和非线性可分的问题,所以向高维空间映射时没有增加计算的复杂度。(由于支持向量机算法的最终决策函数只由少数的支持向量所确定,所以计算的复杂性取决于支持向量的数目,而不是整个样本空间的维数)。
SVM的缺点:
1)支持向量机算法对大规模训练样本难以实施,这是因为支持向量算法借助二次规划求解支持向量,这其中会设计m阶矩阵的计算,所以矩阵阶数很大时将耗费大量的机器内存和运算时间。
2)经典的SVM只给出二分类的算法,而在数据挖掘中,一般要解决多分类的分类问题,而支持向量机对于多分类问题解决效果并不理想。
3)现在常用的SVM理论都是使用固定惩罚系数C,但是正负样本的两种错误造成的损失是不一样的。
机器学习基础从感知机到支持向量机&支持向量机的多分类方法
前言
本篇文章是个人对于从感知机到支持向量机的整个过程的思考和推理:
❝感知机--->缺陷--->加入约束/优化策略(为什么可行)--->支持向量机
❞
不涉及支持向量机的学习过程(从原始凸二次规划问题转化为拉格朗日对偶问题)以及线性可分、线性、非线性支持向量机的讨论(本文采用线性可分的前提条件)。从支持向量机的定义出发,解释「最大间隔化的由来」、「支持向量的概念」以及「如何解决多分类任务」。支持向量机的内容较多,分多篇来梳理。
本文约1.7k字,预计阅读8分钟。
概要
首先给出支持向量机的定义:
❝支持向量机(SVM)是一个「二分类模型」,是定义在特征空间上的「间隔最大」的分类器。
❞
可以发现,与感知机的区别在于【间隔最大】这个概念。首先,从几何角度来说,感知机就是在特征空间 上找到一个超平面,这个超平面能刚好将分布在特种空间上的正负两类点给区分开来。那么「不做任何的约束」,这个超平面就会有无穷多个(线性可分的前提下)。那么就存在一个「关键问题」:如何挑选一个最优的超平面(也可以理解为如何让模型更加的健壮)?这就需要找到找到一个新的学习策略/约束。
将其公式化,对于感知机来说,定义一个超平面:
相对应的决策函数为:
通过对「误分类点到超平面的距离的总和」这一损失函数进行建模,通过SGD等方法进行优化。
以上是「经验风险最小化」,存在的缺陷:
-
解不唯一(超平面不唯一); -
容易受数据集影响;
那么就需要加入一个新的学习策略/约束,即「间隔最大化」,可以使其「结构风险最小」。学习的目标就是来找到一个最优超平面。
再将间隔最大化给剥离出来,存在两个问题:
-
最大间隔化指的是什么? -
为什么最大间隔化可以找到一个唯一的超平面?
对于第1个问题,一个点(样本)到超平面的远近可以表示分类预测的确信程度(离超平面越远越准确,超平面附近的点不确定性更大)。点到平面距离的公式为: ,假设两种分类点的标签为 ,那么每个样本的确信程度可以表示为: ,对其进行简化,如果某个点的确信程度大于等于0的话,则就分类正确, 。
以上就是「函数间隔」的定义,
❝对于给定的训练集 和超平面 【超平面由法向量 和截距 所确定,因此可以用 来表示超平面】,定义超平面 关于样本点 的函数间隔为:
定义「超平面 关于训练集T的函数间隔」为超平面关于 中所有样本点的函数间隔的最小值,即
❞
我们知道,如果等比例改变 ,超平面不变,但函数间隔会变化,所以又定义了一个「几何间隔」(添加规范化约束)。
❝对于给定的训练集 和超平面 ,定义超平面 关于样本点 的几何间隔为:
定义「超平面 关于训练集T的几何间隔」为超平面关于 中所有样本点的几何间隔的最小值,即
❞
所以最大间隔化指的就是「在能够正确划分训练数据集条件下,使得几何间隔最大化」,这就是支持向量机的学习策略/思想。
因此,可以公式化为:
通过一系列简化(参考《统计学习方法》),最终得到:
这个公式,就是整个支持向量机模型的构建。
【注】这里是线性可分支持向量机的定义。
对于第2个问题,存在定理(这里先考虑线性可分的情况):
❝最大间隔分离超平面的存在唯一性:若训练数据集线性可分,则可将训练数据集中的样本点完全正确分开的最大间隔分离超平面是存在且唯一的。
❞
证明参考《统计学习方法》P117-P118。
为什么称为支持向量机?
(支持向量机)模型定义,训练数据样本点与分离超平面最近的样本点称为「支持向量」(support vector),可以形象的理解为支撑起了整个分离超平面的构建。支持向量分布在两个超平面上:
和
可以得到一个重要的结论:**支持向量决定了最优超平面,与其他点无关。**所以这个依靠支持向量构建的模型称为支持向量机。
支持向量机如何解决多分类问题?
定义中,支持向量机是一个二分类模型,那么如何实现多分类任务?可以通过多个支持向量机来构建多分类器,具体比较好理解的有两种:
-
一对多(one vs rest):即把某一个类别归为1类,其他类别归为另一类,假设有 个类别,这样就构造了 个分类器; -
一对一(one vs one):即任意两个类别构造一个支持向量机,需要 个分类器,通过投票决定样本类别,LIBSVM就是这样实现的;
总结
以上是个人对感知机到支持向量机演化的一个思考,如有问题或者异议的地方欢迎联系我指出。
往期精彩回顾
本站qq群704220115,加入微信群请扫码:
以上是关于支持向量机分类方法的优缺点的主要内容,如果未能解决你的问题,请参考以下文章