《统计学习方法》-第二章-感知机

本文深入探讨了感知机的概念,它是一种线性分类模型,通过权重和偏置来划分输入空间。感知机的几何解释是特征空间中的超平面,能够将数据分为两类。学习策略围绕寻找最佳超平面展开,通过最小化误分类点的损失函数进行。文章还介绍了感知机学习算法,使用随机梯度下降法进行参数更新,并提供了Python实现感知机算法的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概念

定义

假设输入空间是,输出空间是xy分属这两个空间,由输入空间到输出空间的如下函数:




称为感知机。其中,wb称为感知机模型参数,叫做权值或权值向量,叫做偏置,w·x表示向量wx的内积。Sign是符号函数,即



感知机的几何解释:线性方程



对应特征空间中的一个人超平面S,其中,w法向量,b是截距。超平面将特征空间划分为正、负两个部分。因此,超平面S称为分离超平面


感知机学习策略

数据集的线性可分性



感知机学习策略

为找出这样的超平面,即确定感知机模型参数wb,需要确定一个学习策略,即定义(经验)损失函数并将损失函数极小化。

感知机sign(wx+b)学习的损失函数定义为:


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


感知机学习算法

感知机学习问题转化为求解损失函数式的最优化问题最优化的方法是随机梯度下降法。

原始形式

感知机学习算法是对以下最优化问题的算法。求参数wb,使其极小化的解


算法例子:

Python实现感知机算法代码

import copy # 浅拷贝

training_set = [[(3, 3), 1], [(4, 3), 1], [(1, 1), -1]]
w = [0, 0]
b = 0
history = []

def update(item):
    global w, b, history
    w[0] += 1 * item[1] * item[0][0]
    w[1] += 1 * item[1] * item[0][1]
    b += 1 * item[1]
    print(w, b)
    history.append([copy.copy(w), b])

def cal(item):
    res = 0
    for i in range(len(item[0])):
        res += item[0][i] * w[i]
    res += b
    res *= item[1]
    return res

def check():
    flag = False
    for item in training_set:
        if cal(item) <= 0:
            flag = True
            update(item)
    if not flag:
        print("RESULT: w:" + str(w) + "b:"+str(b))
    return flag

if __name__ == "__main__":
    for i in range(1000):
        if not check():
            break






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值