机器学习基础 SVM(支持向量机)

文章目录

  • 一、SVM算法简介
    • 1. SVM算法导入
    • 2. SVM算法定义
      • 2.1 定义
      • 2.2 超平面最大间隔介绍
      • 2.3 硬间隔和软间隔
        • 2.3.1 硬间隔分类
        • 2.3.2 软间隔分类
    • 3. 小结
  • 二、SVM算法api初步使用
  • 三、SVM算法原理
    • 1. 定义输入数据
    • 2. 线性可分支持向量机
    • 3. SVM的计算过程与算法步骤
      • 3.1 推导目标函数
      • 3.2 目标函数的求解
        • 3.2.1 拉格朗日乘子法
        • 3.2.2 对偶问题
        • 3.2.3 整体流程确定
    • 4. 举例
  • 四、SVM的损失函数
  • 五、SVM的核方法
    • 1. 什么是核函数
      • 1.1 核函数概念
      • 1.2 核函数举例
        • 1.2.1 核方法举例1:
        • 1.2.2 核方法举例2:
    • 2. 常见核函数
  • 六、SVM回归
  • 七、SVM算法api再介绍
    • 1. SVM算法api综述
    • 2. SVC
    • 3. NuSVC
    • 4. LinearSVC
  • 八、SVM总结
    • 1. SVM基本综述
    • 2. SVM优缺点:

一、SVM算法简介

1. SVM算法导入

在很久以前的情人节,大侠要去救他的爱人,但魔鬼和他玩了一个游戏。

魔鬼在桌子上似乎有规律放了两种颜色的球,说:

“你用一根棍分开它们?要求:尽量在放更多球之后,仍然适用。”

机器学习基础 SVM(支持向量机)_第1张图片

于是大侠这样放,干的不错?

机器学习基础 SVM(支持向量机)_第2张图片

然后魔鬼,又在桌上放了更多的球,似乎有一个球站错了阵营。

机器学习基础 SVM(支持向量机)_第3张图片

怎么办??

把分解的小棍儿变粗。

SVM就是试图把棍放在最佳位置,好让在棍的两边有尽可能大的间隙。

机器学习基础 SVM(支持向量机)_第4张图片

现在即使魔鬼放了更多的球,棍仍然是一个好的分界线。

机器学习基础 SVM(支持向量机)_第5张图片

然后,在SVM 工具箱中有另一个更加重要的技巧( trick)。 魔鬼看到大侠已经学会了一个trick,于是魔鬼给了大侠一个新的挑战。

机器学习基础 SVM(支持向量机)_第6张图片

现在,大侠没有棍可以很好帮他分开两种球了,现在怎么办呢?

当然像所有武侠片中一样大侠桌子一拍,球飞到空中。然后,凭借大侠的轻功,大侠抓起一张纸,插到了两种球的中间。

机器学习基础 SVM(支持向量机)_第7张图片

现在,从魔鬼的角度看这些球,这些球看起来像是被一条曲线分开了。

机器学习基础 SVM(支持向量机)_第8张图片

再之后,无聊的大人们,把上面的物体起了别名:

球—— 「data」数据

棍子—— 「classifier」分类

最大间隙——「optimization」最优化

拍桌子——「kernelling」核方法

纸——「hyperplane」超平面

案例来源:http://bytesizebio.net/2014/02/05/support-vector-machines-explained-well/

2. SVM算法定义

2.1 定义

SVM:SVM全称是supported vector machine(支持向量机),即寻找到一个超平面使样本分成两类,并且间隔最大

SVM能够执行线性或非线性分类、回归,甚至是异常值检测任务。它是机器学习领域最受欢迎的模型之一。SVM特别适用于中小型复杂数据集的分类。

机器学习基础 SVM(支持向量机)_第9张图片

2.2 超平面最大间隔介绍

机器学习基础 SVM(支持向量机)_第10张图片

上左图显示了三种可能的线性分类器的决策边界:

虚线所代表的模型表现非常糟糕,甚至都无法正确实现分类。其余两个模型在这个训练集上表现堪称完美,但是它们的决策边界与实例过于接近,导致在面对新实例时,表现可能不会太好

