线性模型(四)之感知机

  在该系列博客《线性模型》的前两章介绍了介绍了线性模型用于回归任务,即多项式拟合和线性回归。那么能否方便地将线性模型也用到分类任务上呢?
  按照我自己的理解,将线性回归用于分类,最简单的思想就是构建线性回归模型 f(x)=wTx+b f ( x ) = w T x + b ,然后做如下的判断来实现简单的二分类。

{f(x)0,f(x)<0, { f ( x ) ≥ 0 , 正 例 f ( x ) < 0 , 负 例

  当然这只是一个最简单的想法,要实现的话,还需要涉及到如何定义损失函数,如何求解最优化问题等。感知机(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 的基础上,增加一符号函数,

sign(z)={+1,z01,z<0 s i g n ( z ) = { + 1 , z ≥ 0 − 1 , z < 0

  感知机的模型定义好后,那么如何定义损失函数呢?分类算法的首要目标当然是使得所有样本数据都被正确分类。一种定义损失函数的想法是以误分类的点数 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 的函数距离之和。

E(w,b)=xiM|wTxi+b| E ( w , b ) = ∑ x i ∈ M | w T x i + 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 ,因此有

E(w,b)=xiM|wTxi+b|=xiMyi(wTxi+b) E ( w , b ) = ∑ x i ∈ M | w T x i + b | = ∑ x i ∈ M − y i ( w T x i + b )

  定义好模型和损失函数后,接下来就是考虑如何求解该最优化问题。感知机采用随机梯度下降法求解该无约束最优化问题。随机梯度下降,即每次选择某误分类个点,求在该点上的梯度,然后以一定的学习率迭代更新参数 w w b b ,每次更新时均朝着梯度的负方向更新。损失函数对参数 w w b b 求偏导有:

E(w,b)w=xiMyixiE(w,b)b=xiMyi ∂ E ( w , b ) ∂ w = ∑ x i ∈ M − y i x i ∂ E ( w , b ) ∂ b = ∑ x i ∈ M − y i

随机梯度下降算法,每次只根据一个样本来计算损失和梯度,比如选择误分类点 (xi,yi) ( x i , y i ) ,则损失和偏导分别为

E(w,b)=yi(wTxi+b)E(w,b)w=yixiE(w,b)b=yi E ( w , b ) = − y i ( w T x i + b ) ∂ E ( w , b ) ∂ w = − y i x i ∂ E ( w , b ) ∂ b = − y i

据此来更新参数,
w=w+ηyixib=b+ηyi w = w + η y i x i b = b + η 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,bxiMyi(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

感知机的介绍都到此为止了,^_^

你可能感兴趣的:(machine,learning)