机器学习算法一:感知器学习

问题描述:

  给定线性可分数据集:T={(x1,y1),(x2,y2),...,(xN,yN)},存在超平面S:$w\cdot x+b=0$

$ \left\{\begin{matrix} w\cdot x+b>0,y=+1\\  w\cdot x+b<0,y=-1 \end{matrix}\right. $

 

学习策略:

  定义点x0到超平面S的距离为:

  $\frac{1}{\left \| w \right \|}\left | w \cdot x +b \right |$

  对于误分类的数据$(x_{i},y_{i})$来说,$-y_{i}(w \cdot x_{i}+b)>0$

  因此误分类点$x_{i}$到超平面S的距离时:$-\frac{1}{\left \| w \right \|} y_{i}(w \cdot x_{i}+b)$

  假设超平面S的误分类点集合为M,那么所有误分类点到超平面S的总距离为:

$- \frac{1}{\left \| w \right \|}\sum_{x_{i}\in M}y_{i}(w \cdot x_{i}+b)$

  不考虑$\frac{1}{\left \| w \right \|}$ ,就得到感知机学习的损失函数。

  定义损失函数为: $L(w,b)=-\sum_{x_{i} \in M}y_{i}(w \cdot x_{i}+b)$,其中M为误分类点的集合。

  最小化损失函数:$\min_{w,b}L(w,b\displaystyle )=L(w,b)=-\sum_{x_{i} \in M}y_{i}(w \cdot x_{i}+b)$

  使用梯度下降法求解:梯度分别为

  $\bigtriangledown _wL(w,b)=-\sum_{x{i} \in M}y_{i}x_{i}$

  $\bigtriangledown _bL(w,b)=-\sum_{x_{i} \in M}y_{i}$

  随机选取一个误分类点$(x_{i},y_{i})$,对w,b进行更新:

  $w\leftarrow w+\eta y_{i}x_{i}$
  $b \leftarrow b+ \eta y_{i}$

  其中$\eta$成为步长,即学习率(learning rate)

 

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

  输入:训练数据集$T = \left \{  (x_{1},y_{1}),(x_{2},y_{2}),\cdots ,(x_{N},y_{N})  \right \} $

  输出:w,b;感知机模型$f(x)=sign(w \cdot x +b)$.

  (1) 选取初始值$w_{0},b_{0}$

  (2) 在训练集中选取数据$(x_{i},y_{i})$

  (3) 如果$y_{i}(w \cdot x_{i} +b) \leqslant  0$

            $w \leftarrow w + \eta y_{i}x_{i}$

            $b \leftarrow b + \eta y_{i}$

  (4) 转至(2),直到训练集中没有误分类的点

 

感知机学习算法的对偶形式:

  基本思想:将w和b表示为实例$x_{i}$和标记$y_{i}$的线性组合的形式,通过求解其系数而求得w和b。假设初始值$w_{0}$,$b_{0}$均为0。对误分类点$(x_{i},y_{i})$通过

$w\leftarrow w+ \eta y_{i}x_{i}$

$b \leftarrow b+ \eta y_{i}$

逐步修改w,b,设修改n次,则w,b关于$(x_{i},y_{i})$的增量分别为$\alpha_{i}y_{i}x_{i}$和$\alpha_{i} y_{i}$,这里

$\alpha_{i}=n_{i}\eta$。最后学习到的w,b可以表示为:

$w=\sum_{i=1}^{N}\alpha_{i}y_{i}x_{i}$

$b=\sum_{i=1}^{N}\alpha_{i}y_{i}$

这里,$\alpha_{i}\geqslant 0,i=1,2,...,N$ ,当$\eta=1$时,表示第i个实例点由于误分而更新的次数。实例点更新的次数越多,意味着它距离超平面越近,也就是越难正确分类。

  算法描述:

  输入:训练数据集$T = \left \{  (x_{1},y_{1}),(x_{2},y_{2}),\cdots ,(x_{N},y_{N})  \right \} $

  输出:$\alpha$,b;感知机模型$f(x)=sign(\sum_{j=1}^{N}\alpha_{j}y_{j}x_{j}\cdot x+b)$。其中

  $\alpha=(\alpha_{1},\alpha_{2},...,\alpha_{N})^{T}$。

  (1) $\alpha \leftarrow 0,b \leftarrow 0$

  (2) 在训练集中选取数据$(x_{i},y_{i})$

  (3) 如果$ y_{i}(\sum_{j=1}^{N}\alpha_{j}y_{j}x_{j} \cdot x_{i}+b) \leqslant 0 $

$\alpha_{i} \leftarrow \alpha_{i}+ \eta$

$b \leftarrow b+ \eta y_{i}$

  (4) 转到(2)直到没有误分类数据。

 

  

 

 

posted @ 2018-01-31 17:21  blackx  阅读(1097)  评论(0编辑  收藏  举报