SVM支持向量机

SVM(Support Vector Machines) 支持向量机

引言

svm有很多的实现,此处介绍最流行的一种实现 序列最小化 SMO(Sequential Minimal Optimizaiton)

核函数(Kernel): 将SVM扩展到更多的数据集上

基于最大间隔分割数据

优点:

泛化错误率比较低, 计算开销不大,结果易解释

缺点:

对参数调节和核函数的选择敏感, 原始分类器不加修改仅仅适用于二分类问题

适用数据类型:

数值型和标称型数据

概述

二维平面,对线性可分的的数据集,我们只需要一条直线可将,数据集进行分类,
在三维平面,对于数据集的分类,需要一个平面需要一个平面来进行分类,依次类推,在n为平面中,对数据的分类,则需要一个一超平面来将数据进行分类。 这个将数据分隔开的平面,称为
分隔超平面(可能有多个), 也就是分类的决策边界。

同时,数据点距离决策边界越远,那么其最后的预测结果越可信支持向量则是距离分隔超平面最近的那些点集。

目的: 最大化支持向量到分隔超平面的距离,即找到一个最优的分隔超平面,使得支持向量到其距离最远。

最大间隔

超平面形式: y = w[T]*x + b, 计算点A到分隔超平面的距离, 必须给出到分隔面的法线或垂线的长度, 该值为:|w[T] * A + b| / ||w||。

输入数据给分类器会输出一个类别标签,相当于sigmoid函数,在这里统一使用海维赛德阶跃函数, 即单位阶跃函数,输出得到 -1 或者 +1。

使用 正负1 有利于数学上的处理,label * (w[T] * x + b) 会得到一个很大正数,从而只需要找出分类器中的w和b。为此需要找到支持向量,最小间隔的数据点,然后对间隔进行优化,即:

argmax[w, b] {min[n] (label (w[T]x + b)) (1/||w||)}

即,超平面固定时,找到最小的间隔点,在找到所有超平面的最小的间隔点后,在已知间隔点下,找到间隔最大的超平面。

数学上的计算优化:

由于上述问题求解很困难,需要转换形式

方式:固定一个因子而最大化其他因子

由于使用的单位越阶函数,令所有label * (w[T] * x + n) 为 1,但是只有那些距离分隔超平面的最近的点的值才是1,距离越远的点其值越大。

基于上述问题,给出约束条件,然后求解最优值,转换为带约束条件的优化问题:

约束条件:

label * (w[T] * x + n) >= 1, 解决约束条件问题,常用方法拉格朗日乘子法, 通过引入拉格朗日乘子,基于约束条件,表述原来的问题,约束条件都是基于数据点。

上述的优化处理都是基于数据百分之百是线性可分的,但是实际中数据确又不“干净”,通过引入 松弛变量, 来允许有一些点可以处于分隔面的错误一侧,

SMO 优化算法

SMO: 将最大优化问题分解为多个小优化问题求解,小优化问题很容易求解,并且对其进行顺序求解的结果与它们作为整体求解结果完全一致

posted @ 2022-08-25 17:39  酷酷的排球  阅读(79)  评论(0编辑  收藏  举报