支持向量机是一种二分类模型,目标是寻找一个标准来对样本进行分割,原则是确保分类最优化。本节简要介绍其原理。
本文目录:
[TOC]
SVM简介
支持向量机的原则是确保分类最优化(类别之间的间隔最大)。
当数据集较小时,使用支持向量机是非常有效的。支持向量机是最好的现成分类器之一。‘现成’指的是分类器不加修改就可以直接使用。
支持向量机在分类时,把无法线性分割的数据映射到高维空间,然后再高维空间找到分类最优的线性分类器。
Python提供了不同的实现支持向量机的方法,例如sk-learn库、LIBSVM库,OpenCV也提供了对支持向量机的接口,都可以直接使用,无需对原理部分过于深入了解。
理论基础
对SVM的基本原理进行简单介绍。
分类
如下图所示,某次研究生考试中,得分如下所示。横坐标代表笔试成绩,纵坐标表示面试成绩。右上角的圆点表示A级(优秀)、左小角的方块表示B级(良好)。
导师肯定要找的尽量是A类。但是如何根据笔试和面试成绩来确定该学生是否优秀呢?偷懒的做法是笔试面试成绩都高,未来可能是优秀学生的概率更大。但是人无完人,这样招生名额可能都用不完。合理地做法是确定一定的笔试和面试标准,可以高效地招到A类。下图,就提供了三种形式的划分。
分类器
在上图中,用于划分不同类别的直线,就是分类器。在构造分类器时,最重要的就是找到最优分类器了。
在上图中,右上角和右下角都有一定的“倾向”嫌疑,左下角的分类更加“独善其身”,实现了“均分”。让两个分类离自己一样远,这样就为每个分类都预留了等量的拓展空间,即使有新的靠近边界的点进来,也能够按照位置划分到对应的分类中。
在已有的数据中,找到离分类器最近的点,确保它们离分类器尽可能地远。
离分类器最近的点到分类器的距离称之为"间隔"。
我们希望间隔尽可能最大。这样分类器在处理距离时,就会更准确。左小角的间距最大。
离分类器最近的那些点叫做支持向量,由他们决定了分类器所在的位置。
将不可分变为可分
在现实中的大多数问题,往往是非常复杂的,不可能简单地通过一个直线就能划分完成。
例如,不小心将豌豆和小米混到了一起。豌豆直径在10mm,小米直径在1mm。那么为了区分他们,可以用一个直径为5mm的筛子,将豌豆与小米区分开。筛子就是映射操作。
支持向量机在处理数据时,如果在低维空间内无法完成,就会自动将数据映射到高维空间。使其变为可分的。简单说就是对当前数据进行函数映射操作。下图中,f函数就是一种映射。
不用担心数据由低维空间转换到高维空间后运算量会呈几何级增加,支持向量机能通过核函数有效地降低计算计算复杂度。
注意
上面的示例都是二维的。实际上支持向量机可以处理任何维度的数据。在不同维度下,支持向量机都会尽可能寻找类似于二维空间中的直线的线性分类器。
在二维空间中,支持向量机会去找一条最优的直线;在三维空间中,支持向量机会去找一条最优的平面;在更高维度的空间中,支持向量机会尝试寻找一个能够划分当前数据的超平面。
支持向量
是离分类器最近的那些点,这些点位于最大间隔上。通常情况下,分类仅仅依靠这些点完成,而和其他点没有关系。机器
指的是分类器。
2 条评论
感谢作者分享。文中,离分类器最近的那些"年"叫做支持向量......,“年”好像是个误打的字。
感谢指正,确实有些错别字的,有时候懒得检查哈哈