支持向量机通俗解释

合集下载

支持向量机(svm)介绍

支持向量机(svm)介绍

⽀持向量机(svm)介绍⽀持向量机(SVM)介绍⽬标本⽂档尝试解答如下问题:如何使⽤OpenCV函数训练⼀个SVM分类器,以及⽤测试训练结果。

什么是⽀持向量机(SVM)?⽀持向量机 (SVM) 是⼀个类分类器,正式的定义是⼀个能够将不同类样本在样本空间分隔的超平⾯。

换句话说,给定⼀些标记(label)好的训练样本 (监督式学习), SVM算法输出⼀个最优化的分隔超平⾯。

如何来界定⼀个超平⾯是不是最优的呢? 考虑如下问题:假设给定⼀些分属于两类的2维点,这些点可以通过直线分割,我们要找到⼀条最优的分割线.Note在这个⽰例中,我们考虑卡迪尔平⾯内的点与线,⽽不是⾼维的向量与超平⾯。

这⼀简化是为了让我们以更加直觉的⽅式建⽴起对SVM概念的理解,但是其基本的原理同样适⽤于更⾼维的样本分类情形。

在上⾯的图中,你可以直觉的观察到有多种可能的直线可以将样本分开。

那是不是某条直线⽐其他的更加合适呢? 我们可以凭直觉来定义⼀条评价直线好坏的标准:距离样本太近的直线不是最优的,因为这样的直线对噪声敏感度⾼,泛化性较差。

因此我们的⽬标是找到⼀条直线,离所有点的距离最远。

由此, SVM算法的实质是找出⼀个能够将某个值最⼤化的超平⾯,这个值就是超平⾯离所有训练样本的最⼩距离。

这个最⼩距离⽤SVM术语来说叫做间隔(margin) 。

概括⼀下,最优分割超平⾯最⼤化训练数据的间隔。

如何计算最优超平⾯?下⾯的公式定义了超平⾯的表达式:叫做权重向量,叫做偏置(bias)。

See also关于超平⾯的更加详细的说明可以参考T. Hastie, R. Tibshirani 和 J. H. Friedman的书籍Elements of Statistical Learning, section 4.5 (Seperating Hyperplanes)。

最优超平⾯可以有⽆数种表达⽅式,即通过任意的缩放和。

习惯上我们使⽤以下⽅式来表达最优超平⾯式中表⽰离超平⾯最近的那些点。

支持向量机——精选推荐

支持向量机——精选推荐

支持向量机概述(一)支持向量机简介支持向量机(Support V ec tor Mac hine )是Cortes 和V apn ik 于1995年首先提出的,它在解决小样本、非线性及高维模式识别中有许多特有的优势,并能推广应用到函数拟合等其他机器学习问题中[1]。

支持向量机方法是建立在统计学习理论的VC 维和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性和学习能力之间寻求最佳折衷,以期获得最好的推广能力[2]。

1.1 VC 维定义1.1(N(F,m Z )):设F 是一个假设集,即由在n R X 上取值为-1或1的若干函数组成的集合。

记m Z = },...,,{21m x x x 为X 中的m个点组成的集合。

考虑当f 取遍F 中的所有可能的假设时产生的m 维向量(f (1x ),f (2x ),…f (m x ))。

定义N(F,m Z ))为上述m 维向量中不同的向量个数。

