目录

一、支持向量机原理

1. SVM目标

2. 距离与数据定义

3. 目标函数推导

4. 目标函数求解

4.1 KKT条件

4.2 拉格朗日乘子法——强对偶性

4.3 拉格朗日乘子法—— 求解

4.4 SMO算法——求解max ()

5. 软间隔

6. SVM核变换

二、常见问题

1. LR和SVM区别

2. SVM损失函数

3. SVM的原理是什么?

4. 对偶计算的作用

5. 为什么SVM对缺失数据、噪声敏感

6. SVM如何处理多分类问题

7. SVM如何处理样本不平衡的问题

8. SVM用在大数据的缺陷

9. SVM优缺点


一、支持向量机原理

1. SVM目标

SVM可以用于二分类或多分类,此处以二分类为例。SVM的目标是寻找一个最优化超平面可以在空间中分割两类数据,这个最优化超平面需要满足的条件是:离其最近的点到其的距离最大化。

一句话解释:最大化离超平面最近点(支持向量)到该平面的距离。

2. 距离与数据定义

点x到空间直线的距离为:

                                                 (1)

就是标签,假设这里是二分类问题,其值是1和-1,其保证了不论样本属于哪一类,最终值都保证是正数,则有:

                             (2)

3. 目标函数推导

由1中的图可知,支持向量到达我们要优化的超平面 的距离就是 ,两侧的距离加起来就是

则目标函数为:

                               (3)

其中min 为找最近的支持向量,argmax为找到什么样的w,b到平面的距离越远越好

假设支持向量到超平面的函数距离设为1,自然其他非最近点的函数距离便是大于1,于是得到不等式约束优化问题:

                   (4)

4. 目标函数求解

由于最大值问题不好求解,因此将公式4转换为:

                     (5)

4.1 KKT条件

4.2 拉格朗日乘子法——强对偶性

将带约束的优化问题(公式5)转换为不带约束的

                              (6)

分两种情况对公式(6)考虑

(1) 时,为无穷大,无意义

(2)时,

综上, min( 正无穷,) = 

因此公式(6)可转换为(7):

根据KKT条件的强对偶性,转换为(8):

4.3 拉格朗日乘子法—— 求解

(1)令分别对w,b求偏导,令其等于0:

(2)带入公式(6),得到:

问题变成(9):

4.4 SMO算法——求解max ()

(1)求解

SMO的基本思路是先固定之外的参数,然后求上的极值。由于存在约束,若固定之外的其他变量,则可由其他变量导出。

SMO每次选择两个变量,并固定其他参数,这样,在参数初始化后,SMO不断执行如下两个步骤直至收敛:

  1. 选取一对需要更新的变量
  2. 固定之外的参数,更新

那么如何选取? SMO先选取违背KKT条件程度最大的变量,然后选取一个使目标函数值增长最快的变量。但由于比较各变量所对应的目标函数值增幅的复杂度过高,因此SMO采用了一个启发式:使选取的两变量所对应样本之间的间隔最大。原因是:这样两个变量有较大的差别,与对两个相似的变量进行更新对比,对他们进行更新会给目标函数更大的变化。

  SMO算法之所以高效,是因为固定其他参数后,仅优化两个参数的过程能做到十分高效。

可以将 消掉,只保留,公式(9)就变成了关于 的单变量二次规划问题,约束是 ⩾0 ,有**闭式解**。

(2)求解b

对于任意支持向量都有 ,即公式(11):

理论上,可通过任意支持向量利用式子11求解b,但常用算法:使用所有支持向量求解的平均值

(3)求解w

通过对w偏导公式可得:

至此,解完优化问题。

5. 软间隔

在现实中往往很难确定训练样本是否线性可分,即便恰好找到某个核函数使训练集在特征空间中线性可分,也很难判定这个结果是不是由于过拟合引起的。缓解该问题的一个办法是允许支持向量机在一些样本上出错,为此,引入“软间隔”。

前面的推导我们要求  ,现在,我们将条件放宽:

得到新的目标函数

C>0为惩罚参数,代表对离群点的重视程度,C越大,越不想丢掉它们

C越大,对误分类的惩罚越大,分类越严格不能出错,越小

C越小,对误分类的惩罚越小。有更大的错误容忍,越大