右图中的实线代表SVM分类器的决策边界,不仅分离了两个类别,且尽可能远离最近的训练实例

2.3 硬间隔和软间隔

2.3.1 硬间隔分类

在上面我们使用超平面进行分割数据的过程中,如果我们严格地让所有实例都不在最大间隔之间,并且位于正确的一边,这就是硬间隔分类。

硬间隔分类有两个问题,首先,它只在数据是线性可分离的时候才有效;其次,它对异常值非常敏感

当有一个额外异常值的鸢尾花数据:左图的数据根本找不出硬间隔,而右图最终显示的决策边界与我们之前所看到的无异常值时的决策边界也大不相同,可能无法很好地泛化。

机器学习基础 SVM(支持向量机)_第11张图片

2.3.2 软间隔分类

要避免这些问题,最好使用更灵活的模型。目标是尽可能在保持最大间隔宽阔和限制间隔违例(即位于最大间隔之上,甚至在错误的一边的实例)之间找到良好的平衡,这就是软间隔分类。

要避免这些问题,最好使用更灵活的模型。目标是尽可能在保持间隔宽阔和限制间隔违例之间找到良好的平衡,这就是软间隔分类。

机器学习基础 SVM(支持向量机)_第12张图片

在Scikit-Learn的SVM类中,可以通过超参数C来控制这个平衡:C值越小,则间隔越宽,但是间隔违例也会越多。上图显示了在一个非线性可分离数据集上,两个软间隔SVM分类器各自的决策边界和间隔。

左边使用了高C值,分类器的错误样本(间隔违例)较少,但是间隔也较小。

右边使用了低C值,间隔大了很多,但是位于间隔上的实例也更多。看起来第二个分类器的泛化效果更好,因为大多数间隔违例实际上都位于决策边界正确的一边,所以即便是在该训练集上,它做出的错误预测也会更少。

3. 小结

  • SVM算法定义【了解】
    • 寻找到一个超平面使样本分成两类,并且间隔最大。
  • 硬间隔和软间隔【知道】
    • 硬间隔
      • 只有在数据是线性可分离的时候才有效
      • 对异常值非常敏感
    • 软间隔
      • 尽可能在保持最大间隔宽阔和限制间隔违例之间找到良好的平衡

二、SVM算法api初步使用

>>> from sklearn import svm
>>> X = [[0, 0], [1, 1]]
>>> y = [0, 1]
>>> clf = svm.SVC()
>>> clf.fit(X, y)  
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
 decision_function_shape='ovr', degree=3, gamma='scale', kernel='rbf',
 max_iter=-1, probability=False, random_state=None, shrinking=True,
 tol=0.001, verbose=False)

在拟合后, 这个模型可以用来预测新的值:

>>> clf.predict([[2., 2.]])
array([1])

三、SVM算法原理

1. 定义输入数据

假设给定一个特征空间上的训练集为:

机器学习基础 SVM(支持向量机)_第13张图片

其中, ( x i , y i ) (x_i,y_i) (xi,yi)称为样本点。

  • x i x_i xi​​ 为第i个实例(样本),

  • y i y_i yi​为 x i x_i xi​​ 的标记:

    • y i = 1 y_i=1 yi=1时, x i x_i xi​​ 为正例
    • y i = − 1 y_i=-1 yi=1时, x i x_i xi为负例

至于为什么正负用(-1,1)表示呢?

其实这里没有太多原理,就是一个标记,你也可以用(2,-3)来标记。只是>为了方便, y i / y j = y i ∗ y j y_i/y_j=y_i*y_j yi/yj=yiyj​​ 的过程中刚好可以相等,便于之后的计算。)

2. 线性可分支持向量机

给定了上面提出的线性可分训练数据集,通过间隔最大化得到分离超平面为 : y ( x ) = w T Φ ( x ) + b y(x)=w^T\Phi(x)+b y(x)=wTΦ(x)+b
相应的分类决策函数为: f ( x ) = s i g n ( w T Φ ( x ) + b ) f(x)=sign(w^T\Phi(x)+b) f(x)=sign(wTΦ(x)+b)
以上决策函数就称为线性可分支持向量机。