定义1.2(m Z 被F 打散):设F 是一个假设集,m Z = },...,,{21m x x x 为X 中的m 个点组成的集合。

称m Z 被F 打散,或F 打散m Z 。

定义 1.3(VC 维):设假设集F 是一个由X 上取值为-1或1的函数组成的集合。

定义F 的VC 维为m ax{m|N(F,m Z ) = m2}.VC 维反映了函数集的学习能力。

一般而言,VC 维越大,学习机器越复杂。

但目前没有通用的关于任意VC 维计算的理论,只对一些特殊函数集的VC 维可以计算。

如何利用理论和实验的方法计算VC 维是当前统计学习理论中一个待研究的问题[3]。

1.2 结构风险最小化机器学习本质上是一种对问题真实模型的逼近,由于真实世界的模型往往无法精确给出,我们给出的模型与真实模型就存在一个误差,这个与真实模型之间的误差积累就叫做风险。

统计学习理论系统地研究了对于各种类型的函数集,经验风险和实际风险之间的关系,即泛化误差界。

支持向量机

支持向量机

支持向量机支持向量机,英文名为support vector machine,一般简称SVM,通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划(convex quadratic programming)问题的求解,支持向量机的学习算法是求解凸二次规划的最优化算法。

其方法包含构建由简到繁的模型:线性可分支持向量机、线性支持向量机和非线性支持向量机。

线性可分支持向量机假定一特征空间上的训练数据集T={(x1,y1),(x2,y2),⋯,(x N,y N)},其中x i∈χ= R n,y i∈Y={+1,−1},i=1,2,⋯,N,x i为第i个特征向量,也就是实例,y i为x i的类标记,当y i=+1时,称x i为正例;当y i=−1时,称x i为负例,(x i,y i)称为样本点。

再假设训练数据集是线性可分的,即存在某个超平面能够将正例和负例完全正确的分开,不妨设分离超平面方程为w∙x+b=0,法向量为w、截距为b。

一般地,当训练数据集线性可分时,存在无穷多个分离超平面可将两类数据正确分开,线性可分支持向量机利用间隔最大化求最优分离超平面,这是解是唯一的。

若最优分离超平面为w∗∙x+b∗=0,则分类决策函数为f(x)=sign(w∗∙x+b∗)。

在上图中,有A、B、C三个点,表示三个实例,设“。

”表示正类,“×”表示负类,则这三个点全在正类。

A距分类超平面较远,若预测该点为正类就比较确信预测是正确的;C距分类超平面较近,若预测该点为负类就不那么确信;B介于AC两者之间,预测为正类的确信度也在A与C之间。

故一般来说,点距离分离超平面的远近可以表示分类预测的确信程度。

在超平面w ∙x +b =0确定的情况下,|w ∙x +b |能够相对地表示点x 到超平面的远近,而w ∙x +b 的符号与类标记y 的符号是否一致可表示分类是否正确,所以y (w ∙x +b )可以来表示分类的真确性及确信度,我们称之为函数间隔。

机器学习--支持向量机(SVM)算法的原理及优缺点

机器学习--支持向量机(SVM)算法的原理及优缺点

机器学习--⽀持向量机(SVM)算法的原理及优缺点⼀、⽀持向量机(SVM)算法的原理 ⽀持向量机(Support Vector Machine,常简称为SVM)是⼀种监督式学习的⽅法,可⼴泛地应⽤于统计分类以及回归分析。

它是将向量映射到⼀个更⾼维的空间⾥,在这个空间⾥建⽴有⼀个最⼤间隔超平⾯。

在分开数据的超平⾯的两边建有两个互相平⾏的超平⾯,分隔超平⾯使两个平⾏超平⾯的距离最⼤化。

假定平⾏超平⾯间的距离或差距越⼤,分类器的总误差越⼩。

1.⽀持向量机的基本思想 对于线性可分的任务,找到⼀个具有最⼤间隔超平⾯,如图所⽰, (1)⽀持向量机的基本型为: (2)软间隔的优化⽬标: 其中,0-1函数为错分样本的个数。

(3)核⽅法: 其中为特征映射函数。

2、实验⼀般步骤: (1)导⼊数据; (2)数据归⼀化; (3)执⾏svm寻找最优的超平⾯; (4)绘制分类超平⾯核⽀持向量; (5)利⽤多项式特征在⾼维空间中执⾏线性svm (6)选择合适的核函数,执⾏⾮线性svm; 3、算法优缺点: 算法优点: (1)使⽤核函数可以向⾼维空间进⾏映射 (2)使⽤核函数可以解决⾮线性的分类 (3)分类思想很简单,就是将样本与决策⾯的间隔最⼤化 (4)分类效果较好 算法缺点: (1)SVM算法对⼤规模训练样本难以实施 (2)⽤SVM解决多分类问题存在困难 (3)对缺失数据敏感,对参数和核函数的选择敏感 ⼆、数学推导过程 对于线性可分的⽀持向量机求解问题实际上可转化为⼀个带约束条件的最优化求解问题: 推理过程: 结果: 对于线性不可分的⽀持向量机求解问题实际上可转化为⼀个带约束条件的soft-margin最优化求解问题:三、代码实现1、线性svmimport numpy as npfrom sklearn.datasets import load_irisimport matplotlib.pyplot as pltfrom sklearn.preprocessing import StandardScalerfrom sklearn.svm import LinearSVCfrom matplotlib.colors import ListedColormapimport warningsdef plot_decision_boundary(model,axis):x0,x1=np.meshgrid(np.linspace(axis[0],axis[1],int((axis[1]-axis[0])*100)).reshape(-1,1),np.linspace(axis[2],axis[3],int((axis[3]-axis[2])*100)).reshape(-1,1))x_new=np.c_[x0.ravel(),x1.ravel()]y_predict=model.predict(x_new)zz=y_predict.reshape(x0.shape)custom_cmap=ListedColormap(['#EF9A9A','#FFF59D','#90CAF9'])plt.contourf(x0,x1,zz,linewidth=5,cmap=custom_cmap)w = model.coef_[0]b = model.intercept_[0]plot_x = np.linspace(axis[0],axis[1],200)up_y = -w[0]/w[1]*plot_x - b/w[1] + 1/w[1]down_y = -w[0]/w[1]*plot_x - b/w[1] - 1/w[1]up_index = (up_y>=axis[2]) & (up_y<=axis[3])down_index = (down_y>=axis[2]) & (down_y<=axis[3])plt.plot(plot_x[up_index],up_y[up_index],c='black')plt.plot(plot_x[down_index],down_y[down_index],c='black')warnings.filterwarnings("ignore")data = load_iris()x = data.datay = data.targetx = x[y<2,:2]y = y[y<2]scaler = StandardScaler()scaler.fit(x)x = scaler.transform(x)svc = LinearSVC(C=1e9)svc.fit(x,y)plot_decision_boundary(svc,axis=[-3,3,-3,3])plt.scatter(x[y==0,0],x[y==0,1],c='r')plt.scatter(x[y==1,0],x[y==1,1],c='b')plt.show()输出结果:2、⾮线性-多项式特征import numpy as npfrom sklearn import datasetsimport matplotlib.pyplot as pltfrom sklearn.preprocessing import PolynomialFeatures,StandardScaler from sklearn.svm import LinearSVCfrom sklearn.pipeline import Pipelinefrom matplotlib.colors import ListedColormapimport warningsdef plot_decision_boundary(model,axis):x0,x1=np.meshgrid(np.linspace(axis[0],axis[1],int((axis[1]-axis[0])*100)).reshape(-1,1), np.linspace(axis[2],axis[3],int((axis[3]-axis[2])*100)).reshape(-1,1) )x_new=np.c_[x0.ravel(),x1.ravel()]y_predict=model.predict(x_new)zz=y_predict.reshape(x0.shape)custom_cmap=ListedColormap(['#EF9A9A','#FFF59D','#90CAF9']) plt.contourf(x0,x1,zz,linewidth=5,cmap=custom_cmap)def PolynomialSVC(degree,C=1.0):return Pipeline([('poly',PolynomialFeatures(degree=degree)),('std_scaler',StandardScaler()),('linearSVC',LinearSVC(C=1e9))])warnings.filterwarnings("ignore")poly_svc = PolynomialSVC(degree=3)X,y = datasets.make_moons(noise=0.15,random_state=666)poly_svc.fit(X,y)plot_decision_boundary(poly_svc,axis=[-1.5,2.5,-1.0,1.5])plt.scatter(X[y==0,0],X[y==0,1],c='red')plt.scatter(X[y==1,0],X[y==1,1],c='blue')plt.show()输出结果:3、⾮线性-核⽅法from sklearn.preprocessing import StandardScalerfrom sklearn.svm import SVCfrom sklearn.pipeline import Pipelinefrom sklearn import datasetsfrom matplotlib.colors import ListedColormapimport numpy as npimport matplotlib.pyplot as pltimport warningsdef plot_decision_boundary(model,axis):x0,x1=np.meshgrid(np.linspace(axis[0],axis[1],int((axis[1]-axis[0])*100)).reshape(-1,1), np.linspace(axis[2],axis[3],int((axis[3]-axis[2])*100)).reshape(-1,1) )x_new=np.c_[x0.ravel(),x1.ravel()]y_predict=model.predict(x_new)zz=y_predict.reshape(x0.shape)custom_cmap=ListedColormap(['#EF9A9A','#FFF59D','#90CAF9']) plt.contourf(x0,x1,zz,linewidth=5,cmap=custom_cmap)def RBFKernelSVC(gamma=1.0):return Pipeline([('std_scaler',StandardScaler()),('svc',SVC(kernel='rbf',gamma=gamma))])warnings.filterwarnings("ignore")X,y = datasets.make_moons(noise=0.15,random_state=666)svc = RBFKernelSVC(gamma=100)svc.fit(X,y)plot_decision_boundary(svc,axis=[-1.5,2.5,-1.0,1.5])plt.scatter(X[y==0,0],X[y==0,1],c='red')plt.scatter(X[y==1,0],X[y==1,1],c='blue')plt.show()输出结果:。

支持向量机SVM

支持向量机SVM

1 ( w 可 6* 维见 空x ,) 间 只,b 要* 然利 后用0 在, 变这其 换个,中 6把维w 空* x间( 所中[ w 在,* ] 的使1 , 2用维线[ 空w 性* 间学] 6 的) 习T 两机类求输出入分点划映超射平到面:x 所在的
[ w * ] 1 2 [ w * ] 2 [ x ] 1 2 [ w * ] 3 [ x ] 2 2 [ w * ] 4 [ x ] 1 [ x ] 2 [ w * ] 5 [ x ] 1 2 [ w * ] 6 [ x ] 2 2 b 0
SVM相关概念解释
VC维:对于一个指示函数(即只有0和1 两种取值的函数)集,如果存在h个样本 能够被函数集里的函数按照所有可能的2h 种形式分开,则称函数集能够把h个样本 打散,函数集的VC维就是能够打散的最大 样本数目。
圈代表0;点代表1;
SVM相关概念解释
经验风险:使用分类器在样本数据上的分类的结果与真实结果(因为样 本是已经标注过的数据,是准确的数据)之间的差值。
上式可将2维空间上x二(次[x曲]1,线[x映]2)射T 为6维空间上的一个超平面:
[ w ] 1 [ X ] 1 2 [ w ] 2 [ X ] 2 2 [ w ] 3 [ X ] 3 2 [ w ] 4 [ X ] 4 [ w ] 5 [ X ] 5 [ w ] 6 [ X ] 6 b 0
持向量机SVM
单击此处添加文本具体内容,简明扼要地阐述你的观点。单击此处添加 正文,文字是您思想的提炼,请尽量言简意赅的阐述观点。
演讲人姓名
主要内容
CONTENTS
01 S V M 简 介
单击添加文本具体内容
03 S V M 原 理
单击添加文本具体内容
05 2 线 性 不 可 分

支持向量机的概念

支持向量机的概念

支持向量机的概念
支持向量机(Support Vector Machine,SVM)是一种常用的
机器学习算法,用于分类和回归问题。

它的核心思想是将样本映射到高维空间中,并在该空间中找到一个最优的超平面,以将不同类别的样本最大程度地分开。

具体来说,SVM在高维空间中寻找一个超平面,使得该超平
面与离它最近的各类样本的距离最大。

这些离超平面最近的样本点被称为支持向量,因为它们对于确定超平面起到了关键的作用。

通过这种方式,SVM能够有效地处理高维数据,并在
复杂的数据集中实现较好的分类效果。

SVM的基本原理可以理解为将原始的样本数据点映射到一个
高维特征空间,并通过最大化样本点与超平面之间的间隔来找到最优的超平面。

间隔表示了样本点与决策边界的距离,支持向量机的目标是找到使间隔最大化的超平面。

SVM的优点包括可以处理高维数据、对于样本点的位置不敏感、具有较好的泛化性能等。

它在分类问题上的应用非常广泛,并且在文本分类、图像识别、生物信息学等领域取得了很好的效果。

然而,SVM也存在一些缺点,例如对大规模数据集的
处理效率较低、需要选择合适的核函数等。

支持向量机的概念可以通过上述的描述理解,它是一种用于分类和回归问题的机器学习算法,通过在高维空间中寻找最优的超平面来实现分类任务。

支持向量机(SVM)简述

第1 2章12.1 案例背景12.1.1 SVM概述支持向量机(Support Vector Machine,SVM)由Vapnik首先提出,像多层感知器网络和径向基函数网络一样,支持向量机可用于模式分类和非线性回归。

支持向量机的主要思想是建立一个分类超平面作为决策曲面,使得正例和反例之间的隔离边缘被最大化;支持向量机的理论基础是统计学习理论,更精确地说,支持向量机是结构风险最小化的近似实现。

这个原理基于这样的事实:学习机器在测试数据上的误差率(即泛化误差率)以训练误差率和一个依赖于VC维数(Vapnik - Chervonenkis dimension)的项的和为界,在可分模式情况下,支持向量机对于前一项的值为零,并且使第二项最小化。

因此,尽管它不利用问题的领域内部问题,但在模式分类问题上支持向量机能提供好的泛化性能,这个属性是支持向量机特有的。

支持向量机具有以下的优点:①通用性:能够在很广的各种函数集中构造函数;②鲁棒性:不需要微调;③有效性:在解决实际问题中总是属于最好的方法之一;④计算简单:方法的实现只需要利用简单的优化技术;⑤理论上完善:基于VC推广性理论的框架。

在“支持向量”x(i)和输入空间抽取的向量x之间的内积核这一概念是构造支持向量机学习算法的关键。

支持向量机是由算法从训练数据中抽取的小的子集构成。

支持向量机的体系结构如图12 -1所示。

图12-1 支持向量机的体系结构其中K为核函数,其种类主要有:线性核函数:K(x,x i)=x T x i;多项式核函数:K(x,x i)=(γx T x i+r)p,γ>0;径向基核函数:K(x,x i )=exp(-γ∥x −x i ∥2), γ>0;两层感知器核函数:K(x,x i )=tanh(γx T x i+r )。

1.二分类支持向量机C - SVC 模型是比较常见的二分类支持向量机模型,其具体形式如下:1)设已知训练集:T ={(x 1,y 1),…,(x i ,y i )}∈(X ×Y )ι其中,x i ∈X =R n ,y i ∈Y ={1,-1}( i =1,2,…,ι);x i 为特征向量。

