机器学习 - 投票感知器

news/2025/2/23 6:28:32

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

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.niftyadmin.cn/n/5863119.html

相关文章

进程间通信中间件---ZeroMQ

ZeroMQ(也称为 MQ 或 0MQ)是一个高性能的异步消息传递库,专为分布式或并发应用程序设计。它提供了多种通信模式(如请求-响应、发布-订阅等),并且可以在多种传输协议(如 TCP、IPC、PGM 等&#x…

体育数据网站推荐系统开发:赛事数据、前瞻分析与智能推荐

体育数据网站作为集赛事数据、前瞻分析、专家解读于一体的综合平台,其推荐系统的开发需要充分考虑多维度数据的整合与应用。本文将深入探讨如何构建一个智能化的体育数据推荐系统。 一、系统架构设计 数据采集层: 实时赛事数据API接入 专家分析内容抓…

怎麼利用靜態ISP住宅代理在指紋流覽器中管理社媒帳號?

靜態ISP住宅代理是一種基於真實住宅IP的代理服務。這類代理IP通常由互聯網服務提供商(ISP)分配,具有非常高的真實性,與普通數據中心代理相比,更不容易被平臺檢測到為“虛假IP”或“代理IP”,靜態ISP住宅代理…

【愚公系列】《鸿蒙原生应用开发从零基础到多实战》002-TypeScript 类型系统详解

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主&…

LeetCode51

LeetCode51 目录 题目描述示例思路分析代码段代码逐行讲解复杂度分析总结的知识点整合总结 题目描述 N 皇后问题:将 n 个皇后放置在 n x n 的棋盘上,使得皇后彼此之间不能相互攻击(即任何两个皇后不能在同一行、同一列或同一斜线上&#x…

Docker教程(喂饭级!)

如果你有跨平台开发的需求,或者对每次在新机器上部署项目感到头疼,那么 Docker 是你的理想选择!Docker 通过容器化技术将应用程序与其运行环境隔离,实现快速部署和跨平台支持,极大地简化了开发和部署流程。本文详细介绍…

线代[8]|北大丘维声教授《怎样学习线性代数?》(红色字体为博主注释)

文章目录 说明一、线性代数的内容简介二、学习线性代数的用处三、线性代数的特点四、学习线性代数的方法五、更新时间记录 说明 文章中红色字体为博主敲录完丘教授这篇文章后所加,刷到这篇文章的读者在首次阅读应当跳过红色字体,先通读一读文章全文&…

深度学习之特征提取

前言 深度学习就是把输入转换成一个高维的向量,之后利用这个向量去完成分类、回归等任务。 深度学习特征工程知识图谱 1. 特征提取的本质 核心目标:将原始数据→高维语义特征向量 监督驱动:标签决定特征提取方向 典型架构: …