这里解释一下 Φ ( x ) \Phi(x) Φ(x)这个东东。

这是某个确定的特征空间转换函数,它的作用是将x映射到更高的维度,它有一个以后我们经常会见到的专有称号”核函数“。

比如我们看到的特征有2个:

x 1 , x 2 x1,x2 x1,x2组成最先见到的线性函数可以是 w 1 x 1 + w 2 x 2 w_1x_1+w_2x_2 w1x1+w2x2​.

但也许这两个特征并不能很好地描述数据,于是我们进行维度的转化,变成了 w 1 x 1 + w 2 x 2 + w 3 x 1 x 2 + w 4 x 1 2 + w 5 x 2 2 w_1x_1+w_2x_2+w_3x_1x_2+w_4x_1^2+w_5x_2^2 w1x1+w2x2+w3x1x2+w4x12+w5x22.

于是我们多了三个特征。而这个就是笼统地描述x的映射的。

最简单直接的就是: Φ ( x ) = x \Phi(x)=x Φ(x)=x

以上就是线性可分支持向量机的模型表达式。我们要去求出这样一个模型,或者说这样一个超平面y(x),它能够最优地分离两个集合。

其实也就是我们要去求一组参数(w,b),使其构建的超平面函数能够最优地分离两个集合

如下就是一个最优超平面:

机器学习基础 SVM(支持向量机)_第14张图片

又比如说这样:

机器学习基础 SVM(支持向量机)_第15张图片

阴影部分是一个“过渡带”,“过渡带”的边界是集合中离超平面最近的样本点落在的地方。

3. SVM的计算过程与算法步骤

3.1 推导目标函数

我们知道了支持向量机是个什么东西了。现在我们要去寻找这个支持向量机,也就是寻找一个最优的超平面。

于是我们要建立一个目标函数。那么如何建立呢?

再来看一下我们的超平面表达式: y ( x ) = w T Φ ( x ) + b y(x)=w^T\Phi(x)+b y(x)=wTΦ(x)+b

为了方便我们让: Φ ( x ) = x \Phi(x)=x Φ(x)=x

则在样本空间中,划分超平面可通过如下线性方程来描述: w T x + b = 0 w^Tx+b=0 wTx+b=0

  • 我们知道 w = ( w 1 , w 2 , . . . , w d ) w=(w_1,w_2,...,w_d) w=(w1,w2,...,wd)为法向量,决定了超平面的方向;

  • b为位移项,决定了超平面和原点之间的距离。

  • 显然,划分超平面可被法向量w和位移b确定,我们把其记为(w,b).

样本空间中任意点x到超平面(w,b)的距离可写成

在这里插入图片描述

假设超平面(w, b)能将训练样本正确分类,即对于 ( x i , y i ) ∈ D (x_i, y_i)\in D (xi,yi)D

  • y i = + 1 y_i=+1 yi=+1,则有$w^Tx_i+b>0;
  • y i = − 1 y_i=-1 yi=1 ,则有 w T x i + b < 0 w^Tx_i+b<0 wTxi+b<0;

机器学习基础 SVM(支持向量机)_第16张图片

如图所示,距离超平面最近的几个训练样本点使上式等号成立,他们被称为“支持向量",

两个异类支持向量到超平面的距离之和为:
在这里插入图片描述

它被称为“”间隔“”。

机器学习基础 SVM(支持向量机)_第17张图片

欲找到具有最大间隔的划分超平面,也就是要找到能满足下式中约束的参数w和b,使得 γ \gamma γ最大。

机器学习基础 SVM(支持向量机)_第18张图片

即:

机器学习基础 SVM(支持向量机)_第19张图片

显然,为了最大化间隔,仅需要最大化 ∣ ∣ w ∣ ∣ − 1 {||w||}^{-1} w1,这等价于最小化 ∣ ∣ w ∣ ∣ 2 {||w||}^{2} w2。于是上式可以重写为:

