[机器学习算法详解]感知机模型——以马的患病分类问题为例
2015-04-03 09:26
351 查看
[机器学习算法详解]感知机模型——以马的患病分类问题为例
问题背景
感知机(perceptron)模型是一种非常简单的分类模型,其思想主要是想通过一个分离超平面对数据进行分类,分离超平面实际是一种判别模型,在感知机、逻辑斯蒂回归和支持向量机等中都使用。任何维度中的超平面是x∣wTx+b=0\\{x \mid w^Tx+b=0\\},在平面一侧使得wTx+b>0w^Tx+b>0的向量为正例,另一侧使得其小于0则为反例,这样超平面就将数据分成了两个类别,达到了分类的目的。其中x是一个样本的特征空间,如马的患病问题中一匹马的特征属性集合,将x带入超平面计算就可以将马分成患病和不患病两类我们希望获得一个这样的分离超平面,但是如何建立这个超平面?这个超平面是否唯一?这两个问题是感知机算法的重点,接下来通过详细的推导步骤和证明进行分析。
算法详解
1. 建立超平面
建立超平面的过程实际上就是求超平面参数的过程,感知机中超平面的参数有两个,w是超平面的法线方向,b是超平面的位置信息,通过这两个向量就能唯一确定一个超平面。感知机模型通过经验风险最小化策略对超平面进行建立,其主要思想就是希望在最优分离超平面下,错误分类的样本点的距离之和最小,接下来我们用函数的形式来构造。首先一个样本点 x(i)x^{(i)} 到超平面 ll 的距离为dist(x(i),l)=|wTx(i)+b|||w||dist(x^{(i)}, l) = \frac{|w^Tx^{(i)}+b|}{||w||}对于正例的样本点,其分子大于0,类别标签y也大于0,对于反例的样本点,其分子小于0,类别标签y也小于0,因此正确分类点的距离可以改写成去掉绝对值加入标签y的项dist(x(i),l)=y(i)(wTx(i)+b)||w||dist(x^{(i)}, l) = \frac{y^{(i)}(w^Tx^{(i)}+b)}{||w||}同样对于错误的分类点,其距离取相反数即可,假设错误分类样本点的集合为M,那么很显然,错误分类的样本点的距离之和可以表示成这样的函数L(w,b)=∑x(i)∈M−y(i)(wTx(i)+b)||w||L(w,b)=\sum_{x^{(i)} \in M} -\frac{y^{(i)}(w^Tx^{(i)}+b)}{||w||}对目标函数L,w和b是待求的自变量,希望求出最优解使得L最小化,提出分母这一常数项并且去除符号,问题转化为maxw,b∑x(i)∈My(i)(wTx(i)+b)\max_{w,b}\sum_{x^{(i)} \in M}y^{(i)}(w^Tx^{(i)}+b)求解这样一个最大化问题的思路很明确,求出其极大值,而极大值就是对自变量偏导数为0的点,而是否只有一个极大值在接下来会介绍,这里我们希望通过偏导等于0求出极大值点,发现不能通过直接求偏导数等于0而求出自变量的值,因此改用另外一种很常用的求极值的思路就是梯度下降法(求极小值是梯度下降,求极大值是梯度上升)。
梯度下降法的思想是随机选择假设空间中的一点(即令w和b为一个随机初始值),然后沿着梯度下降的方向按照一定的步长搜索假设空间,这样不断迭代能找到最优值。其实对梯度下降法的可以这样理解,在该点选择一个平面来拟合当前的曲面,这个平面的方向就是当前自变量的梯度的方向(梯度在工数中的理解就是函数下降最快的方向),在平面上移动一定的距离即步长来获得下一轮的解。如果步长参数调整得很好梯度下降法可快速收敛,如果整个问题只有一个极值即最值,那么梯度下降法最终可以收敛到这个最值,但是如果问题有不止一个极值,那么就会存在陷入局部最优的情况。因此梯度下降法需要依据具体情况适用和调整。
这里使用梯度下降法,求出w的梯度为∇w=∑ix(i)y(i)\nabla_w=\sum_i x^{(i)}y^{(i)},b的梯度为∇w=∑iy(i)\nabla_w=\sum_i y^{(i)},因此w和b的大小按照梯度进行迭代一定步骤或者直至完全分离测试样例(实际上就是使得损失函数L为0达到最小值),这里使用的是随机梯度下降法,每次不是使用所有的误分类样例,而是随机选取其中的一个进行求梯度的近似求解,这样可以充分利用数据。
普通的梯度下降法(即批处理梯度下降法)和随机梯度下降法有这样一些区别。
+ 批处理梯度下降法使用所有满足条件的数据进行梯度求解,是标准的梯度方向。随机梯度下降法使用随机一个满足条件的数据,求解的是梯度方向的近似。
+ 批处理法需要更多的计算代价,因为其求梯度使用了所有满足条件的数据。随机法相比有更小的步长,因此可能需要更多次的迭代步骤。
+ 随机法使用梯度的近似求解,在有多个极值的情况下,随机法可能更好地避免陷入局部最优的情况。
算法步骤
初始化参数为w0w_0和b0b_0。对样本集进行分类并获得误分类样本集M。
依据误分类集M计算w和b的梯度方向对w和b进行赋值。w←w+αx(i)y(i),b←b+αy(i)w \leftarrow w + \alpha x^{(i)}y^{(i)}, b \leftarrow b + \alpha y^{(i)}
迭代2~3步直至固定迭代次数或样本集被完全分类。
2. 收敛性分析
根据kinoff定理得知。如果样本集线性可分,那么必然存在分离超平面,并且这些样本到平面的距离存在一个最小值。在迭代过程中,迭代次数k也存在一个上限,换句话说,迭代过程是收敛的。kinoff定理将在《感知机模型收敛性证明》这篇博客中进行详细证明。3. 问题讨论
李航的《统计学习方法》中有这样的描述“感知机模型存在多个最优解,并依赖于参数初始值和误分类样本点的选择顺序”。优化问题为使当前误分类点的距离之和最小化,这一目标函数是距离之和最小化minw,b−∑x(i)∈My(i)(wTx(i)+b)\min_{w,b}-\sum_{x^{(i)} \in M}y^{(i)}(w^Tx^{(i)}+b),限制条件是这些点都是误分类点y(i)(wTx(i)+b)<0y^{(i)}(w^Tx^{(i)}+b)<0。对损失函数L进行推导,令w^=[wT,b]T\hat w=[w^T,b]^T,函数可以推导成L=w^TXTYL=\hat w^TX^TY,对这个函数进行凸函数分析,由于L(au+bv)=(au+bv)TXTY=auTXTY+bvTXTY=aL(u)+bL(v)L(au+bv)=(au+bv)^TX^TY=au^TX^TY+bv^TX^TY=aL(u)+bL(v)因为这个函数既是凸的,也是凹的,他是一个放射函数,因此这个函数是没有最优解的,可以理解为二维中直线没有最优解,三维中平面没有最优解,但是随着迭代过程,这个函数在不断的变化,因为误分类点的个数发生了变化,二维中可以理解为这条直线在发生变化,其斜率在下降,因为x(i)x^{(i)}的个数在减小,斜率必然减小。当减到某一程度时,误分类点的个数为0,此时直线斜率为0,直线在参数空间中的每一个点都是这个函数极值点,因此,最终的解的个数是无穷的。这样“感知机模型存在多个最优解”这句话解决了。而另一句话可以这样理解,参数初始值的选择不同,参数空间中直线是不同的,根据不同的错误分类点的选取,迭代过程也必然是不一样的,那么最终的直线斜率为0时也不是确定的,必然导致参数空间的解是不确定的,也就是分离超平面不一样。如果使用批处理梯度下降法,两次过程一旦参数初始值选取一样,那么最终的参数会是一样的,也就是分离超平面会一样。我们再从另一个角度来理解,在二维空间中,极端情况样本点有2个,那么分离超平面(这里是直线)会是两点连线端的垂线中的任意一条,因为任意一条直线对应的损失函数都是0,但是这样的直线有无数条,而具体是哪一条则依赖初始值的选择。因此感知机模型可以收敛但存在多个最优解,并依赖于参数初始值和误分类样本点的选择顺序。
实验
实验使用的测试集是UCI中的马的患病问题,使用299个训练样例,每个样例包括21个特征属性,分为0、1两类,有30%左右的缺损数据。67个测试样例。计算的平均错误率为32.8%。python代码在这里标签 : 机器学习
相关文章推荐
- [机器学习算法详解]EM算法—以词集文本分类问题为例
- [机器学习算法详解]决策树——以隐形眼镜分类问题为例
- [机器学习算法详解]朴素贝叶斯算法—以词集文本分类问题为例
- 【机器学习详解】KNN分类的概念、误差率及其问题
- 分类问题之朴素贝叶斯模型
- CSS盒模型(Box model)问题详解
- 统计学习:泛化能力、生成模型、判别模型、分类、标注和回归问题
- 【从0到1学Web前端】CSS定位问题一(盒模型,浮动,BFC) 分类: HTML+CSS 2015-05-27 22:24 813人阅读 评论(1) 收藏
- CSS盒模型(Box Model)问题详解
- [机器学习算法详解]逻辑斯蒂回归模型
- [置顶] 【UNIX网络编程】五种I/O模型,阻塞非阻塞同步异步问题详解
- 学习IOS开问题篇--视图的模型控件属性写在私有分类中的原因
- 机器学习经典算法详解及Python实现--CART分类决策树、回归树和模型树
- 【机器学习基础】机器学习算法的分类——关于如何选择机器学习算法和适用解决的问题
- CART分类决策树、回归树和模型树算法详解及Python实现
- [原]有关Caffe训练好的模型在Python接口下使用分类不准确的问题解决
- 如何为分类问题选择合适的机器学习算法
- 多分类问题与多类感知机算法
- 深入N皇后问题的两个最高效算法的详解 分类: C/C++ 2014-11-08 17:22 117人阅读 评论(0) 收藏
- 如何为分类问题选择合适的机器学习算法