得到新的目标函数:

6. SVM核变换

核函数的目标是,对于线性不可分函数,找到一种变换的方法,将其从原始特征空间映射到高维空间,则能线性可分。即计算由n维空间变为n*n维空间。

这样超平面变为:

常见的核函数有:

(1)线型核

当样本的特征很多且位数很高时可选用SVM的线型核函数。适用于线性可分的情形,参数少,速度快,对于一般数据,分类效果很理想。

(2)高斯核:

主要用于线性不可分的情形,参数多,分类结果非常依赖与参数,通常采用交叉检验确定最优参数,但是通常比较耗时。

会将原始空间映射为无穷维空间。若很大,则高次特征上的权重实际上衰减的非常快,相当于一个低维子空间;若很小,可将任意数据映射为线性可分,但是随之而来的可能是严重过拟合。通过调整,高斯核具有较高的灵活性

当样本的数量可观且维度不高时,一般优先使用高斯核函数,因为高斯核函数为一种局部性较强的核函数,无论对于大样本还是小样本均有较好的性能且相对于多项式核函数有较小的参数

σ较大,导致高偏差,高次特征衰减越快,偏线性(高斯分布太平滑);

σ较小,导致高方差。无穷维,可解决任何数据,但易过拟合(高斯分布瘦长)

(3)多项式核函数

适合于正交归一化后的数据

如何选择核函数:

(1)可利用先验知识确定问题是否线性可分

  1. 特征数近似等于样本数量:线型核
  2. 特征小,样本数正常:高斯核
  3. 特征少,样本很大,需要手工添加特征变成第一种情况

(2)交叉验证,尝试不通核函数,找到误差最小的即为效果最好的核函数

(3)混合核函数,将不同核函数结合起来

二、常见问题

1. LR和SVM区别

联系

  1. LR和SVM都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题)
  2. 如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的
  3. LR和SVM都是监督学习算法。
  4. LR和SVM都是判别模型。

区别

  1. LR是参数模型,SVM是非参数模型。
  2. 从目标函数来看,逻辑回归采用的是Logistical Loss,SVM采用的是hinge loss. 这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。SVM的处理方法是只考虑Support Vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。
  3. 逻辑回归相对来说模型更简单,好理解,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离。在解决非线性问题时,支持向量机采用核函数的机制,而LR通常不采用核函数的方法。
  4. 线性SVM依赖数据表达的距离测度,所以需要对数据先做normalization,LR不受其影响。
  5. SVM的损失函数就自带正则(损失函数中的1/2||w||^2项),这就是为什么SVM是结构风险最小化算法的原因。而LR必须另外在损失函数上添加正则项。

在统计学中,参数模型通常假设总体(随机变量)服从某一个分布,该分布由一些参数确定(比如正太分布由均值和方差确定),在此基础上构建的模型称为参数模型;非参数模型对于总体的分布不做任何假设,只是知道总体是一个随机变量,其分布是存在的(分布中也可能存在参数),但是无法知道其分布的形式,更不知道分布的相关参数,只有在给定一些样本的条件下,能够依据非参数统计的方法进行推断。

经验风险最小化:关于训练样本集的平均损失最小

结构风险最小化:为防止过拟合提出,等同于正则化,在经验风险基础上加上表示模型复杂度的正则项

2. SVM损失函数

3. SVM的原理是什么?

SVM是一种二类分类模型。它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器。(间隔最大是它有别于感知机)

(1)当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;

(2)当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;

(3)当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。

注:以上各SVM的数学推导应该熟悉:硬间隔最大化(几何间隔)---学习的对偶问题---软间隔最大化(引入松弛变量)---非线性支持向量机(核技巧)。

4. 对偶计算的作用

  1. 对偶问题将原始问题中的约束转为了对偶问题中的等式约束

    是对偶问题往往更易求解(当我们寻找约束存在时的最优点的时候,约束的存在虽然减小了需要搜寻的范围,但是却使问题变得更加复杂。为了使问题变得易于处理,我们的方法是把目标函数和约束全部融入一个新的函数,即拉格朗日函数,再通过这个函数来寻找最优点。)

  2. 方便核函数的引入,进而推广到非线性分类问题
  3. 改变了问题的复杂度。原问题的求解复杂度与特征的维数相关,而转成对偶问题后只与问题的变量个数有关。通过拉格朗日算子法使带约束的优化目标转为不带约束的优化函数,使得W和b的偏导数等于零,带入原来的式子,再通过转成对偶问题。由求特征向量w转化为求比例系数a,在原始问题下,求解的复杂度与样本的维度有关,即w的维度。
  4. 求解更高效,因为只用求解比例系数a,而比例系数a只有支持向量才为非0,其他全为0.