简述大数据中支持向量机算法的理解

支持向量机算法在大数据中的应用介绍支持向量机(Support Vector Machine,简称SVM)是一种常用的机器学习算法,其应用广泛,包括在大数据中的应用。

本文将深入探讨支持向量机在大数据领域的理解和应用。

支持向量机的基本概念在深入研究支持向量机在大数据中的应用之前,我们首先需要了解支持向量机的基本概念。

支持向量机是一种监督学习算法,用于解决分类和回归问题。

在分类问题中,支持向量机通过构建一个超平面来将不同类别的样本分开,并且最大化样本与超平面的间隔。

在回归问题中,支持向量机通过构建一个超平面来拟合数据,并且最小化样本与超平面的误差。

支持向量机的原理是基于统计学习理论和结构风险最小化的,其核心思想是寻找一个最优的超平面,使得所有样本点离该超平面的距离最远。

这些距离最远的样本点被称为支持向量,因为它们对构建超平面起到了重要的作用。

支持向量机的优点包括在高维空间中的高分类准确度、对于小样本数据的有效性以及对于非线性问题的适用性。

然而,由于支持向量机在大数据中的应用面临着计算复杂度高和内存需求大的问题,因此需要针对大数据的特点进行相应的优化和改进。

支持向量机在大数据中的应用支持向量机在大数据中的应用主要包括以下几个方面。