机器学习基础 SVM(支持向量机)_第20张图片

这就是支持向量机的基本型。

3.2 目标函数的求解

到这一步,终于把目标函数给建立起来了。

那么下一步自然是去求目标函数的最优值.

因为目标函数带有一个约束条件,所以我们可以用拉格朗日乘子法求解。

3.2.1 拉格朗日乘子法

啥是拉格朗日乘子法呢?

拉格朗日乘子法 (Lagrange multipliers)是一种寻找多元函数在一组约束下的极值的方法.

通过引入拉格朗日乘子,可将有 d 个变量与 k 个约束条件的最优化问题转化为具有 d + k 个变量的无约束优化问题求解。

https://blog.csdn.net/lijil168/article/details/69395023


经过朗格朗日乘子法,我们可以把目标函数转换为:

在这里插入图片描述

其中,上式后半部分:

在这里插入图片描述

走到这一步,这个目标函数还是不能开始求解,现在我们的问题是极小极大值问题

3.2.2 对偶问题

我们要将其转换为对偶问题,变成极大极小值问题:

m i n m a x L ( w , b , α ) min maxL(w,b,\alpha) minmaxL(w,b,α)变为: m a x m i n L ( w , b , α ) max min L(w,b,\alpha) maxminL(w,b,α)

如何获取对偶函数?

  • 首先我们对原目标函数的w和b分别求导:

    • 原目标函数:在这里插入图片描述

    • 对w求偏导: 在这里插入图片描述

    • 对b求偏导:在这里插入图片描述

  • 然后将以上w和b的求导函数重新代入原目标函数的w和b中,得到的就是原函数的对偶函数:
    机器学习基础 SVM(支持向量机)_第21张图片

  • 这个对偶函数其实求的是: m a x m i n L ( w , b , α ) max min L(w,b,\alpha) maxminL(w,b,α)中的 m i n L ( w , b ) minL(w,b) minL(w,b)部分(因为对w,b求了偏导)。

  • 于是现在要求的是这个函数的极大值max(a),写成公式就是:

机器学习基础 SVM(支持向量机)_第22张图片

  • 好了,现在我们只需要对上式求出极大值 α \alpha α,然后将 α \alpha α代入w求偏导的那个公式:
    机器学习基础 SVM(支持向量机)_第23张图片

  • 从而求出w.

  • 将w代入超平面的表达式,计算b值;

  • 现在的w,b就是我们要寻找的最优超平面的参数。

3.2.3 整体流程确定

我们用数学表达式来说明上面的过程:

1)首先是求在这里插入图片描述的极大值。即:
在这里插入图片描述

注意有两个约束条件。

对目标函数添加符号,转换成求极小值:
在这里插入图片描述

2)计算上面式子的极值求出 α ∗ \alpha^* α​​ ;

3)将 α ∗ \alpha^* α​​ 代入,计算w,b

在这里插入图片描述

4)求得超平面:

在这里插入图片描述

5)求得分类决策函数:

在这里插入图片描述

4. 举例

给定3个数据点:正例点 x 1 = ( 3 , 3 ) , x 2 = ( 4 , 3 ) x1=(3,3),x2=(4,3) x1=(3,3),x2=(4,3),负例点 x 3 = ( 1 , 1 ) x3=(1,1) x3=(1,1),求线性可分支持向量机。 三个点画出来:

机器学习基础 SVM(支持向量机)_第24张图片

  1. 首先确定目标函数

