0#07 SVM 支持向量机

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了0#07 SVM 支持向量机相关的知识,希望对你有一定的参考价值。

参考技术A 为了简单起见我就开始自己造数据,开始分类

因为SVM支持向量机非常强大,所以能做的事情非常多,实例中我们会以fetch_lfw_people作为例子

我们先将点的坐标画出来

发现如果用我们已知的方法用一条直线区分,这条直线有很多条,但是很明显有些直线是毫无用处的,只要数据增加就会被修改.

于是我们就会想,是不是根据这些点,我们可以找到最适合的那条直线,

那什么是最适合的直线呢?
于是SVM定义,距离这条直线最近的点,与直线距离最大,也就是边界最大化.
比如说这个

于是我们把在边界上的点称为支持向量
比如这里的(-1,0),(0,1),(1,0)
如果删除或增加不是支持向量的点,不会影响结果.
但是我们这个例子是属于线性可分的例子.

还有一些情况是先行不可分,
比如
第二组数据

我们开始使用 SVM 进行区分

值得一提的是,对于sklearn的支持向量机
我们可以用方法将支持向量显示出来
一些方法:
支持向量的下标
model.support_
支持向量具体的坐标
model.support_vectors_
两个边分别含有的支持向量的个数
model.n_support_
赋予特征的权重(原始问题中的系数)。 这仅适用于线性内核。
model.coef_

《统计学习方法》--支持向量机

《统计学习方法》第七章–支持向量机

支持向量机概述

支持向量机是一种二类分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器。支持向量机由简至繁依次可分为:线性可分支持向量机,线性支持向量机,非线性支持向量机。当数据线性可分时,通过硬间隔最大化的约束来学习一个分类器,称为线性可分支持向量机;当数据近似线性可分时,通过软间隔最大化的约束来学习一个分类器,称为线性支持向量机;当数据线性不可分时通过使用核技巧及软间隔最大化,学习非线性支持向量机。故此,支持向量机可以简化的描述为通过训练数据集来寻找一个能够将数据正确分类的超平面,此分离超平面满足数据集中的数据点距此超平面的间隔(软间隔/硬间隔)最大化。

基础前提

函数间隔和几何间隔

间隔最大化是贯穿于整个支持向量机模型的最核心的部分。一般来说,一个点距离分离超平面的远近可以表示分类预测的确信程度,在分离超平面确定的情况下,若一个点离超平面越远则分类正确的可信度越高。故此,支持向量机寻求间隔最大化的意义在于分离超平面不仅可以正确分类数据点,而且对于最难分的实例(距离超平面最近的点)也有较大的分类可信度,因此该模型再对未知数据分类时应该也具有较好的性能。

函数间隔

对于给定的训练数据集 T T T和超平面 ( ω , b ) (\\omega,b) (ω,b)

定义超平面 ( ω , b ) (\\omega,b) (ω,b)关于样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的函数间隔为 γ i ^ = y i ( ω ⋅ x i + b ) \\hat\\gamma_i=y_i(\\omega\\cdot x_i+b) γi^=yi(ωxi+b)
定义超平面 ( ω , b ) (\\omega,b) (ω,b)关于训练数据集 T T T的函数间隔为超平面 ( ω , b ) (\\omega,b) (ω,b)关于 T T T中所有样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的函数间隔最小值,即 γ ^ = min ⁡ i = 1 , 2 , . . , N γ i ^ \\hat\\gamma=\\min_i=1,2,..,N\\hat\\gamma_i γ^=i=1,2,..,Nminγi^

几何间隔

由于函数间隔在当 ω \\omega ω b b b成比例的改变时候,得到的分离超平面并没有变化,但是函数间隔却也成比例的改变,故此自然想到应该对其进行规范化处理,令 ∣ ∣ ω ∣ ∣ = 1 ||\\omega||=1 ω=1,这样就得到了几何间隔的定义。

