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

     

      

     

     

  • 相关阅读:
    leetcode 131. Palindrome Partitioning
    leetcode 526. Beautiful Arrangement
    poj 1852 Ants
    leetcode 1219. Path with Maximum Gold
    leetcode 66. Plus One
    leetcode 43. Multiply Strings
    pytorch中torch.narrow()函数
    pytorch中的torch.repeat()函数与numpy.tile()
    leetcode 1051. Height Checker
    leetcode 561. Array Partition I
  • 原文地址:https://www.cnblogs.com/hypnus-ly/p/8392980.html
Copyright © 2011-2022 走看看