详解SVM系列(一):感知机

什么是感知机

感知机是二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1二值。

感知机对应于输入空间(特征空间)中将实例分为正负两类的分离超平面,属于判别模型。

感知机旨在求出将训练数据进行线性划分的分离超平面,为此,导入基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型。

最重要的是感知机是支持向量机(SVM)的基础(修改下损失函数,后面会介绍)

感知机模型

定义:假设输入空间(特征空间)是χ属于 R n R^n ,输出空间是Υ属于{+1,-1},输入 x χ x∈χ 表示实例的特征向量,对应于输入空间的点;输出y表示实例的类别
由输入空间到输出空间的如下函数:
f ( x ) = s i g n ( w x + b ) f(x)=sign(wx+b) 称为感知机
其中, w b w b w x w x s i g n w和b称为感知机的参数,w为权值向量,b为偏置,wx表示w和x的内积,sign是符号函数 即
s i g n ( x ) = + 1 x 0 sign(x)=+1当x≥0
s i g n ( x ) = 1 x 0 sign(x)=-1当x<0

感知机是一种线性分类模型,属于判别模型。感知机的假设空间是定义在特征空间中的所有线性分类器,即函数集合 f f ( x ) = w x + b {f|f(x)=wx+b}

感知机的几何解释

感知机有如下的几何解释:对于线性方程 w x + b = 0 wx+b=0 ——(1)
对应于特征空间一个超平面S,其中w是超平面的法向量,b是超平面的截距。这个超平面将特征空间划分为两个部分。位于两部分的点被分为正负两类。因此超平面称为分离超平面。如下图所示:
在这里插入图片描述

感知机学习策略

数据集的线性可分性:

定义:给定一个数据集 T = ( x 1 , y 1 ) , ( x 2 , y 2 ) ( x n , y n ) T={(x_1,y_1),(x_2,y_2)……(x_n,y_n)} ,其中 x i x χ , y i x + 1 , 1 , i = 1 , 2 N x_ix∈χ,y_ix∈{+1,-1},i=1,2……N
如果存在某个超平面S: w x + b = 0 wx+b=0
能够将数据集的正实例点和负实例点完全正确的划分到超平面的两侧,则称数据集 T T 为线性可分数据集;否则称数据集 T T 线性不可分。

感知机能(并且一定能)将线性可分的数据集分开

为了找出超平面S,即确定感知机模型的参数w和b,需要确定一个学习策略,即定义(经验)损失函数并将损失函数极小化。

损失函数的一个自然选择是误分类点的总数,但是,这样的损失函数不是参数w和b的连续可导函数,不易优化。
损失函数的另一个选择是误分类点到超平面S的总距离。这是感知机采用的。

首先写出输入空间 R n R^n 中任一点 x 0 x_0 到超平面S的距离: w x 0 + b w \frac{|wx_0+b|}{||w||}

其次,对于误分类点来说 y i ( w x i + b ) 0 -y_i(wx_i+b)>0 成立。

因为 当 w x i + b > 0 y i = 1 , w x i + b < 0 , y i = + 1. wx_i+b>0时,y_i=-1,而当wx_i+b<0时,y_i=+1. 因此,误分类点x_i到超平面S的距离是

y i ( w x i + b ) w -\frac{y_i(wx_i+b)}{||w||} (这是单个误分类点x_i到分离超平面S的距离)

这样假设超平面S的误分类点集合为M,那么所有误分类点到超平面S的总距离为:
x i M y i ( w x i + b ) w -\frac{\displaystyle\sum_{x_i∈M}y_i(wx_i+b)}{||w||}

不考虑分母1||w||,就得到感知机学习的损失函数。

给定的训练数据集,感知机 s i g n ( w x + b ) sign(wx+b) 学习的损失函数定义为
L ( w , b ) = x i M y i ( w x i + b ) L(w,b)=-\displaystyle\sum_{x_i∈M}y_i(wx_i+b) (式2)

其中,M为误分类点的集合。

一个特定的样本点的损失函数:在误分类时是参数w和b的线性函数,在正确分类时为0

感知机学习算法

感知机学习问题转换求解损失函数式2的最优化问题,最优化的方法是随机梯度下降法(包括原始形式和对偶形式,现在只介绍原始形式)

感知机学习问题转换为下面的最优化问题:

m i n L ( w , b ) = x i M y i ( w x i + b ) minL(w,b)=-\displaystyle\sum_{x_i∈M}y_i(wx_i+b)

感知机学习算法是误分裂驱动的,具体采用随机梯度下降法。
首先,任意选取一个超平面 w 0 , b 0 w_0,b_0 ,然后用梯度下降法不断极小化目标函数(式2)。极小化过程中不是一次使M中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。

假设误分类点集合M是固定的,那么损失函数 L ( w , b ) L(w,b) 的梯度由

w L ( w , b ) = x i M y i x i ▽_wL(w,b)=-\displaystyle\sum_{x_i∈M}y_ix_i
b L ( w , b ) = x i M y i ▽_bL(w,b)=-\displaystyle\sum_{x_i∈M}y_i
给出。
随机选取一个误分类点 ( x i , y i ) (x_i,y_i) ,对w和b进行更新:

w w + η y i x i w←w+ηy_ix_i
b b + η y i b←b+ηy_i
其中 η是步长,在统计学习中又称作学习率。这样通过迭代可以期待损失函数 L ( w , b ) L(w,b) 不断减小,直到为零。

感知机学习算法原始形式:

输入:训练数据集T和学习率η
输出:w,b 感知机模型 f ( x ) = s i g n ( w x + b ) f(x)=sign(wx+b)

(1):选择初始超平面 w 0 b 0 w_0和b_0
(2):在训练集中选择数据 ( x i , y i ) (x_i,y_i)
(3):如果 y i ( w x i + b ) 0 ( ) y_i(wx_i+b)≤0(利用误分类的点进行更新迭代)
w w + η y i x i w←w+ηy_ix_i
b b + η y i b←b+ηy_i
(4)转到(2)直到训练集中没有误分类的点

这种学习算法直观上有如下解释:当一个实例点被误分类,即位于分离超平面的错误一侧时,则调整 w , b w,b 的值,使得分离超平面向该误分类点的一侧移动,以减少该误分类点到超平面的距离,直到超平面越过该误分类点,使其被正确分类。

(这样,如果训练数据集不是线性可分的,那么最终会出现“震荡”)

算法的收敛性

可以证明:对线性可分的数据集,感知机学习算法原始形式收敛。

即经过有限次迭代可以得到一个将训练数据集完全正确划分的分离超平面及感知机模型。
感知机学习算法存在很多解,这些解依赖于初值的选择,也依赖于迭代过程中误分类点的选择顺序。为了得到唯一的超平面,需要对分离超平面添加约束条件。(支持向量机)

猜你喜欢

转载自blog.csdn.net/qq_16608563/article/details/83022283