机器学习笔记02-支持向量机SVM(上)
目录
- 什么是SVM
- 线性分类器的含义
- 怎么找线性分类器
1.什么是SVM
SVM支持向量机,号称机器学习的拦路虎。江湖传言,遇到了他,机器学习就会从入门到放弃。另一方面也就是说,只要搞定了SVM,后面的算法模型学起来都是小意思。
那我们就先打虎,再盘后面的小猫咪。
由于SVM较复杂,我分两篇来进行阐述,本篇仅介绍SVM的基本概念。
先看下官方定义:
支持向量机方法是建立在统计学习理论的VC 维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性和学习能力之间寻求最佳折衷,以期获得最好的泛化能力。
VC 维,结构风险,有限样本,模型复杂性,最佳折衷,泛化能力,这一切……真是让人摸不着头脑……
行了,文绉绉的理论从来看不懂,我们还是从算法看起吧。
SVM一般用于解决二分类问题(也可以解决多分类和回归问题,本文暂不涉及),数学化语言概述如下:
样本数据:n个样本,p个输入 ,1个输出y
第i个样本的输入:
输出y:一般用1和-1作为两类样本的标签
训练样本集D:
训练目的:以训练样本为研究对象,在样本的特征空间中找到一个超平面 ,将两类样本(+1和-1)有效分开,其中
然而,这些个公式……更是看的云里雾里……
没关系,抽象的数学语言难以理解,我们就从直观的图形和例子开始,抽丝剥茧一点点学。
2.线性分类器的含义
上一篇学线性回归时,是从一元线性回归讲起。一元,即一个自变量,再加上一个因变量,这种数据形式在二维坐标轴中就可以表示成(x,y)。(x,y)的数据形式可以通过画点、画线在二维平面上进行展示,方便初学者理解。
学习算法时通过图的形式来入门,最合适不过。那么,我们讲SVM也从平面上的点和线讲起不就好了。
我们用图看看线性分类器要解决什么样的问题。
2
假设有两类要区分的样本点,一类用黄色圆点代表,另一类用红色方形代表,中间这条直线就是一条能将两类样本完全分开的分类函数。
用前面的数学化语言描述一下这个图,就是:
样本数据:11个样本,2个输入 ,一个输出y
第i个样本的输入:
输出y:用1(红色方形)和-1(黄色圆点)作为标签
训练样本集D:
训练目的:以训练样本为研究对象,找到一条直线 ,将两类样本有效分开。
这里我们引出线性可分的定义:如果一个线性函数能够将样本分开,就称这些样本是线性可分的。线性函数在一维空间里,就是一个小小的点;在二维可视化图像中,是一条直直的线;在三维空间中,是一个平平的面;在更高维的空间中,是无法直观用图形展示的超平面。
回想一下线性回归,在一元线性回归中我们要找拟合一条直线,使得样本点(x,y)都落在直线附近;在二元线性回归中,要拟合一个平面,使得样本点(x1,x2,y)都落在该平面附近;在更高维的情况下,就是拟合超平面。
那么,线性分类(此处仅指二分类)呢?当样本点为(x,y)时(注意,和回归不同,由于y是分类标签,y的数字表示是只有属性含义,是没有真正的数值意义的,因此当只有一个自变量时,不是二维问题而是一维问题),要找到一个点wx+b=0,即x=-b/w这个点,使得该点左边的是一类,右边的是另一类。
当样本点为(x1,x2, y)时,要找到一条直线 ,将平面划分成两块,使得 的区域是y=1类的点, 的区域是y=-1类别的点。
更高维度以此类推,由于更高维度的的超平面要写成 ,会有点麻烦,一般会用矩阵表达式代替,即上面的 。
这个式子中,X不是二维坐标系中的横轴,而是样本的向量表示。例如上面举的二维平面中的例子,假设绿色框内是的坐标是(3,1),则 。一般说向量都默认是列向量,因此以行向量形式来表示时,就加上转置。因此, 中 是一组列向量,是未知参数,X是一组行向量,是已知的样本数据,可以理解为 是 的系数。为了打公式方便,下文中不区别列向量和它的转置, 简单地用wx+b=0表示。
3.怎么找线性分类器
我们还是先看只有两个自变量的情况下,怎么求解最佳的线性分割。
4
如图,理想状态下,平面中的两类点是完全线性可分的。这时问题来了,这样能把两类点分割的线有很多啊,哪条是最好的呢?
支持向量机中,对最好分类器的定义是:最大边界超平面,即距两个类别的边界观测点最远的超平面。在二维情况下,就是找最宽的马路,在三维问题中,就是找最厚的木板。
显然,上图中左边的马路比右边的宽,马路的边界由1、2、3这三个点确定,而马路中间那条虚线,就是我们要的wx+b=0。
可以看到,我们找马路时,只会考虑+1类中,离-1类近的点,还有-1类中,离+1类距离近的点,即图中的1、2、3和a、b、c这些点。其他距离对方远的样本点,我们做支持向量机这个模型时,是不考虑的。
由于最大边界超平面仅取决于两类别的边界点,这些点被称为支持向量,因此这种算法被命名为支持向量机。这个定义就比较好理解了吧?
未完待续……