机器学习常识 12: SVM

news/2024/11/25 13:25:55/

摘要: 支持向量机 (support vector machine, SVM) 有很多闪光点, 理论方面有 VC 维的支撑, 技术上有核函数将线性不可分变成线性可分, 实践上是小样本学习效果最好的算法.

1. 线性分类器

如图 1 所示, 基础的 SVM 仍然是一个线性二分类器, 这一点与 logistic 回归一致.

图 1. 基本的 SVM.

图 1 有 3 个分割线, 分别对应于一个分类器.

  • H 1 H_1 H1 不能把正负样本分开, 拟合能力弱;
  • H 2 H_2 H2 可以把正负样本分开 (拟合能力强), 但它与最近的正负样本距离小;
  • H 2 H_2 H2 可以把正负样本分开, 而且与最近的正负样本距离达到了最大, 因此它有良好的泛化能力, 即对于新样本的预测能力, 参见 机器学习常识 4: 分类问题的训练与测试.

2. 基本方案

使用图 2 来说明.

图 2. 方案图例.
  • 输入: 数据矩阵 X = ( x i j ) n × m ∈ R n × m \mathbf{X} = (x_{ij})_{n \times m} \in \mathbb{R}^{n \times m} X=(xij)n×mRn×m, 二分类标签向量 Y = ( y i ) n × 1 ∈ { − 1 , + 1 } n \mathbf{Y} = (y_i)_{n \times 1} \in \{-1, +1\}^n Y=(yi)n×1{1,+1}n.
  • 输出: m m m 维空间上的一个超平面 w x + b = 0 \mathbf{wx} + b = 0 wx+b=0, 其中 w , x ∈ R m \mathbf{w}, \mathbf{x} \in \mathbb{R}^m w,xRm.
  • 优化目标:
    arg ⁡ max ⁡ w , b 1 ∥ w ∥ . (1) \arg\max_{\mathbf{w}, b} \frac{1}{\|\mathbf{w}\|}. \tag{1} argw,bmaxw1.(1)
  • 约束条件:
    y i ( w T ϕ ( x i ) + b ) ≥ 1. (2) y_i(\mathbf{w}^\mathsf{T} \phi(\mathbf{x_i}) + b) \geq 1. \tag{2} yi(wTϕ(xi)+b)1.(2)

其中:

  • 标签的取值范围为 { − 1 , + 1 } \{-1, +1\} {1,+1}, 和 logistic 回归的 [ 0 , 1 ] [0, 1] [0,1] 不同. 这是为了表达相应的式子方便;
  • 优化目标是最小化实线到虚线的间隔;
  • 约束条件是每个样本点被正确分类 (为正数), 且到实线的加权距离不小于 1.

图 2 中:

  • 实线对应的是线性分类器, 即分割超平面;
  • 虚线上的点被称为支持向量 (support vector), 也就是关键样本的意思, 因为样本在空间用向量表示;
  • 支持向量之外的样本, 最终没有为分类器作出贡献. 这是与 logistic 回归一个本质的区别.

3. 核函数

用核函数将低维空间的数据映射到高维空间, 这样, 以前线性不可分的数据就变得线性可分. 这是一个神奇的想法, 因为机器学习很多时候致力于将高维数据降为低维 (如 PCA, 这个我们后面说), 而 SVM 反其道而行的.

图 3. 高斯核的作用.

图 3 给出了一个例子. 原始数据点是线性不可分的 (即二维平面上的任意直线都不可能把两种类别的数据点分开). 但使用高斯核将数据映射到三维就可以做到用二维平面分割. 想像下某人脸上有痘痘, 如果脸部看作一个平面, 则去掉痘痘不可避免需要画一个圈, 它不是线性的. 现在逮住痘痘的中间往外面拉, 将脸部拉成一个曲面, 这时候, 用一把手术刀进行切割 (对应于一个平面), 就可以把痘痘切下来啦. 这真是一个不忍直视的画面 😦.
图 4 给出了更直观的画面.

图 4. 二维到三维图示.

还有很多核函数. 甚至有人将核技巧弄出来之后, 脱离了 SVM 进行使用. 这是 2000 年前后的研究热点.

4. 软间隔

有时候某些正负样本实在无法从对方阵营里面分出来, 即 (2) 式所表达的约束条件无法得到满足, 就可以使用软间隔. 具体招数就不在这里描述啦.


http://www.ppmy.cn/news/139491.html

相关文章

Hive Container 内存溢出问题解决

一、报错 由此可以看出单个 container设置的是10GB,已经超出10GB; 二、查看和设置参数命令 通过set hive.tez.container.size可以查看默认的container内存; 如果设置10G内存内存溢出则可以执行set hive.tez.container.size12288&#xff0c…

Razor代码复用

1.布局&#xff08;Layout&#xff09;复用 Layout的使用&#xff0c;就像WebForm的模板页一样&#xff0c;甚至会更加简单&#xff0c;更加方便和明了。 要使用Layout&#xff0c;首先要在模板页相应的位置添加RenderBody()方法&#xff1a; <!DOCTYPE html><html la…

2.7 编译型和解释型

2.7 编译型和解释型 前面我们使用java和javac命令把Hello&#xff0c;World&#xff01;在控制台输出。那为什么输出&#xff0c;这里我们需要掌握两个知识点。编译型语言和解释型语言。在计算机的高级编程语言就分为编译型语言和解释型语言。而我们的Java既有编译型的特点也有…

Intel-4004微处理器(MCS-4微机)

从最开始进行分析&#xff0c;一步一步扩展与改进&#xff0c;直到今天的高速信息处理时代 最难的是&#xff0c;该处理器时间太早&#xff0c;很多资料和功能信息都很难查找 4004芯片&#xff1a; 4004历史 Intel-4004已经很难买到了&#xff0c;可以说是“老古董”。 Intel…

CSS 选择器的常见用法

前言 CSS在编写代码的时候有很多种样式&#xff0c;和和HTML&#xff0c;JS相似&#xff0c;他们都是运行在浏览器中的&#xff0c;下面就介绍一下CSS选择器的常见用法。 标签选择器使用标签名把页面中所有同名标签都选中类选择器使用.类名的方式对应一组CSS属性id选择器使用 …

Spring父子容器

一、痛点 当前开发工程以来的spring-boot-starter脚手架&#xff0c;配置了很多通用的bean&#xff0c;而部分无法满足自身需求&#xff0c;因此需要自定义bean&#xff0c;这时候就有可能出现自己定义bean和脚手架或者引入的第三方依赖中的某个bean冲突&#xff0c;导致出现b…

小米联合金山云发布“1KM边缘计算” 携手布局“云+边缘”新赛道

金山云CEO王育林&#xff1a; “今天是一个特别特别特别的发布会&#xff0c;因为小米每次发布会都有硬件&#xff0c;而这次是和我们金山云联合发布“1KM边缘计算”解决方案&#xff0c;打造“云亿级终端”边缘计算模式。当然我们和小米的合作属于厚积薄发&#xff0c;是之前一…

盘点 | 2018年IoT蓄势待发

来源 | 地歌网 文 | 曹亦卿 编辑 | 夏广川 5G前夜&#xff0c;IoT厚积薄发&#xff0c;未来是否已来&#xff1f; 2018年&#xff0c;互联网圈儿大事不断。小米与美团点评高调上市&#xff0c;拼多多与趣头条弯道超车&#xff0c;马云“禅让”推合伙人制&#xff0c;腾讯变革…