美文网首页学习scikit-learn
scikit-learn--SVM(支持向量机)

scikit-learn--SVM(支持向量机)

作者: DayDayUp_hhxx | 来源:发表于2017-05-23 18:47 被阅读132次

SVM是一种用于分类、回归和异常值探测的有监督学习方法。

SVM的优点:在高维空间有效;在样本维度比样本数量多的情况下有效;支持向量使用了训练数据的子集,记忆有效;用途广泛:判定函数可以使用不同的核函数。

SVM的不足:特征数比样本数多很多的情况下,表现较差;不能直接给出估计概率,需要通过5折交叉验证(five-fold cross-validation).

在sklearn中,SVM支持密集矩阵(numpy.ndarray)和稀疏矩阵(scipy.sparse)作为输入。However, to use an SVM to make predictions for sparse data, it must have been fit on such data,为了得到最佳性能,使用dtype=float64的numpy.adarray 或者scipy.sparse.csr_matrix 。


分类

SVC,NuSVC和LinearSVC可以用于多类分类。

SVC和NuSVC是相似的方法,但是接受不同的参数并且有不同的数学公式;LinearSVC是有线性核的支持分类器。和其他分类器一样,SVC,NuSVC和LinearSVC的输入包括训练样本数组以及对应的标记数组。

多类分类

SVC和NuSVC使用“one-against-one”方法,如果有n类,每两类之间建立一个分类器,共需要建立 n(n-1)/2 个分类器。LinearSVC使用 "one-vs -the -rest"策略,如果有n类,将 其中n-1类归为一类,建立 n 个分类器。

小提示

1.避免数据拷贝:对于SVC、SVR、NuSVC、NuSVR,在运行前需要将数据转换为C-ordered contiguous;对于LinearSVC和LogisticRegression,任何输入都将拷贝并且转化为稀疏矩阵,如果不是用密集矩阵作为输入来做大规模的线性分类,最好使用SGDClassifier。

2.核缓存大小:对于SVC、SVR,NuSVC、NuSVR,核缓存的大小严重影响运行时间,在可能的情况下,不要使用默认设置 cache_size=200 (MB),设置为500或者1000比较好。

3.设置C值:C(惩罚因子)默认设置为1,如果有较多的异常观察值,最好降低C的值,它关系到估计的正则化。

4.标准化输入数据。

5.NuSVC、OneClassSVM、NuSVM中的参数 nu ,近似等于训练误差和支持向量的百分比,取值范围(0,1),一般取(0.1,0.8),代表样本落入间隔内的最小数目,即预测错误的比例。(The main motivation for the nu versions of SVM is that it has a has a more meaningful interpretation. This is because nu represents an upper bound on the fraction of training samples which are errors (badly predicted) and a lower bound on the fraction of samples which are support vectors. Some users feel nu is more intuitive to use than C or epsilon.)

6.在SVC中,如果是不平衡样本,设置 class_weight='balanced' 尝试用不同的C值来训练数据。

7.LinearSVC在拟合模型时随机选取了特征,这导致相同的数据会得到不同的结果,可以尝试小一点的 tol 参数;

8.LinearSVC 中使用 L1 范数将得到稀疏的结果,即只有一部分特征对判别函数有贡献;增加C的值将得到一个更加复杂的模型,因为选择了更多的特征;可以使用 sklearn.svm.l1_min_c 计算最小C值。


来源:scikit-learn.org/stable/modules/svm.html

相关文章

  • scikit-learn--SVM(支持向量机)

    SVM是一种用于分类、回归和异常值探测的有监督学习方法。 SVM的优点:在高维空间有效;在样本维度比样本数量多的情...

  • 【转载】pluskid的SVM系列博文

    基本篇:支持向量机: Maximum Margin Classifier —— 支持向量机简介。支持向量机: Su...

  • 【机器学习实战】第6章 支持向量机(Support Vector

    第6章 支持向量机 支持向量机 概述 支持向量机(Support Vector Machines, SVM):是一...

  • SVM支持向量机

    线性支持向量机# 径向支持向量机# 最优参数##

  • 编程作业(六)

    支持向量机 支持向量机 本部分练习,我们将在2D示例数据集上使用支持向量机。通过在这些数据集上使用支持向量机,将帮...

  • 支持向量机-QA

    Q1:SVM的类型有哪些? 三类:线性可分支持向量机、线性支持向量机、非线性支持向量机线性可分支持向量机:当训练数...

  • 支持向量机

    支持向量机 线性可分支持向量机与硬间隔最大化 线性支持向量机与软间隔最大化 非线性支持向量机与核函数 序列最小最优...

  • 机器学习——libSVM(一)

    一、什么是支持向量机 支持向量机(Support Vector Machine,SVM)也称为支持向量网络。是一类...

  • 支持向量机&&聚类

    支持向量机SVM(Support Vector Machine) 一、支持向量机的原理 Support Vecto...

  • 支持向量机

    问题 1. 支持向量机是如何进行数据分类? 2. 支持向量机求解过程 3. 支持向量机是怎么对 线性不...

网友评论

    本文标题:scikit-learn--SVM(支持向量机)

    本文链接:https://www.haomeiwen.com/subject/anrbxxtx.html