大数据分类支持向量机可以应用于大数据的分类问题。

在大数据中,往往存在着高维空间和复杂的数据结构,传统的分类算法可能无法有效地处理。

而支持向量机能够通过构建高维超平面来将不同类别的样本分开,从而实现对大数据的分类。

大数据回归支持向量机也可以应用于大数据的回归问题。

在大数据中,往往存在着非线性关系和噪声干扰,传统的回归算法可能无法准确地拟合数据。

而支持向量机通过引入核函数和松弛变量等方法,能够灵活地拟合非线性的关系,并且对于噪声具有一定的鲁棒性。

大数据特征选择在大数据中,往往存在着大量的特征,其中一部分特征可能是冗余的或者无用的。

支持向量机可以通过构建一个最优分类超平面来选择最相关的特征,从而实现对大数据的特征选择,减少计算复杂度和提高分类准确度。

支持向量机名词解释

支持向量机名词解释
支持向量机(SupportVectorMachine,SVM)是一种用来分类和
回归的监督学习算法。

SVM 基于统计学习理论和结构风险最小化原理,通过最大化数据集中的“支持向量”与超平面的距离来实现分类和回归。

以下是一些常见的 SVM 相关名词解释:
1. 超平面:将数据集分为两个类别的分界线。

对于二分类问题,SVM 会找到一个最优的超平面,使得该超平面能够清晰地将两个类别分开。