机器学习基础 SVM(支持向量机)_第25张图片

  1. 求得目标函数的极值
  • 原式:机器学习基础 SVM(支持向量机)_第26张图片

  • 把数据代入:在这里插入图片描述

  • 由于:在这里插入图片描述

  • 化简可得:机器学习基础 SVM(支持向量机)_第27张图片

  • α 1 , α 2 \alpha_1,\alpha_2 α1,α2求偏导并令其为0,易知 s ( α 1 , α 2 ) s(\alpha_1,\alpha_2) s(α1,α2)在点(1.5, -1)处取极值。

  • 而该点不满足条件 α 2 > = 0 {\alpha}_2 >= 0 α2>=0 ,所以,最小值在边界上达到。

    • α 1 = 0 \alpha_1=0 α1=0时,最小值 s ( 0 , 2 13 ) = − 2 13 = − 0.1538 s(0,\frac{2}{13})=-\frac{2}{13}=-0.1538 s(0,132)=132=0.1538
    • α 2 = 0 \alpha_2=0 α2=0时,最小值 s ( 1 4 , 0 ) = − 1 4 = − 0.25 s(\frac{1}{4},0)=-\frac{1}{4}=-0.25 s(41,0)=41=0.25
  • 于是, s ( α 1 , α 2 ) s(\alpha_1,\alpha_2) s(α1,α2) α 1 = 0 \alpha_1=0 α1=0, α 2 = 0 \alpha_2=0 α2=0时达到最小,此时:

    • α 3 = α 1 + α 2 = 1 4 \alpha_3 = \alpha_1+\alpha_2 = \frac{1}{4} α3=α1+α2=41
      ​​
  1. 将求得的极值代入从而求得最优参数w,b
  • α 1 = α 3 = 1 4 \alpha_1 = \alpha_3 = \frac{1}{4} α1=α3=41对应的点 x 1 , x 3 x_1,x_3 x1,x3​​ 就是支持向量机
  • 代入公式:

在这里插入图片描述

  • α \alpha α结果代入求解:在这里插入图片描述

  • 在这里插入图片描述

  • 平面方程为: 0.5 x 1 + 0.5 x 2 − 2 = 0 0.5x_1+0.5x_2-2=0 0.5x1+0.5x22=0

  1. 因此得到分离超平面为

0.5 x 1 + 0.5 x 2 − 2 = 0 0.5x_1+0.5x_2-2=0 0.5x1+0.5x22=0

  1. 得到分离决策函数为:

f ( x ) = s i g n ( 0.5 x 1 + 0.5 x 2 − 2 ) f(x)=sign(0.5x_1+0.5x_2-2) f(x)=sign(0.5x1+0.5x22)

四、SVM的损失函数

在SVM中,我们主要讨论三种损失函数:

机器学习基础 SVM(支持向量机)_第28张图片

  • 绿色:0/1损失

    • 当正例的点落在y=0这个超平面的下边,说明是分类正确,无论距离超平面所远多近,误差都是0.
    • 当这个正例的样本点落在y=0的上方的时候,说明分类错误,无论距离多远多近,误差都为1.
    • 图像就是上图绿色线。
  • 蓝色:SVM Hinge损失函数

    • 当一个正例的点落在y=1的直线上,距离超平面长度1,那么1-ξ=1,ξ=0,也就是说误差为0;
    • 当它落在距离超平面0.5的地方,1-ξ=0.5,ξ=0.5,也就是说误差为0.5;
    • 当它落在y=0上的时候,距离为0,1-ξ=0,ξ=1,误差为1;
    • 当这个点落在了y=0的上方,被误分到了负例中,距离算出来应该是负的,比如-0.5,那么1-ξ=-0.5,ξ=-1.5.误差为1.5.
    • 以此类推,画在二维坐标上就是上图中蓝色那根线了。
  • 红色:Logistic损失函数

    • 损失函数的公式为: l n ( 1 + e − y i ) ln(1+e^{-y_i}) ln(1+eyi)
    • y i = 0 y_i=0 yi=0时,损失等于ln2,这样真丑,所以我们给这个损失函数除以ln2.
    • 这样到 y i = 0 y_i=0 yi=0时,损失为1,即损失函数过(0,1)点
    • 即上图中的红色线。

五、SVM的核方法

了解常见的核函数
【SVM + 核函数】 具有极大威力。

核函数并不是SVM特有的,核函数可以和其他算法也进行结合,只是核函数与SVM结合的优势非常大。

1. 什么是核函数

1.1 核函数概念

核函数,是将原始输入空间映射到新的特征空间,从而,使得原本线性不可分的样本可能在核空间可分。

机器学习基础 SVM(支持向量机)_第29张图片

