zoukankan      html  css  js  c++  java
  • 【分类算法】感知机(Perceptron)

    0 - 算法描述

      感知机算法是一类二分类算法,其问题描述为,给定一个训练数据集

    $$T={(x_1,y_1),(x_2,y_2),cdots,(x_N,y_N)},$$

    其中$x_iin mathbb{R}^n,y_iin{-1,1},i=1,2,cdots,N$,求参数$w,b$,使得以下损失函数极小化问题的解

    $$min_{w,b}L(w,b)=min -sum_{x_iin M}y_i(wcdot x_i+b),$$

    其中$M$为误分类点的集合。

      下一节给出损失函数的推导过程。

    1 - 推导过程

      感知机算法求解的数据集必须具有线性可分性,其定义为,对于数据集

    $$T={(x_1,y_1),(x_2,y_2),cdots,(x_N,y_N)},$$

    其中$x_iin mathbb{R}^n,y_iin{-1,1},i=1,2,cdots,N$,如果存在某个超平面$S$

    $$wcdot x + b = 0,$$

    能够将数据集的正类和负类完全正确地划分到超平面的两侧,即对所有$y_i=+1$的样本$i$,有$wcdot x_i+b>0$,对所有$y_i=-1$的样本$i$,有$wcdot x_i + b < 0$,则称数据集$T$为线性可分数据集(linearly separable dataset)。

      感知机算法即是求解线性可分数据集中的超平面$S$的算法。由于超平面是由$w$和$b$确定的,因此学习超平面的目标即是确定参数$w$和$b$,按照梯度下降法优化要求,需要定义一个关于参数$w$和$b$的损失函数进行优化。

      注意到,损失函数被期望是连续可导的,因此不能直接选取误分类点个数作为损失函数,在感知机中,选取误分类点到超平面$S$的总距离作为损失函数。对于输入空间$mathbb{R}^n$中任意一点$x_i$到超平面$S$的距离为

    $$frac{1}{left |  w ight |_2}left | w cdot x_i + b ight |,$$

    其次,对于误分类点来说,满足

    $$-y_i(w_icdot x_i+b)>0,$$

    因此可以把距离公式的绝对值替换得到

    $$-frac{1}{left |  w ight |_2}y_ileft ( w cdot x_i + b ight ),$$

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

    $$-frac{1}{left |  w ight |_2}sum_{x_iin M}y_ileft ( w cdot x_i + b ight ),$$

    不考虑$frac{1}{left |  w ight |_2}$,则感知机$sign(wcdot x+b)$的损失函数定义为

    $$L(w,b)=-sum_{x_iin M}y_i(wcdot x_i+b).$$

    2 - 参考资料

    《统计学习方法》,李航

  • 相关阅读:
    解决Xcode 7编译错误:does not contain bitcode
    iOS无处不在详解iOS集成第三方登录(SSO授权登录无需密码)
    iOS- 如何集成支付宝
    99.Recover Binary Search Tree
    101.Symmetric Tree
    108.Convert Sorted Array to Binary Search Tree
    242.Valid Anagram
    292.Nim Game
    872.Leaf-Similar Trees
    HDU-1390 Binary Numbers
  • 原文地址:https://www.cnblogs.com/CZiFan/p/11759364.html
Copyright © 2011-2022 走看看