zoukankan      html  css  js  c++  java
  • 机器学习算法一:感知器学习

    问题描述:

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

    $ left{egin{matrix} wcdot x+b>0,y=+1\  wcdot x+b<0,y=-1 end{matrix} ight. $

    学习策略:

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

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

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

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

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

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

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

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

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

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

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

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

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

      $wleftarrow 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})  ight } $

      输出: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})$通过

    $wleftarrow 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})  ight } $

      输出:$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)直到没有误分类数据。

     

      

     

     

  • 相关阅读:
    Problem C: 时间类的常量
    Problem B: 时间类的错误数据处理
    Problem A: 时间类的拷贝和整体读写
    Problem B: 平面上的点——Point类 (IV)
    Problem C: 平面上的点——Point类 (V)
    Problem A: 平面上的点——Point类 (III)
    中间的数(若已经排好序)
    软件工程概论团队结组
    软件工程个人作业04 子数组循环数组
    软件工程个人作业03
  • 原文地址:https://www.cnblogs.com/hypnus-ly/p/8392980.html
Copyright © 2011-2022 走看看