下图所示的两类数据,分别分布为两个圆圈的形状,这样的数据本身就是线性不可分的,此时该如何把这两类数据分开呢?

  • 假设X是输入空间,
  • H是特征空间,
  • 存在一个映射ϕ使得X中的点x能够计算得到H空间中的点h,
  • 对于所有的X中的点都成立:

在这里插入图片描述

若x,z是X空间中的点,函数k(x,z)满足下述条件,那么都成立,则称k为核函数,而ϕ为映射函数:

在这里插入图片描述

1.2 核函数举例

1.2.1 核方法举例1:

机器学习基础 SVM(支持向量机)_第30张图片

机器学习基础 SVM(支持向量机)_第31张图片

机器学习基础 SVM(支持向量机)_第32张图片
在这里插入图片描述

经过上面公式,具体变换过过程为:

机器学习基础 SVM(支持向量机)_第33张图片

1.2.2 核方法举例2:

  • 下面这张图位于第一、二象限内。我们关注红色的门,以及“北京四合院”这几个字和下面的紫色的字母。
  • 我们把红色的门上的点看成是“+”数据,字母上的点看成是“-”数据,它们的横、纵坐标是两个特征。
  • 显然,在这个二维空间内,“+”“-”两类数据不是线性可分的。

机器学习基础 SVM(支持向量机)_第34张图片

机器学习基础 SVM(支持向量机)_第35张图片

(前后轴为x轴,左右轴为y轴,上下轴为z轴)

  • 绿色的平面可以完美地分割红色和紫色,两类数据在三维空间中变成线性可分的了。

  • 三维中的这个判决边界,再映射回二维空间中:是一条双曲线,它不是线性的。

  • 核函数的作用就是一个从低维空间到高维空间的映射,而这个映射可以把低维空间中线性不可分的两类点变成线性可分的。

机器学习基础 SVM(支持向量机)_第36张图片

2. 常见核函数

机器学习基础 SVM(支持向量机)_第37张图片

1.多项核中,d=1时,退化为线性核;

2.高斯核亦称为RBF核。

  • 线性核和多项式核

    • 这两种核的作用也是首先在属性空间中找到一些点,把这些点当做base,核函数的作用就是找与该点距离和角度满足某种关系的样本点。
    • 当样本点与该点的夹角近乎垂直时,两个样本的欧式长度必须非常长才能保证满足线性核函数大于0;而当样本点与base点的方向相同时,长度就不必很长;而当方向相反时,核函数值就是负的,被判为反类。即,它在空间上划分出一个梭形,按照梭形来进行正反类划分。
  • RBF核

    • 高斯核函数就是在属性空间中找到一些点,这些点可以是也可以不是样本点,把这些点当做base,以这些base为圆心向外扩展,扩展半径即为带宽,即可划分数据。
    • 换句话说,在属性空间中找到一些超圆,用这些超圆来判定正反类。
  • Sigmoid核

    • 同样地是定义一些base,
    • 核函数就是将线性核函数经过一个tanh函数进行处理,把值域限制在了-1到1上。
  • 总之,都是在定义距离,大于该距离,判为正,小于该距离,判为负。至于选择哪一种核函数,要根据具体的样本分布情况来确定。


一般有如下指导规则:
1) 如果Feature的数量很大,甚至和样本数量差不多时,往往线性可分,这时选用LR或者线性核Linear;
2) 如果Feature的数量很小,样本数量正常,不算多也不算少,这时选用RBF核;
3) 如果Feature的数量很小,而样本的数量很大,这时手动添加一些Feature,使得线性可分,然后选用LR或者线性核Linear;
4) 多项式核一般很少使用,效率不高,结果也不优于RBF;
5) Linear核参数少,速度快;RBF核参数多,分类结果非常依赖于参数,需要交叉验证或网格搜索最佳参数,比较耗时;
6)应用最广的应该就是RBF核,无论是小样本还是大样本,高维还是低维等情况,RBF核函数均适用。

六、SVM回归

SVM回归是让尽可能多的实例位于预测线上,同时限制间隔违例(也就是不在预测线距上的实例)。