2. 支持向量:指距离分类超平面最近的数据点,这些点对于确
定超平面的位置至关重要。

SVM 将这些支持向量作为分类决策的关键因素。

3. 核函数:用来将非线性问题映射到高维空间,以实现更好的
分类效果。

SVM 可以使用多种核函数,如线性核、多项式核和径向基函数核等。

4. 松弛变量:在实际分类问题中,很难找到一个完美的超平面,因此 SVM 引入了松弛变量来允许一些数据点被分类错误。

松弛变量
的数量可以通过调节一个参数来控制。

5. C 值:SVM 的一个参数,它控制了分类器的复杂度和过拟合
的风险。

C 值越小,分类器越简单,可能会出现欠拟合;C 值越大,分类器越复杂,可能会出现过拟合。

6. 判别函数:SVM 的预测函数,根据输入数据的特征向量和训
练得到的模型参数,输出一个预测结果。

对于二分类问题,判别函数
的输出值大于 0 表示属于正类,小于 0 表示属于负类。

支持向量机名词解释

支持向量机名词解释支持向量机(SVM)是一种常见的监督学习算法,在机器学习中得到广泛应用。

它被广泛认为是一种高效、准确和可靠的模型,尤其在处理分类问题时效果显著。

本文将简单介绍SVM的一些基本概念和术语,以便理解该算法的工作原理和实现过程。