5. 为什么SVM对缺失数据、噪声敏感

(1)缺失数据

这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM没有处理缺失值的策略(决策树有)。而SVM希望样本在特征空间中线性可分,所以特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏。

(2)噪声数据

SVM的目的是求出与支持向量由最大化距离的直线,以每个样本为圆心,该距离为半径做圆,可近似认为圆内的点与该样本属于相同分类。若出现噪声,那么这个噪声所带来的的错误分类也将最大化,所以SVM对噪声敏感。即一个噪声样本会影响以其到分类超平面的距离为半径的圆内的所有数据的分类效果

6. SVM如何处理多分类问题

(1)直接法

直接在目标函数上修改,将多个分类面的参数求解合并到一个最优化问题里面。看似简单但是计算复杂度非常大,实现起来较为困难,只适用于小型问题中。

(2)间接法一对多

对每个类都训练出一个分类器,设定目标类为一类,其余类为另外一类。这样针对k个类可以训练出k个分类器,当有一个新的样本来的时候,用这k个分类器来测试,那个分类器的概率高,那么这个样本就属于哪一类。这种方法效果不太好,bias比较高。

(3)间接法一对一

针对任意两个类训练出一个分类器,如果有k类,一共训练出个分类器,这样当有一个新的样本要来的时候,用这个分类器来测试,每当被判定属于某一类的时候,该类就加一,最后票数最多的类别被认定为该样本的类。这种方法虽好,但是需要个分类器代价太大。

(4)层次支持向量机

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

7. SVM如何处理样本不平衡的问题

(1)调整惩罚因子

给样本数量少的负类更大的惩罚因子,表示重视这部分样本

(2)调整样本

欠采样、过采样

8. SVM用在大数据的缺陷

SVM的空间消耗主要是存储训练样本核矩阵,由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间。若数据量较大,SVM训练时间就会较长。

9. SVM优缺点

优点:

  1. 使用核函数可以向高维空间进行映射,解决非线性的分类
  2. 分类思想简单,将样本与决策面的间隔最大化
  3. 分类效果较好

缺点:

  1. 对大规模数据训练比较困难,因为是二次规划求解
  2. 无法支持多分类,但是可以使用间接方法做
  3. 对缺失数据敏感,对核函数选择敏感,对离群点敏感

参考文献:

1. svm原理详细推导

2. 机器学习】支持向量机SVM原理及推导

3. 机器学习:支持向量机SVM原理与理解

4. 支持向量机原理(三)线性不可分支持向量机与核函数

5. 《机器学习》 周志华

6.数据挖掘(机器学习)面试--SVM面试常考问题

