机器学习 - 投票感知器

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

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):

样本 x y
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)

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

优势

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

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

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

局限性

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

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

相关推荐
HELLO程序员3 小时前
Claude Code 2.1 发布:2026 年 AI 智能体开发的范式革命
人工智能
xhbaitxl3 小时前
算法学习day39-动态规划
学习·算法·动态规划
I_LPL3 小时前
day23 代码随想录算法训练营 回溯专题2
算法·hot100·回溯算法·求职面试
智者知已应修善业3 小时前
【洛谷P9975奶牛被病毒传染最少数量推导,导出多样例】2025-2-26
c语言·c++·经验分享·笔记·算法·推荐算法
DFCED3 小时前
OpenClaw部署实战:5分钟搭建你的专属AI数字员工(附避坑指南)
人工智能·大模型·agent·openclaw
Java新手村3 小时前
基于 Vue 3 + Spring Boot 3 的 AI 面试辅助系统:实时语音识别 + 大模型智能回答
vue.js·人工智能·spring boot
Junlan273 小时前
Cursor使用入门及连接服务器方法(更新中)
服务器·人工智能·笔记
robot_learner3 小时前
OpenClaw, 突然走红的智能体
人工智能
ujainu小3 小时前
CANN仓库内容深度解读:昇腾AI生态的基石与AIGC发展的引擎
人工智能·aigc
m0_736919103 小时前
C++中的委托构造函数
开发语言·c++·算法