对于给定的训练数据集 T T T和超平面 ( ω , b ) (\\omega,b) (ω,b)

定义超平面 ( ω , b ) (\\omega,b) (ω,b)关于样本点 ( x i , y ) i (x_i,y_)i (xi,y)i的几何间隔为 γ i = y i ( ω ∣ ∣ ω ∣ ∣ ⋅ x i + b ∣ ∣ ω ∣ ∣ ) \\gamma_i=y_i(\\frac\\omega||\\omega||\\cdot x_i+\\fracb||\\omega||) γi=yi(ωωxi+ωb)
定义超平面 ( ω , b ) (\\omega,b) (ω,b)关于训练数据集 T T T的几何间隔为超平面 ( ω , b ) (\\omega,b) (ω,b)关于 T T T中所有样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的几何间隔最小值,即 γ = min ⁡ i = 1 , 2 , . . . , N γ i \\gamma=\\min_i=1,2,...,N\\gamma_i γ=i=1,2,...,Nminγi

线性可分支持向量机与硬间隔最大化

给定线性可分训练数据集,通过间隔最大化(几何间隔最大化)或等价的求解相应的凸二次规划问题得到的分离超平面为 ω ∗ ⋅ x + b ∗ = 0 \\omega^*\\cdot x+b^*=0 ωx+b=0,相应的分类决策函数为 f ( x ) = s i g n ( ω ∗ ⋅ x + b ∗ ) f(x)=sign(\\omega^*\\cdot x+b^*) f(x)=sign(ωx+b)。线性可分支持向量机可以表述为下列形式: max ⁡ ω , b γ − − − − ( 1 ) \\max_\\omega,b\\gamma----(1) ω,bmaxγ1 s . t . y i ( ω ∣ ∣ ω ∣ ∣ ⋅ x i + b ∣ ∣ ω ∣ ∣ ) ≥ γ , i = 1 , 2... , N − − − − ( 2 ) s.t. y_i(\\frac\\omega||\\omega||\\cdot x_i+\\fracb||\\omega||)\\geq\\gamma,i=1,2...,N----(2) s.t.yi(ωωxi+ωb)γ,i=1,2...,N2

即我们希望找到的分类超平面是与整个训练数据集有着最大的几何间隔(硬间隔)。

公式(1)表示我们的目标函数,即最大化分类超平面关于训练数据集的几何间隔,
公式(2)表示我们需要满足的约束条件,即训练数据集中的每一个样本点与分类超平面的几何间隔都应该至少是所求的 γ \\gamma γ

这样就把问题转化为了一个约束最优化问题。依据函数间隔和几何间隔的关系 γ = γ ^ ∣ ∣ ω ∣ ∣ \\gamma=\\frac\\hat\\gamma||\\omega|| γ=ωγ^带入公式(1)(2)中即可得: max ⁡ ω , b γ ^ ∣ ∣ ω ∣ ∣ − − − − ( 3 ) \\max_\\omega,b\\frac\\hat\\gamma||\\omega||----(3) ω,bmaxωγ^3 s . t . y i ( ω ∣ ∣ ω ∣ ∣ ⋅ x i + b ∣ ∣ ω ∣ ∣ ) ≥ γ ^ ∣ ∣ ω ∣ ∣ , i = 1 , 2... , N − − − − ( 4 ) s.t. y_i(\\frac\\omega||\\omega||\\cdot x_i+\\fracb||\\omega||)\\geq\\frac\\hat\\gamma||\\omega||,i=1,2...,N----(4) s.t.yi(ω以上是关于0#07 SVM 支持向量机的主要内容,如果未能解决你的问题,请参考以下文章

2. 支持向量机(SVM)软间隔

在 RBF 支持向量机中训练和预测

支持向量机优缺点?

6.支持向量机(SVM)什么是SVM支持向量机基本原理与思想基本原理课程中关于SVM介绍

支持向量机原理

支持向量机(SVM)