支持向量机

支持向量机可以用于分类、回归与异常点检测,它有以下优势:

1、对高维数据集十分有效。

2、当p>n时,依然有效。

3、高效利用内存。

4、不同的核函数与决策函数一一对应。

缺点如下:

1、当p>>n时,需要合理选用核函数以避免过拟合。

2、由于支持向量机不直接提供概率估计,需要经过五折交叉验证计算得到,所以它较慢。

一、分类问题

SVC、NuSVC和LinearSVC能够实现多元分类。SVC与NuSVC十分相似,不同之处在于NuSVC引入了一个新的超参数v,它可以控制支持向量的数量和训练误差。LinearSVC是另一个实现线性核函数的支持向量分类,所以它不接受关键词kernel,也没有所谓的支持向量。

支持向量的解释:支持向量本质上就是一个向量,而且是离间隔边界最近的向量,也就是这些向量支撑了整个间隔边界,支持向量的名字由来就是这样。

多元分类在分类中主要有两种方法:one-vs-one和one-vs-rest。

one-vs-one:假设有n个类别,则会针对两两类别建立二项分类器,得到k=n*(n-1)/2个分类器。对新数据进行分类时,依次使用这k个分类器进行分类,每次分类相当于一次投票,分类结果是哪个就相当于对哪个类投了一票。在使用全部k个分类器进行分类后,相当于进行了k次投票,选择得票最多的那个类作为最终分类结果​。

one-vs-rest:假设有n个类别,那么就会建立n个二项分类器,每个分类器针对其中一个类别和剩余类别进行分类。进行预测时,利用这n个二项分类器进行分类,得到数据属于当前类的概率,选择其中概率最大的一个类别作为最终的预测结果。

其中,one-vs-rest更加受到青睐,因为它更快并且结果也很不错。

二、回归问题

在内核岭回归中我们有谈到过支持向量回归,支持向量分类与支持向量回归都是只依赖于训练集的子集,因为构建模型的代价函数忽略任何接近于模型预测的训练数据。支持向量回归也有三种不同的形式:SVR、NuSVR和LinearSVR。

三、异常点检测

OneClassSVM实现了一个用于无监督的孤立点检测。

四、复杂度

支持向量机是个强大的工具,不过它的计算和存储空间要求也会随着要训练向量的数目增加而快速增加。 SVM的核心是一个二次规划问题,是将支持向量和训练数据的其余部分分离开来。一般情况下复杂度为~。

五、使用诀窍

惩罚系数C的设置:C定义了你对噪声的重视程度,如果数据中有很多噪声,我们应该减小C,防止模型过拟合。

gamma的设置:gamma 定义了单一 训练样本能起到多大的影响,这样就会导致只有某些训练样本就能占领主导地位,对于训练集可能效果会很好,但是对于测试集效果很差,即会导致过拟合,降低gamma能有效降低过拟合的风险,与C一样。

六、SVM的数学推导

推荐一个网站,作者将SVM讲述的很好: SVM入门(一)至(三)Refresh - Jasper's Java Jacal - BlogJava


参考:《Scikit-Learn官方API》

如有错误,请指正;如有疑问,请留言。

你可能感兴趣的:(支持向量机)