在该系列博客《线性模型》的前两章介绍了介绍了线性模型用于回归任务,即多项式拟合和线性回归。那么能否方便地将线性模型也用到分类任务上呢?
按照我自己的理解,将线性回归用于分类,最简单的思想就是构建线性回归模型 f(x)=wTx+b f ( x ) = w T x + b ,然后做如下的判断来实现简单的二分类。
当然这只是一个最简单的想法,要实现的话,还需要涉及到如何定义损失函数,如何求解最优化问题等。感知机(perceptron)就是使用该思想进行分类的算法,下面来看看感知机算法的原理吧。
输入:数据集 D={(x1,y2),(x2,y2),...,(xN,yN)} D = { ( x 1 , y 2 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } ,其中 xi=[xi1,xi2,...,xid] x i = [ x i 1 , x i 2 , . . . , x i d ] ,而 yi∈{−1,1} y i ∈ { − 1 , 1 }
输出: f(x)=sign(wTx+b) f ( x ) = s i g n ( w T x + b )
可见感知机模型和线性回归模型的区别主要在于标签 yi y i 不再是实数范围,而是表示两个类别,因此对输出做了修改,把结果限制在 {−1,1} { − 1 , 1 } ,在 wTx+b w T x + b 的基础上,增加一符号函数,
感知机的模型定义好后,那么如何定义损失函数呢?分类算法的首要目标当然是使得所有样本数据都被正确分类。一种定义损失函数的想法是以误分类的点数 E(w,b)=∑Ni=1I(f(x)≠yi) E ( w , b ) = ∑ i = 1 N I ( f ( x ) ≠ y i ) 作为损失函数。该想法直接明了,但其不连续可导,不易优化。因此,感知机采用的损失函数为所有误分类点到划分超平面 wTx+b w T x + b 的函数距离之和。
其中 M M 表示误分类点的集合,因为点被分错了,因此 wTxi+b w T x i + b 和 yi y i 异号,故 yi(wTxi+b)<0 y i ( w T x i + b ) < 0 ,因此有
定义好模型和损失函数后,接下来就是考虑如何求解该最优化问题。感知机采用随机梯度下降法求解该无约束最优化问题。随机梯度下降,即每次选择某误分类个点,求在该点上的梯度,然后以一定的学习率迭代更新参数 w w 和 b b ,每次更新时均朝着梯度的负方向更新。损失函数对参数 w w 和 b b 求偏导有:
随机梯度下降算法,每次只根据一个样本来计算损失和梯度,比如选择误分类点 (xi,yi) ( x i , y i ) ,则损失和偏导分别为
整理感知机算法的流程如下:
输入: D={(x1,y1),(x2,y2),...,(xN,yN)} D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } , yi∈{−1,1} y i ∈ { − 1 , 1 }
学习率 η η
输出: f(x)=sign(wTx+b) f ( x ) = s i g n ( w T x + b ) \
目标: minw,bE(w,b)=minw,b∑xi∈M−yi(wTxi+b) min w , b E ( w , b ) = min w , b ∑ x i ∈ M − y i ( w T x i + b )
步骤:
1.确定初始值 w0 w 0 和 b0 b 0
2.随机选择一个点 (xi,yi) ( x i , y i )
3. if yi(wTxi+b)<0 y i ( w T x i + b ) < 0
w=w+ηyixi w = w + η y i x i
b=b+ηyi b = b + η y i
4. if 训练集所有点被分类正确
终止
else
goto 2
感知机的介绍都到此为止了,^_^