美文网首页
支持向量机SVM(Support Vector Machine)

支持向量机SVM(Support Vector Machine)

作者: 夏日丶 | 来源:发表于2019-01-30 19:54 被阅读0次

    from sklearn.svm import SVC

    原理:SVM的解决问题的思路是找到离超平面的最近点,通过其约束条件求出最优解。通过支持向量运算的分类器。其中“机”的意思是机器,可以理解为分类器。 那么什么是支持向量呢?在求解的过程中,会发现只根据部分数据就可以确定分类器,这些数据称为支持向量。

    解决的问题:

            线性分类:在训练数据中,每个数据都有n个的属性和一个二类类别标志,我们可以认为这些数据在一个n维空间里。我们的目标是找到一个n-1维的超平面(hyperplane),这个超平面可以将数据分成两部分,每部分数据都属于同一个类别。 其实这样的超平面有很多,我们要找到一个最佳的。因此,增加一个约束条件:这个超平面到每边最近数据点的距离是最大的。也成为最大间隔超平面(maximum-margin hyperplane)。这个分类器也成为最大间隔分类器(maximum-margin classifier)。 支持向量机是一个二类分类器。

            非线性分类:SVM的一个优势是支持非线性分类。它结合使用拉格朗日乘子法和KKT条件,以及核函数可以产生非线性分类器。SVM的目的是要找到一个线性分类的最佳超平面 f(x)=xw+b=0。求 w 和 b。首先通过两个分类的最近点,找到f(x)的约束条件。有了约束条件,就可以通过拉格朗日乘子法和KKT条件来求解,这时,问题变成了求拉格朗日乘子αi 和 b。对于异常点的情况,加入松弛变量ξ来处理。非线性分类的问题:映射到高维度、使用核函数。

            

    在一个二维环境中,其中点R,S,G点和其它靠近中间黑线的点可以看作为支持向量,它们可以决定分类器,也就是黑线的具体参数。

    我们使用拉格朗日乘子法来求w和b,一个重要原因是使用拉格朗日乘子法后,还可以解决非线性划分问题。 拉格朗日乘子法可以解决下面这个问题:

    消除w之后变为:

    可见使用拉格朗日乘子法后,求w,b的问题变成了求拉格朗日乘子αi和b的问题。 到后面更有趣,变成了不求w了,因为αi可以直接使用到分类器中去,并且可以使用αi支持非线性的情况.

    创建支持向量机的模型:一般用线性核和高斯核,也就是Linear核与RBF核,需要注意的是需要对数据归一化处理,很多使用者忘了这个小细节,然后一般情况下RBF效果是不会差于Linear,但是时间上RBF会耗费更多

            linear(默认):如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM,线性分类器

            poly(多项式):基本不用,非线性分类器

            rbf(Radial Basis Function:基于半径函数也就是高斯核):如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel,非线性分类器

    from sklearn.svm import LinearSVC :SVM自动封装的线性支持向量机,线性分类器

    from sklearn.svm import SVR:还可以使用多种核函数进行回归

    相关文章

      网友评论

          本文标题:支持向量机SVM(Support Vector Machine)

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