1. 支持向量支持向量是指对于已知分类的数据集,对超平面(将两类数据分开的区域)有贡献的最小数据集。

换句话说,支持向量是在SVM分类器中最重要的训练样本,它们确定了分类器的位置。

2. 超平面超平面是将不同类别的数据样本分开的一条直线、曲线或者更高维的平面,可以理解为是分类器的决策边界。

在二维空间中,超平面可以表示为一条直线,而在更高维空间中,超平面可以表示为多条直线。

3. 核函数核函数是用来将低维特征空间中的数据映射到高维特征空间的一种技术。

由于在低维空间中可能存在不可分数据样本,但在高维空间中,则可以更容易地进行分类。

SVM算法中常用的核函数有线性核函数、多项式核函数和径向基函数(RBF)核函数等。

4. 松弛变量在SVM分类器中,有一些数据点可能很难完美地分到某一类,因此引入了松弛变量,这允许一些样本被分错。

松弛变量可以限制分类器的严格性,使其更适合实际应用场景。

5. C参数C参数是SVM模型中的一个重要参数,控制了松弛变量的程度,即分类器允许多少样本分类错误。

C值越大,分类器越严格,而C值越小,则分类器允许更多的松弛变量,允许分类器在某些情况下接受错误分类。

总之,支持向量机是一种十分重要的学习算法,在机器学习任务中有着广泛的应用,本文对其进行了简要介绍。

了解这些基本概念和术语可以帮助我们理解和应用SVM算法,提高建模和预测的准确性,为未来的研究提供便利。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.3.2、点到超平面的距离定义:几何间隔 Geometrical margin
在给出几何间隔的定义之前,咱们首先来看下,如上图所示,对于一个 点 x , 令其垂直投影到超平面上的对应的为 x0 ,由于 w 是垂直于超平 面的一个向量, 为样本 x 到分类间隔的距离,我们有
(||w||表示的是范数,关于范数的概念参见这里)
是这样的么?当然不是,详情请见本文评论下第 43 楼)
当然,有些时候,或者说大部分时候数据并不是线性可分的,这个时候满足 这样条件的超平面就根本不存在(不过关于如何处理这样的问题我们后面会讲), 这里先从最简单的情形开始推导,就假设数据都是线性可分的,亦即这样的超平 面是存在的。 更进一步,我们在进行分类的时候,将数据点 x 代入 f(x) 中,如果得 到的结果小于 0 ,则赋予其类别 -1 ,如果大于 0 则赋予类别 1 。如 果 f(x)=0,则很难办了,分到哪一类都不是。
支持向量机通俗导论(理解 SVM 的三层境界)
作者:July、pluskid 致谢:白石、JerryLead 本 PDF 制作者:吴新隆
联系作者:/julyweibo 出处:/v_july_v
二零一三年十二月六日于天通苑
前言
动笔写这个支持向量机(support vector machine)是费了不少劲和困难的, 原因很简单, 一者这个东西本身就并不好懂,要深入学习和研究下去需花费不少 时间和精力,二者这个东西也不好讲清楚,尽管网上已经有朋友写得不错了(见 文末参考链接),但在描述数学公式的时候还是显得不够。得益于同学白石的数 学证明,我还是想尝试写一下,希望本文在兼顾通俗易懂的基础上,真真正正能 足以成为一篇完整概括和介绍支持向量机的导论性的文章。 本文在写的过程中,参考了不少资料,包括《支持向量机导论》、《统计学 习方法》及网友 pluskid 的支持向量机系列等等,于此,还是一篇学习笔记,只 是加入了自己的理解和总结,有任何不妥之处,还望海涵。全文宏观上整体认识 支持向量机的概念和用处,微观上深究部分定理的来龙去脉,证明及原理细节, 力求逻辑清晰 & 通俗易懂。 同时,阅读本文时建议大家尽量使用 chrome 等浏览器,如此公式才能更好 的显示,再者,阅读时可拿张纸和笔出来,把本文所有定理.公式都亲自推导一 遍或者直接打印下来(可直接打印网页版或本 PDF,享受随时随地思考、演算的 极致快感),在文稿上演算。 Ok,还是那句原话,有任何问题,欢迎任何人随时不吝指正 & 赐教,感谢。
显然,如果 f(x)=0 ,那么 x 是位于超平面上的点。我们不妨要求对 于所有满足 f(x)<0 的点,其对应的 y 等于 -1 ,而 f(x)>0 则对 应 y=1 的数据点。
注:上图中,定义特征到结果的输出函数 实质是一样的。为什么?因为无论是
,与我们之前定义的 ,还是
,不影响最终优化结果。下文你将看到,当我们转化到优化
一般而言, 一个点距离超平面的远近可以表示为分类预测的确信或准确程度。

