感知器算法

参考书籍:《统计学习方法.李航》

  1. 感知器模型

    f(x) = sign( w*x + b )

    其中x为实例的特征向量(输入),y表示实例的类别(输出),w叫作权值,b叫作偏置,sign为符号函数。

    几何解释:w*x+b=0对应特征空间中的一个超平面S,其中w为法向量,b为斜距,这个超平面将特征空间划分为正、负两类。感知器学习就是由训练数据集求得感知器模型的模型参数w和b;感知器预测就是通过学习得到的感知器模型,对于新的输入实例给出其对应的输出类别。

    数据集的线性可分性:给定一个数据集,如果存在某个超平面S(w*x+b=0)能够将数据集的正实例点和负实例点正确划分到超平面的两侧,则称数据集是线性可分数据集,否则为线性不可分。(如在二维空间中可以用一条直线将两类分开,三维空间中可以用一个平面将两个类别分开)

  2. 感知器学习策略

    即定义一个损失函数并将损失函数极小化

    损失函数:误分类点到超平面的总距离。

    任意一点x0到超平面S的距离:这里写图片描述
    根据推导得到损失函数为:
    这里写图片描述
    (忏悔Ing…我应当学下如何在csdn博客中插入漂亮的公式)

  3. 感知器学习算法

    即求解损失函数式的最优化问题,方法选择的是随机梯度下降法。这意味着极小化过程中不是一次使M中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。

    训练过程:
    (1)选取初值w0,b0;
    (2)在训练集中选取数据(xi,yi);
    (3)如果错误分类,即yi(w*xi+b)<0,则:w<-w+nyixi, b<-b+nyi,其中n(0~1)为学习率。

    感知器学习算法在采用不同的初值或者选取不同的误分类点时,得到的解可以不同。

  4. 感知器算法的收敛性

    当训练集线性可分时, 经过证明,误分类的次数K是有上界的,经过有限次搜索可以找到将训练数据完全正确分开的分离超平面。当训练集线性不可分时,感知器学习算法不收敛,迭代结果会发生震荡。
    针对多解情况:对分离超平面增加约束条件(如线性支持向量机)

  5. 感知器python实现
    做了一下书上给的例题:

# -*- coding: utf8 -*-

w = []#权向量
b = 0 #偏置
n = 1 #学习率
lens = 0 #训练集合中数据长度


def judge(data):
    global w,b,n,lens
    ans = 0
    for index in range(lens-1):
        ans += w[index]*data[index]
    ans += b
    ans *= data[l
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值