当前位置: 首页 > article >正文

机器学习 - 投票感知器

一、传统(经典)感知器的缺点

1、缺点

根据上一篇博文,如果训练数据是线性可分的,那么感知器可以找到一个判别函数来分割不同类的数据。如果间隔 𝛾 越大,收敛越快。但是感知器并不能保证找到的判别函数是最优的(比如泛化能力高),这样可能导致过拟合。

2、具体描述

感知器学习到的权重向量和训练样本的顺序相关。

在迭代次序上排在后面的错误样本比前面的错误样本,对最终的权重向量影响更大。

比如有1000 个训练样本,在迭代 100 个样本后,感知器已经学习到一个很好的权重向量。在接下 来的 899 个样本上都预测正确,也没有更新权重向量.但是,在最后第 1 000 个样 本时预测错误,并更新了权重。这次更新可能反而使得权重向量变差。

3、总结

传统感知器的目标是找到一个单一的线性超平面(通过权重 w)来分离数据,但在以下场景中表现受限:

  1. 权重震荡(Oscillation)
    当数据接近线性可分时,感知器可能在多次迭代中反复调整权重,导致分类边界不稳定。

  2. 泛化能力弱
    最终模型仅依赖最后一次迭代的权重,可能忽略训练过程中更优的中间结果。

为了提高感知器的鲁棒性和泛化能力,我们来了解改进的感知器算法。

二、投票感知器

投票感知器(Voted Perceptron)是对经典感知器算法的一种改进,它通过记录在训练过程中出现过的所有权重向量及其“持续时间”,并在最终预测时对这些权重向量进行投票,从而提高模型的泛化性能。

投票感知器是传统感知器算法的改进版本,由Yoav Freund和Robert Schapire于1998年提出。其核心思想是通过集成多个中间分类器的投票结果,提升模型的泛化能力和稳定性。

1、核心思想

  • 记录多个权重向量

    在标准感知器算法中,每当遇到误分类时,模型就更新参数 w 和 b,最后仅使用最终的参数进行预测。而投票感知器在训练过程中会保存每个“阶段”的权重向量,以及该权重向量连续正确分类的次数。

  • 加权投票机制

    对于新样本的预测,投票感知器不会仅依赖最后的权重向量,而是对所有保存下来的权重向量进行投票。每个权重向量的投票权重等于它在训练过程中连续正确分类样本的次数。最终的分类结果由所有权重向量的“加权投票”决定。

2、工作流程

(1)训练阶段

  • 初始化:设置初始权重 w_0​ 和偏置 b_0​,同时初始化计数 c_0=1。
  • 遍历数据:对每个训练样本 (x,y),计算预测 
  • 判断正确性
  • 从分类器角度来说:

(2)预测阶段

为什么使用投票机制

  • 平滑更新:单个权重向量可能受到数据顺序或局部噪声的影响,投票机制可以减少这种偶然性,得到更稳定的决策边界。
  • 综合信息:通过累计整个训练过程中的多个权重向量,投票感知器更充分地利用了训练过程中的信息,往往比最终单一的权重向量有更好的泛化能力。

从引入分类器的角度来讲(与上面的意思是一样的):

三、投票感知器与传统感知器的对比

维度传统感知器投票感知器
模型复杂度单一权重向量多个权重向量 + 投票权重
泛化能力可能过拟合或欠拟合通过集成降低方差,提升稳定性
存储成本低(仅需存储最终权重)高(需存储所有中间分类器及权重)
适用场景数据严格线性可分且分布简单数据接近线性可分或存在噪声

四、示例

1、一个简单的二分类问题

训练数据集如下(标签取值 ±1):

样本xy
1[1,0]+1
2[0,1]+1
3[1,1]−1
4[2,2]−1
  • 训练过程中,假设算法开始时 w_0 = [0,0]、b_0 = 0,计数 c_0 = 1。
  • 当遍历到样本3(真实 y=−1),可能发现当前权重将其错误地分类为正类,于是更新权重。每次更新后,都记录下当前的权重向量及其持续正确分类的次数。
  • 最终假设算法共产生了几个权重向量:
    • w_1, b_1(计数 c_1​),
    • w_2, b_2(计数 c_2​),
  • 预测时,对于一个新样本 x,每个保存下来的权重向量都会给出一个预测(sgn(w_i^T x + b_i)),然后按各自的计数加权投票,最终综合出预测结果。

2、场景:根据花瓣长度和宽度分类鸢尾花(Setosa vs Non-Setosa)

五、投票感知器的优势与局限性

  1. 优势

    • 抗噪声能力:通过加权投票减少异常样本的干扰。

    • 理论保障:Freund和Schapire证明其错误率上界优于传统感知器。

    • 灵活扩展:可结合核方法(Kernel Voted Perceptron)处理非线性问题。

  2. 局限性

    • 存储开销大:需保存大量中间分类器,不适合超大规模数据。

    • 计算成本高:预测时需遍历所有分类器,实时性受限。


http://www.kler.cn/a/557207.html

相关文章:

  • VUE四:Vue-cli
  • Android 中 如何监控 某个磁盘有哪些进程或线程在持续的读写
  • 【WebGL】fbo双pass案例
  • SpringAI系列 - ToolCalling篇(二) - 如何设置应用侧工具参数ToolContext(有坑)
  • hot100-滑动窗口
  • ctfshow——phps源码泄露
  • Tio-Boot 集成 Spring Boot 实现即时通讯功能全解析
  • 深度学习图像预处理可视化:拆解Compose操作的全过程
  • Java集合框架(知识整理)
  • ipad连接电脑断断续续,不断弹窗的解决办法
  • CNewMenu::QueryContextMenu函数分析之新建菜单项的创建
  • 企业内容中台搭建实战手册
  • 如何成为一名合格的单片机工程师----引言介绍篇(1)
  • C++面试题,进程和线程方面(1)
  • 【Git】五、多人协作
  • 041集——封装之:新建图层(CAD—C#二次开发入门)
  • 新学一个JavaScript 的 classList API
  • win11系统无法打开软件_组策略无法打开_gpedit.msc不生效_为了对电脑进行保护,已经阻止此应用---Windows工作笔记057
  • C++ 项目:Unsplash 爬虫与瀑布流实战
  • Perplexity AI:通过OpenAI与DeepSeek彻底革新搜索和商业策略