zoukankan      html  css  js  c++  java
  • 感知器算法初探

    今天学了感知器算法:Perceptron Learning Algorithm (PLA)

    觉得自己应该回去重新学学线性代数QAQ

    依旧是自己的理解为主……

    感知器算法是一种线性分类器,对于一个样本,它具有x={x1, x2, ..., xn}这些特征,每个特征具有一个权值w={w1, w2, ..., wn},所以这个样本的特征向量为X=∑xi*wi。分类集为y={y1, y2, ..., yn},所以设分类函数为y=f(X),感知器的目的是求一个函数g≈f。

    假设现在有一系列样本,样本共两个权值,所以可以在二维平面上表示这些样本:

    设红色样本的y=-1,蓝色样本y=1,黄线为函数g。

    感知器算法的流程如下:

    设函数g=wt*x,t表示次数,t初始为0。

    遍历样本,如果找到错误的点,即sign(g(xn))=sign(Xn*wt)!=yn,则要去修正wt,使wt+1=wt+yn*Xn,直到没有错误的点出现。

    这样的算法一定会终止吗?

    需要样本线性可分,即存在一条目标线使得所有sign(Xn*wf)=yn

    如果样本不是线性可分的,可以用贪心求近似最优解,即用一个变量w来保存错误率最低的线,每次找到错误的时候,如果修正完的线错误率更低,则更新w,直到算法运行足够多次。

  • 相关阅读:
    使用阿里云ECS安装HDFS的小问题
    退役回忆录嘤嘤嘤
    2018 ICPC北京 H ac自动机
    Educational Codeforces Round 54 (Rated for Div. 2) DE
    sa learning
    网络流learning
    Python模块logging
    Python模块unittest
    Linux /dev/shm
    Shell 字符串操作
  • 原文地址:https://www.cnblogs.com/Apro/p/5200631.html
Copyright © 2011-2022 走看看