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

用大白话解释一下“高基数特征”

想象一下你有一个特征(表格中的一列),用来记录“学生所在的班级”。

  1. 情况一:低基数特征

    • 假设这个学校只有 3个班级:一班、二班、三班。

    • 当你用独热编码处理“班级”这个特征时,你会创建 3个新列是否一班是否二班是否三班

    • 对于每个学生,只在他所在的班级对应的列上标“是”(1),其他标“否”(0)。

    • 结果: 增加了3列,这是可以接受的,管理起来也容易。

  2. 情况二:高基数特征

    • 现在,假设这个特征不是“班级”,而是“学生姓名”。

    • 这个学校有 5000个学生,每个学生都有自己独特的名字(或者说,这个特征有5000个不同的取值)。

    • 如果你用独热编码处理“学生姓名”这个特征,会发生什么?

    • 你会为 每一个学生 创建一个新列!比如:是否张三是否李四是否王五…… 一直到第5000个学生。

    • 最终,你的数据表会 多出5000列

    • 对于每个学生,只有他自己名字对应的那一列是“1”(是),其他4999列全是“0”(否)。

    • 结果:

      • 表格变得巨大无比: 原来可能只有10列数据,现在一下子变成5010列(10列原始数据 + 5000列新编码列)。这就像一个小本子瞬间变成了几百页厚的大部头。

      • 数据极其稀疏: 这5000列新数据里,99.98%的位置都是“0”。想象一张巨大的表格,里面几乎全是空的(0),只有极少数地方是“1”。这非常浪费存储空间和计算资源。

      • 模型训练困难: 机器学习模型看到这么多列(高维度),会非常“晕”,学习效率大大降低,训练速度变得很慢,而且更容易学到一些没有实际意义的噪音(过拟合),导致模型效果变差。就像让你从一本5000页、每页只有一行字不同的书里找规律,太难了。

      • 信息可能不足: 如果每个名字(类别)在数据集中只出现一两次(这在姓名、ID等特征中很常见),模型就无法从这个名字本身学到任何有用的、可推广的模式。它只知道“这个人叫张三”,但不知道叫张三的人有什么共同点。

总结一下,“高基数特征”就是:

  • 指代: 一个分类特征(Categorical Feature)。

  • 核心问题: 这个特征里包含的不同类别(唯一值)的数量非常非常大

  • 多“大”算“高”? 没有绝对标准,但通常认为 几十个、上百个甚至成千上万个 唯一类别,就算是高基数了。常见的例子包括:

    • 姓名、用户ID、产品ID、订单ID、设备ID:每个都是独一无二的。

    • 邮政编码、详细地址、电话号码:种类非常多。

    • 某些自由填写的文本字段(如“职业”、“爱好”),如果没有经过规范化,也可能产生大量独特值。

  • 关键影响: 当你想用 独热编码 (One-Hot Encoding) 来处理这种特征时,会产生爆炸性的维度增长(新列数 = 唯一类别数),导致数据稀疏、计算困难、模型性能下降等问题。

为什么叫“基数”?

  • 在数学集合论中,“基数”(Cardinality) 指的是一个集合中元素的数量

  • 所以,“高基数特征” 就是指这个特征取值的集合中,元素(不同类别)的数量非常巨大

简单记忆:

  • 低基数: 类别少(比如性别:男/女;颜色:红/绿/蓝)。独热编码好用。

  • 高基数: 类别超多(比如姓名、ID、邮编)。独热编码会制造麻烦,需要寻找替代方案(如目标编码、特征哈希、嵌入等)。

http://www.xdnf.cn/news/13059.html

相关文章:

  • java+webstock
  • 什么是API调用?通俗解释+实际应用场景详解
  • 【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!
  • PAN/FPN
  • Flotherm许可的并发用户数限制
  • 【案例解析】一次 TIME_WAIT 导致 TPS 断崖式下降的排查与优化
  • ThreadLocal 源码
  • RabbitMq安装
  • deepseek: GPU 配套
  • 联邦学习同态加密以及常见问题
  • Vue动态/异步组件
  • 1991-2024年上市公司个股换手率数据
  • Haption 力反馈遥操作机器人:6 自由度 + 低延迟响应,解锁精准远程操控体验
  • 设置Outlook关闭时最小化
  • mybatisX的使用,简化springboot的开发,不用再写entity、mapper以及service了!
  • JDK 17 序列化是怎么回事
  • Prompt‏ 工程和优化技巧
  • 产品经理课程(十三)
  • SE(Secure Element)加密芯片与MCU协同工作的典型流程
  • 在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
  • Origin图像数字化工具——如何复制其他人的图表作为对比数据
  • Linux 下部署安装docker
  • 京东商品sku抓取攻略|已封装API接口调用示例
  • SpringBoot配置
  • 【如何做好技术架构】
  • 大模型真的像人一样“思考”和“理解”吗?​
  • Python编程基础(五) | 字典
  • 深度伪造视频时代的“火眼金睛”:用Python打造假视频识别神器
  • 循环语句之for
  • Latex vscode安装、配置与使用-Windows