[机器学习算法详解]感知机模型——以马的患病分类问题为例
问题背景
感知机(perceptron)模型是一种非常简单的分类模型,其思想主要是想通过一个分离超平面对数据进行分类,分离超平面实际是一种判别模型,在感知机、逻辑斯蒂回归和支持向量机等中都使用。任何维度中的超平面是
x∣wTx+b=0
,在平面一侧使得
wTx+b>0
的向量为正例,另一侧使得其小于0则为反例,这样超平面就将数据分成了两个类别,达到了分类的目的。其中x是一个样本的特征空间,如马的患病问题中一匹马的特征属性集合,将x带入超平面计算就可以将马分成患病和不患病两类
我们希望获得一个这样的分离超平面,但是如何建立这个超平面?这个超平面是否唯一?这两个问题是感知机算法的重点,接下来通过详细的推导步骤和证明进行分析。
算法详解
1. 建立超平面
建立超平面的过程实际上就是求超平面参数的过程,感知机中超平面的参数有两个,w是超平面的法线方向,b是超平面的位置信息,通过这两个向量就能唯一确定一个超平面。感知机模型通过经验风险最小化策略对超平面进行建立,其主要思想就是希望在最优分离超平面下,错误分类的样本点的距离之和最小,接下来我们用函数的形式来构造。
首先一个样本点
x(i)
到超平面
l
的距离为
梯度下降法的思想是随机选择假设空间中的一点(即令w和b为一个随机初始值),然后沿着梯度下降的方向按照一定的步长搜索假设空间,这样不断迭代能找到最优值。其实对梯度下降法的可以这样理解,在该点选择一个平面来拟合当前的曲面,这个平面的方向就是当前自变量的梯度的方向(梯度在工数中的理解就是函数下降最快的方向),在平面上移动一定的距离即步长来获得下一轮的解。如果步长参数调整得很好梯度下降法可快速收敛,如果整个问题只有一个极值即最值,那么梯度下降法最终可以收敛到这个最值,但是如果问题有不止一个极值,那么就会存在陷入局部最优的情况。因此梯度下降法需要依据具体情况适用和调整。
这里使用梯度下降法,求出w的梯度为 ∇w=∑ix(i)y(i) ,b的梯度为 ∇w=∑iy(i) ,因此w和b的大小按照梯度进行迭代一定步骤或者直至完全分离测试样例(实际上就是使得损失函数L为0达到最小值),这里使用的是随机梯度下降法,每次不是使用所有的误分类样例,而是随机选取其中的一个进行求梯度的近似求解,这样可以充分利用数据。
普通的梯度下降法(即批处理梯度下降法)和随机梯度下降法有这样一些区别。
+ 批处理梯度下降法使用所有满足条件的数据进行梯度求解,是标准的梯度方向。随机梯度下降法使用随机一个满足条件的数据,求解的是梯度方向的近似。
+ 批处理法需要更多的计算代价,因为其求梯度使用了所有满足条件的数据。随机法相比有更小的步长,因此可能需要更多次的迭代步骤。
+ 随机法使用梯度的近似求解,在有多个极值的情况下,随机法可能更好地避免陷入局部最优的情况。
算法步骤
- 初始化参数为 w0 和 b0 。
- 对样本集进行分类并获得误分类样本集M。
- 依据误分类集M计算w和b的梯度方向对w和b进行赋值。
w←w+αx(i)y(i),b←b+αy(i)- 迭代2~3步直至固定迭代次数或样本集被完全分类。
2. 收敛性分析
根据kinoff定理得知。如果样本集线性可分,那么必然存在分离超平面,并且这些样本到平面的距离存在一个最小值。在迭代过程中,迭代次数k也存在一个上限,换句话说,迭代过程是收敛的。kinoff定理将在《感知机模型收敛性证明》这篇博客中进行详细证明。
3. 问题讨论
李航的《统计学习方法》中有这样的描述“感知机模型存在多个最优解,并依赖于参数初始值和误分类样本点的选择顺序”。优化问题为使当前误分类点的距离之和最小化,这一目标函数是距离之和最小化 minw,b−∑x(i)∈My(i)(wTx(i)+b) ,限制条件是这些点都是误分类点 y(i)(wTx(i)+b)<0 。对损失函数L进行推导,令 w^=[wT,b]T ,函数可以推导成 L=w^TXTY ,对这个函数进行凸函数分析,由于
我们再从另一个角度来理解,在二维空间中,极端情况样本点有2个,那么分离超平面(这里是直线)会是两点连线端的垂线中的任意一条,因为任意一条直线对应的损失函数都是0,但是这样的直线有无数条,而具体是哪一条则依赖初始值的选择。因此 感知机模型可以收敛但存在多个最优解,并依赖于参数初始值和误分类样本点的选择顺序。
实验
实验使用的测试集是UCI中的马的患病问题,使用299个训练样例,每个样例包括21个特征属性,分为0、1两类,有30%左右的缺损数据。67个测试样例。计算的平均错误率为32.8%。python代码在这里
标签 : 机器学习