线距的宽度由超参数ε控制。

机器学习基础 SVM(支持向量机)_第38张图片

七、SVM算法api再介绍

1. SVM算法api综述

  • SVM方法既可以用于分类(二/多分类),也可用于回归和异常值检测。
  • SVM具有良好的鲁棒性,对未知数据拥有很强的泛化能力,特别是在数据量较少的情况下,相较其他传统机器学习算法具有更优的性能。

使用SVM作为模型时,通常采用如下流程:

  • 对样本数据进行归一化
  • 应用核函数对样本进行映射(最常采用和核函数是RBF和Linear,在样本线性可分时,Linear效果要比RBF好)
  • 用cross-validation和grid-search对超参数进行优选
  • 用最优参数训练得到模型
  • 测试

sklearn中支持向量分类主要有三种方法:SVC、NuSVC、LinearSVC,扩展为三个支持向量回归方法:SVR、NuSVR、LinearSVR。

  • SVC和NuSVC方法基本一致,唯一区别就是损失函数的度量方式不同
    • NuSVC中的nu参数和SVC中的C参数;
  • LinearSVC是实现线性核函数的支持向量分类,没有kernel参数。

2. SVC

class sklearn.svm.SVC(C=1.0, kernel='rbf', degree=3,coef0=0.0,random_state=None)
  • C: 惩罚系数,用来控制损失函数的惩罚系数,类似于线性回归中的正则化系数。
    • C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样会出现训练集测试时准确率很高,但泛化能力弱,容易导致过拟合。
    • C值小,对误分类的惩罚减小,容错能力增强,泛化能力较强,但也可能欠拟合。
  • kernel: 算法中采用的核函数类型,核函数是用来将非线性问题转化为线性问题的一种方法。
    • 参数选择有RBF, Linear, Poly, Sigmoid或者自定义一个核函数。
      • 默认的是"RBF",即径向基核,也就是高斯核函数;
      • 而Linear指的是线性核函数,
      • Poly指的是多项式核,
      • Sigmoid指的是双曲正切函数tanh核;
  • degree:
    • 当指定kernel为’poly’时,表示选择的多项式的最高次数,默认为三次多项式;
    • 若指定kernel不是’poly’,则忽略,即该参数只对’poly’有用。
      • 多项式核函数是将低维的输入空间映射到高维的特征空间。
  • coef0: 核函数常数值(y=kx+b中的b值),
    • 只有‘poly’和‘sigmoid’核函数有,默认值是0。

3. NuSVC

class sklearn.svm.NuSVC(nu=0.5)
  • nu: 训练误差部分的上限和支持向量部分的下限,取值在(0,1)之间,默认是0.5

4. LinearSVC

class sklearn.svm.LinearSVC(penalty='l2', loss='squared_hinge', dual=True, C=1.0)
  • penalty:正则化参数,
    • L1和L2两种参数可选,仅LinearSVC有。
  • loss:损失函数,
    • 有hinge和squared_hinge两种可选,前者又称L1损失,后者称为L2损失,默认是squared_hinge,
    • 其中hinge是SVM的标准损失,squared_hinge是hinge的平方
  • dual:是否转化为对偶问题求解,默认是True。
  • C:惩罚系数,
    • 用来控制损失函数的惩罚系数,类似于线性回归中的正则化系数。

八、SVM总结

1. SVM基本综述

  • SVM是一种二类分类模型。

  • 它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器。

    • 1)当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;
    • 2)当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;
    • 3)当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。

2. SVM优缺点:

  • SVM的优点:

    • 在高维空间中非常高效;
    • 即使在数据维度比样本数量大的情况下仍然有效;
    • 在决策函数(称为支持向量)中使用训练集的子集,因此它也是高效利用内存的;
    • 通用性:不同的核函数与特定的决策函数一一对应;
  • SVM的缺点:

    • 如果特征数量比样本数量大得多,在选择核函数时要避免过拟合;
    • 对缺失数据敏感;
    • 对于核函数的高维映射解释力不强

你可能感兴趣的:(人工智能,支持向量机,机器学习,算法,人工智能)