在超平面 w*x+b=0 确定的情况下,|w*x+b|能够相对的表示点 x 到距离超 平面的远近, 而 w*x+b 的符号与类标记 y 的符号是否一致表示分类是否正 确,所以,可以用量 y*(w*x+b)的正负性来判定或表示分类的正确性和确 信度。
总结成一句话即是:从最大间隔出发(目的本就是为了确定法向量 w),转 化为求对变量 w 和 b 的凸二次规划问题。亦或如下图所示(有点需要注意,如读 者@酱爆小八爪所说:从最大分类间隔开始,就一直是凸优化问题):
1.3、函数间隔 Functional margin 与几何间隔 Geometrical margin
上面提到过我们只需考虑
的正负问题,而不用关心 g(z),因此我们这里
将 g(z)做一个简化,将其简单映射到 y=-1 和 y=1 上。映射关系如下:
于此,想必已经解释明白了为何线性分类的标准一般用 1 或者-1 来标示。 注:上小节来自 jerrylead 所作的斯坦福机器学习课程的笔记。
1.2、线性分类的一个例子
第一层、了解 SVM
1.0、什么是支持向量机 SVM
要明白什么是 SVM,便得从分类说起。 分类作为数据挖掘领域中一项非常重要的任务,它的目的是学会一个分类函 数或分类模型(或者叫做分类器), 而支持向量机本身便是一种监督式学习的方法 (至于具体什么是监督学习与非监督学习,请参见此系列 Machine L&Data Mining 第一篇),它广泛的应用于统计分类以及回归分析中。
其中 x 是 n 维特征向量,函数 g 就是 logistic 函数。

