机器学习—SVM

SVM基本原理

  • 找到一个最优的超平面,使得距离超平面最近的样本距离超平面最远,这个距离称为间隔
  • 二维数据找直线:y = wx+b
  • 三维数据找超平面:y = w^Tx+b

超平面的特征

  • 超平面分开了两类
  • 该超平面具有最大化间隔
  • 该超平面处于间隔的中间,到所有支持向量距离相等【支持向量:超平面上的点】

目标函数

距离计算

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gsSQck1d-1645359994544)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20220214212144401.png)]

距离函数优化

去掉绝对值
y ( x ) = w T Φ ( x ) + b y ( x i ) > 0 − > y i = + 1 y ( x i ) < 0 − > y i = − 1 可 得 : y i y ( x i ) > 0 根 据 y i y ( x i ) > 0 可 得 d i s t = y i ∗ ( w T ∗ Φ ( x i ) + b ) ∣ ∣ w ∣ ∣ y(x) = w^T\Phi(x)+b\\ y(x_i)>0->y_i=+1\\ y(x_i)<0->y_i=-1\\ 可得:y_iy(x_i)>0\\ 根据y_iy(x_i)>0可得\\ dist = \frac{y_i*(w^T*\Phi(x_i)+b)}{||w||} y(x)=wTΦ(x)+by(xi)>0>yi=+1y(xi)<0>yi=1yiy(xi)>0yiy(xi)>0dist=wyi(wTΦ(xi)+b)

目标函数

线 性 可 分 时 的 最 大 化 超 平 面 : w ⋅ x + b = 0 支 持 向 量 上 , y i ∗ ∣ w T x 0 + b ∣ = 1 非 支 持 向 量 上 , y i ∗ ∣ w T x 0 + b ∣ > 1 线性可分时的最大化超平面:w·x+b=0\\ 支持向量上,y_i*|w^Tx_0+b|=1\\ 非支持向量上,y_i*|w^Tx_0+b|>1\\ 线wx+b=0yiwTx0+b=1yiwTx0+b>1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6JIVCNVL-1645360054748)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20220214214123895.png)]

拉格朗日求解
  • 涉及对偶条件和KKT条件
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1XCvzNTD-1645359994546)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20220214215830198.png)]
决策方程

y i = s i g n ( y ( x ) ) = s i g n ( w t φ ( x ) + b ) y i = s i g n ( y ( x ) ) = { − 1 , y ( x ) < 0 0 , y ( x ) = 0 1 , y ( x ) > 0 y_i = sign(y(x))=sign(w^tφ(x)+b)\\ y_i = sign(y(x))=\left\{ \begin{aligned} -1 &,y(x)<0 \\ 0 &,y(x)=0 \\ 1 &,y(x)>0 \end{aligned} \right. yi=sign(y(x))=sign(wtφ(x)+b)yi=sign(y(x))=101,y(x)<0,y(x)=0,y(x)>0

支持向量

距离超平面最近的点为支持向量,实际参与计算的样本点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VMV7uy5R-1645359994546)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20220214214740985.png)]
https://zhuanlan.zhihu.com/p/52168498

软间隔

  • 减少噪声点的影响,解决线性不可分问题
  • 线性不可分时,引入非负松弛因子
  • C为松弛因子的系数

非线性处理手段

  • 以上都是基于线性模型,即可以通过直线或一个平面区分类别,但实际有的案例是非线性的,那么上述的方法就无法求解。
同心圆形状分布

异或问题

核函数
φ(x)

x通过φ(x)映射函数转为高维

核函数概念

从低维映射到高维过程中计算内积的简便方法

低维不可分,通过映射到高维实现可分,映射是指将数据通过**φ(x)**从低维映射到高维空间

我们不需要知道映射函数的显示表达式,只要知道一个核函数,也能计算内积

核函数的定义:如果原始特征内积为<x , z> ,映射后为<φ(x), φ(z)>,则**核函数(常数)**定义为:

选择核函数
  • 若特征数量个数和样本数量差不多,则选择线性核函数

  • 若特征数量小,样本数量正常,则选择高斯核函数

  • 若特征数量小,样本数量很大,则选择增加特征,缩小样本和特征差距,实现线性可分

  • 大部分都是高斯核函数

  • 对于一个半正定核矩阵,总能找到一个与之对应的映射φ
    在这里插入图片描述