算法知识点——(3)监督学习——SVM相关推荐

  1. 机器学习算法(4)——SVM(以及拉格朗日对偶问题)

    假设在桌子上似乎有规律放了两种颜色的球,你用一根棍分开它们?要求:尽量在放更多球之后,仍然适用." 于是我们这样分了: 然后我们往在桌上放了更多的球,似乎有一个球站错了阵营:SVM就是试图把 ...

  2. 监督学习 | SVM 之支持向量机Sklearn实现

    文章目录 Sklearn 支持向量机 1. 支持向量机分类 1.1 线性 SVM 分类 1.2 非线性 SVM 分类 1.2.1 多项式内核 1.2.2 高斯 RBF 内核 2. 支持向量机回归 2. ...

  3. 监督学习 | SVM 之线性支持向量机原理

    文章目录 支持向量机 1. 线性可分支持向量机 1.1 间隔计算公式推导 1.2 硬间隔最大化 1.2.1 原始问题 1.2.2 对偶算法 1.3 支持向量 2. 线性支持向量机 2.1 软间隔最大化 ...

  4. 【面试复习系列】常用机器学习算法知识点及其解析,面试官会考的几乎都有,欢迎补充

    图片慢慢上传,看不到图片的请点这里: 常用机器学习算法知识点及其解析,面试官会考的几乎都有 LR:logistic regression  对数几率回归/逻辑回归 sigmoid函数的作用就是用于把输 ...

  5. 机器学习算法:支持向量机(SVM)

    参考书籍: Solem<python计算机视觉编程>.李航<统计学习方法>.周志华<机器学习> 要理解好支持向量机需要较好的数学功底,且能不被公式以及文字绕晕,这里 ...

  6. 监督学习 | SVM 之非线性支持向量机原理

    文章目录 1. 非线性支持向量机 1.1 核技巧 1.2 核函数 1.2.1 核函数选择 1.2.2 RBF 函数 参考资料 相关文章: 机器学习 | 目录 机器学习 | 网络搜索及可视化 监督学习 ...

  7. 中括号 上面 缺一横 下面缺一横 不大于 不小于 算法知识点

    算法知识点 取底符号 ⌊ x ⌋ 上面缺一横: 不大于x的最大整数. 『x 下面缺一横: 不小于x的最小整数『x

  8. Matlab:基于Matlab实现人工智能算法应用的简介(SVM支撑向量机GA遗传算法PSO粒子群优化算法)、案例应用之详细攻略

    Matlab:基于Matlab实现人工智能算法应用的简介(SVM支撑向量机&GA遗传算法&PSO粒子群优化算法).案例应用之详细攻略 目录 1.SVM算法使用案例 1.1.Libsvm ...

  9. 【深度学习笔记】神经网络模型及经典算法知识点问答巩固(算法工程师面试笔试)

    文章目录 前言 一.前馈神经网络模型 1.请说说你对前馈神经网络中"前馈"二字的理解. 2.记忆和知识是存储在_____上的.我们通常是通过逐渐改变_____来学习新知识. 3.在 ...

  10. 学习笔记 | 数据结构和算法 知识点思维导图

    程序 = 数据结构 + 算法 一 数据结构知识点 01 队列和栈,需要了解它们的特点. 队列是先进先出,栈是后进先出. 02 表 表,包括很多种,有占用连续空间的数组.用指针链接的单向和双向链表,首尾 ...

最新文章

  1. 华为自带时钟天气下载_华为EMUI10的最大亮点是什么?
  2. Android 第五课 常用控件的使用方法(TextView、Button、EditView、 ImageView、 ProgressBar、 ProgressDialog等)
  3. equals 和 hashCode 到底有什么联系?一文告诉你
  4. 用python写网络爬虫 第2版 pd_用Python写网络爬虫(第2版)
  5. 码说 | 并查集(以HDU1232为例)
  6. 里程碑!中国移动5G信号将覆盖珠峰峰顶
  7. 域名备案以及再次白嫖阿里云
  8. AnnotationConfigBeanDefinitionParser are only available on JDK 1.5 and higher
  9. vb不能插入png图片_VB6.0载入PNG格式图片
  10. Win7纯净版系统Windows未能启动,文件Winload.exe的解决方法
  11. springboot框架的网上书城系统 java图书销售系统
  12. Windows Server 启用或关闭ping端口
  13. MATLAB快速排序算法
  14. Netcore磊科NW336驱动Win7下载 NW336 150M无线USB网卡驱动
  15. char,varchar,nchar,nvarchar的区别
  16. 微信weixin://xxx 分析
  17. 电子信息(非全)考研分析——大连理工VS哈工程
  18. ubuntu开机登录,操作技巧,嵌入式命令等
  19. 代理软件cntlm之下载、安装、配置及使用
  20. NIST数字测试套件使用说明

热门文章

  1. 最新!泰晤士2021亚洲大学排名发布:91所中国大陆高校上榜!
  2. ionic3 修改打包时 android sdk 路径
  3. 【linux】centos6.9通过virtualenv安装python3.5
  4. Python中断多重循环的几种思路exit_flag
  5. redis在windows上的安装
  6. 深入浅出MVC框架模式
  7. CentOS 5 全功能WWW服务器搭建全教程
  8. 抽象工厂模式与单件模式C++混合实现
  9. python钓鱼评论爬取
  10. 异常值检测——绝对中位差MAD(median absolute deviation )