的图像是
可以看到,将无穷映射到了(0,1)。 而假设函数就是特征属于 y=1 的概率。
当我们要判别一个新来的特征属于哪个类时,只需求,若大于 0.5 就是 y=1 的类,反之属于 y=0 类。 再审视一下 ,发现 只和 有关, >0,那么 , ,g(z) =1,反
只不过是用来映射,真实的类别决定权还在 之 =0。如果我们只从
。还有当时
出发,希望模型达到的目标无非就是让训练数据中
y=1 的特征
,而是 y=0 的特征Fra bibliotek。Logistic 回归就是要学习得到 ,
使得正例的特征远大于 0,负例的特征远小于 0,强调在全部训练实例上达到这 个目标。
1.1.3、形式化标示
上对应的类别 y 即可,因此实际上我们定义 margin 为(注:别忘了,上面 的定义,
(代人相关式子可以得出:yi*(w/||w|| + b/||w||))
正如本文评论下读者 popol1991 留言:函数间隔 y*(wx+b)=y*f(x)实际上就 是|f(x)|, 只是人为定义的一个间隔度量;而几何间隔|f(x)|/||w||才是直观上 的点到超平面距离。 想想二维空间里的点到直线公式:假设一条直线的方程为 ax+by+c=0,点 P 的坐标是(x0,y0), 则点到直线距离为|ax0+by0+c|/sqrt(a^2+b^2)。 如下图所示:
我们这次使用的结果标签是 y=-1,y=1,替换在 logistic 回归中使用的 y=0 和 y=1。同时将 替换成 w 和 b。以前的 为 。现在我们替换为 b,后面替换 (即 )。这样,我们让 为 ,进一步 ,其中认
。 也就是说除了 y 由 y=0 变为 y=-1, 只是标记不同外, 与 logistic 回归的形式化表示没区别。 再明确下假设函数
1.1、线性分类
OK,在讲 SVM 之前,咱们必须先弄清楚一个概念:线性分类器(也可以叫做 感知机, 这里的机表示的是一种算法, 本文第三部分、 证明 SVM 中会详细阐述)。
1.1.1、分类标准
这里我们考虑的是一个两类的分类问题,数据点用 x 来表示,这是一 个 n 维向量, w^T 中的 T 代表转置, 而类别用 y 来表示, 可以取 1 或者 -1 , 分别代表两个不同的类。一个线性分类器的学习目标就是要在 n 维的数据空 间中找到一个分类超平面,其方程可以表示为:
又由于 算出:
x0
是超平面上的点,满足
f(x0)=0
,代入超平面的方程即可
(有的书上会写成把||w|| 分开相除的形式,如本文参考文献及推荐阅读条 目 11,其中,||w||为 w 的二阶泛数) 不过这里的 是带符号的,我们需要的只是它的绝对值,因此类似地,也乘 几何间隔 geometrical =y(wTx+b)=yf(x) ):
请读者注意,下面的篇幅将按下述 3 点走:
1. 咱们就要确定上述分类函数 f(x) = w.x + b(w.x 表示 w 与 x 的内积)中的两个 参数 w 和 b,通俗理解的话 w 是法向量,b 是截距(再次说明:定义特征到结 果的输出函数 是一样的); 2. 那如何确定 w 和 b 呢?答案是寻找两条边界端或极端划分直线中间的最大间隔 (之所以要寻最大间隔是为了能更好的划分不同类的点,下文你将看到:为寻 最大间隔,导出 1/2||w||^2,继而引入拉格朗日函数和对偶变量 a,化为对单 一因数对偶变量 a 的求解,当然,这是后话),从而确定最终的最大间隔分类 超平面 hyper plane 和分类函数; 3. 进而把寻求分类函数 f(x) = w.x + b 的问题转化为对 w,b 的最优化问题,最终 化为对偶因子的求解。 ,与我们最开始定义的 实质
支持向量机(SVM)是 90 年代中期发展起来的基于统计学习理论的一种机器 学习方法, 通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置 信范围的最小化, 从而达到在统计样本量较少的情况下,亦能获得良好统计规律 的目的。 通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最 大的线性分类器, 即支持向量机的学习策略便是间隔最大化,最终可转化为一个 凸二次规划问题的求解。 对于不想深究 SVM 原理的同学或比如就只想看看 SVM 是干嘛的,那么,了解 到这里便足够了,不需上层。而对于那些喜欢深入研究一个东西的同学,甚至究 其本质的,咱们则还有很长的一段路要走,万里长征,咱们开始迈第一步吧,相 信你能走完。
然与此同时,问题就出来了。上述定义的函数间隔虽然可以表示分类预测的 正确性和确信度,但在选择分类超平面时,只有函数间隔还远远不够,因为如果 成比例的改变 w 和 b,如将他们改变为 2w 和 2b,虽然此时超平面没有改变,但 函数间隔的值 f(x)却变成了原来的 2 倍。 其实, 我们可以对法向量 w 加些约束条件, 使其表面上看起来规范化, 如此, 我们很快又将引出真正定义点到超平面的距离--几何间隔 geometrical margin 的概念 (很快你将看到, 几何间隔就是函数间隔除以个||w||, 即 yf(x) / ||w||) 。
下面举个简单的例子,一个二维平面(一个超平面,在二维空间中的例子就 是一条直线),如下图所示,平面上有两种不同的点,分别用两种不同的颜色表 示,一种为红颜色的点,另一种则为蓝颜色的点,红颜色的线表示一个可行的超 平面。
相关文档
最新文档