高斯核函数
  • 高斯核函数别名

    • RBF (Radial Basic Function Kernel)
    • 径向基函数
  • 高斯函数核心思想

    • 将每个样本点映射到一个指定维度的特征空间,从而使数据可分
  • 高斯核函数参数

γ = 1 2 ∗ σ 2 γ = \frac{1}{2*\sigma^2} γ=2σ21

  • 高斯分布
    • u决定分布图中心的偏移情况
    • σ决定分布值峰值高低
    • 高斯函数的σ越大,峰值越小,反之。
SVM多分类问题策略
1对多(ovr)

训练时把某个类别的样本归为一类,剩余样本归为一类,这样k个类别需要k个SVM,分类时把未知样本分类为具有最大分类函数值的那类

如 A B C三类

SVM1 A(+) BC(-)

SVM2 B(+) AC(-)

SVM3 C(+) AB(-)

当出现- 1, +1,+1时,不能区分B和C,这时通过计算(预测置信度)image-20220216094337543,若是正例,选择越大的;若是负例,选择越小的。

将测试集D依次放入SVM1,SVM2,SVM3中训练

优点是计算速度快

缺点是存在偏差

一对一(ovo)

任意两类间设计一个SVM,需要n(n-1)/2个SVM,对未知样本分类时,选择最后投票数最多的类别

SVM(A, B) if A win, A++, else B++;

SVM(A, C) if A win, A++, else C++;

SVM(B, C) if A win, B++, else C++;

缺点是代价比较大

优点:准确较高,SVM是天生为两类问题设计的

DAG-SVMs

有向无环图,一对一中衍生

6个类别训练时需要15个SVM模型,预测时只需k-1个决策函数即可,较ovo快速

DAG-图的决策函数?

每个结点用符号函数做决策,正例往左,负例往右

层次支持向量机(H-SVMs)

层次分类法首先将所有类别分成两个子类,再将子类进一步划分成两个次级子类,如此循环,直到得到一个单独的类别为止

选择LinearSVC还是SVC?
LinearSVC
  • LinearSVC只支持Linear核
  • LinearSVC is not linear SVM
    • 因为LinearSVC最小化合页损失函数的平方,而SVC最小化合页损失函数绝对值(非凸优化)
    • LinearSVC使用ovr,SVC使用ovo进行多分类,当然,SVC可以选择ovr

差异参考:https://scikit-learn.org/stable/auto_examples/svm/plot_iris_svc.html#sphx-glr-auto-examples-svm-plot-iris-svc-py

SVC
  • 支持多种核函数
  • LinearSVC is not linear SVM

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RTzaBxzJ-1645359994547)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20220214105856096.png)]

合页损失函数

当样本被正确分类且函数间隔大于1时,合页损失才是0,否则损失是1-y(wx+b)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PJSpODzZ-1645359994547)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20220214110513740.png)]

sklearn.svm.SVC 参数设置
sklearn.svm.SVC(C=1.0,
                kernel='rbf',
                degree=3, 
                gamma='auto',
                coef0=0.0,
                shrinking=True,
                probability=False,
                tol=0.001,
                cache_size=200,                        
                class_weight=None,
                verbose=False,
                max_iter=-1,
                decision_function_shape=None,
                random_state=None)
   
参数解析
C: C_SVC的软间隔参数,及正则化参数,C越大,松弛因子越小,对误差要求更小,划分更准确,对噪声敏感

kernel:和函数,有以下:'linear','poly','rbf','sigmoid','precomputed'
	0:线性
    1:多项式poly
    2:RBF
    3:sigmoid

degree
    多项式poly的维度,默认为3

tol:停止训练的误差值,默认0.001

decision_function_shape:'ovo''ovr'或者none,默认为none表示二分类,多分类情况下使用'ovr'或者'ovo'

SVR用于回归

未完待续。。。

参考

https://www.bilibili.com/video/BV1wf4y1F7xU?p=64&spm_id_from=pageDriver

https://apachecn.gitee.io/ailearning/#/docs/ml/6

https://www.jianshu.com/p/3ea7bb62ffe8

https://www.cnblogs.com/liqizhou/archive/2012/05/11/2495788.html

1.4-支持向量机 - sklearn中文文档 (sklearncn.cn)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值