一文搞懂 One-Hot Encoding(独热编码)

文章目录

前言

1、独热编码的原理

2、独热编码的分类

3、独热编码的应用


前言

本文将从独热编码的原理、独热编码的分类、独热编码的应用三个方面,来展开介绍独热编码 One-Hot Encoding


1、独热编码的原理

特征数字化:将分类变量(或称为离散特征、无序特征)转换为一种适合机器学习算法处理的格式。

特征数字化

为每个分类特征的每个可能值创建一个新的二进制特征(即“独热”特征),其中只有一个特征在任何给定时间被激活(标记为1),而其他所有特征都被标记为0。

  • 步骤1:确定动物类别

        首先,确定需要分类的动物类别。在这个例子中,我们有四种动物:猫、狗、乌龟和鱼。

  • 步骤2:创建二进制特征向量

        为每个动物类别创建一个二进制特征向量。向量的长度等于动物类别的数量,即在这个例子中是4。对于每个动物,只有与其对应的特征位置为1,其余位置为0。

  • 步骤3:对动物进行独热编码

        根据每个动物的类别,将其转换为对应的独热编码表示。在这个例子中,猫的编码是 [1, 0, 0, 0],狗的编码是 [0, 1, 0, 0],乌龟的编码是 [0, 0, 1, 0],鱼的编码是 [0, 0, 0, 1]。

对动物进行独热编码

独热编码(One-Hot Encoding):使用N位状态寄存器对N个状态进行编码,每个状态由其独立的寄存器位表示,并且任意时刻只有一位是有效的(即设置为1)

优点:

  • 解决分类数据处理问题:独热编码将离散分类特征转换为机器学习算法易于处理的二进制格式,提高了算法对离散特征的处理能力。
  • 避免引入数值偏误:通过将每个类别映射到独立的二进制向量,独热编码消除了类别间可能存在的错误数值关系,从而避免了算法基于这些关系做出不准确的预测。

缺点:

  • 维度增加:当类别数量较多时,独热编码会显著增加特征空间的维度,可能导致计算复杂性和过拟合问题。
  • 信息损失风险:独热编码可能无法充分捕捉类别间的潜在关系或顺序信息,从而在某些情况下导致有用信息的丢失。

2、独热编码的分类

基于分类值的独热编码:独热编码是针对具有明确分类值的数据进行预处理的有效方法,通过将每个分类值转换为独立的二进制向量,确保模型正确理解非数值分类特征,避免数值关系的误判。

基于分类值的独热编码

  • 针对具有明确分类值的数据:

       独热编码特别适用于处理那些具有明确、有限且通常不带有数值意义的分类值的数据。例如,在性别这一特征中,我们有“男”和“女”这两个分类值,它们之间没有数值上的大小或顺序关系。同样,在颜色特征中,“红”、“绿”和“蓝”也是纯粹的分类标签,没有隐含的数值含义。

  • 每个唯一分类值转换为二进制向量:

        在独热编码中,每个唯一的分类值都被赋予一个唯一的二进制向量,也被称为“独热”向量,因为在这个向量中,只有一个位置的元素是1(表示该类别的存在),其余所有位置的元素都是0。例如,如果三个颜色类别,那么“红”可能被编码为 [1, 0. 0],“绿”被编码为 [0, 1, 0],“蓝”被编码为 [0, 0, 1]。

  • 避免数值关系误解

        使用独热编码的一个重要原因是,它可以防止机器学习模型错误地解释分类值之间可能存在的数值关系。如果直接使用原始的分类标签(如整数或字符串),某些模型(特别是基于数值计算的模型,如线性回归)可能会尝试在这些标签之间建立数值上的联系。通过转换为独热编码,每个类别都是完全独立的。模型不会受到这种潜在误导的影响。

基于序数的独热编码:对序数型数据应用独热编码可能会丢失重要的顺序信息,因此需要慎重考虑信息损失的风险,并根据模型需求和场景选择更合适的编码策略。

独热编码 VS 标签编码

  • 信息损失:

        独热编码将每个序数类别转换为独立的二进制向量,这导致原始数据中的顺序信息丢失。

        对于依赖类别间顺序关系的模型或分析,这种信息损失可能会影响结果的准确性和解释性。

  • 模型适应性:

        某些机器学习模型(如决策树和随机森林)能够隐式地处理序数关系,即使使用独热编码,也可能表现出良好的性能。

        然而,其他模型(如线性回归或神经网络)可能需要额外的特征工程来捕获丢失的顺序信息。

  • 替代方案:

        在处理序数型数据时,可以考虑其他编码方案,如标签编码(将每个序数映射到一个整数),这样可以保留顺序信息但可能引入不必要的数值关系。

        另一种方法是创建额外的特征来表示类别间的相对关系,如通过比较或计算不同类别之间的距离。

3、独热编码的应用

特征工程与独热编码:特征工程中的独热编码是处理分类特征的重要步骤,但使用时需要权衡其对特征维度、稀疏性、信息表示和模型选择的影响。

特征工程与独热编码

  • 分类特征处理:

        问题:许多机器学习算法无法直接处理分类数据,因为它们需要数值输入。

        独热编码的作用:将分类变量转换为二进制向量,使算法能够处理这些变量。每个分类值都被映射到一个唯一的二进制向量上,其中只有一个元素为1(表示该类别的存在),其余元素为0。

  • 特征扩展:

        影响:独热编码会增加数据集的特征数量。例如,一个有 n 个不同取值的分类特征会被转换成 n 个新的二进制特征。

        考虑因素:特征数量的增加可能会影响模型的复杂性和训练时间。在特征数量大幅增加时,可能需要考虑特征选择或降维技术。

  • 稀疏性引入:

        结果:独热编码通常会产生稀疏特征矩阵,即矩阵中大部分元素都是0。

        影响:稀疏性对于某些算法(如线性模型、树模型)可能是一个优点,因为它们可以有效地处理稀疏输入。但对于其他算法(如神经网络),稀疏输入可能需要特殊的处理或优化。

  • 信息表示:

        优点:独热编码能够明确表示分类特征之间的不同,而不会引入任何数值上的偏序关系。

        限制:独热编码不保留类别之间的任何数值或顺序关系。如果类别之间存在自然顺序(如评级:低、中、高),则独热编码可能会丢失这种信息。

  • 模型适用性:

        选择理由:选择独热编码是因为许多机器学习算法(如逻辑回归、支持向量机、决策树)在处理数值型输入时表现更好。

        注意事项:并非所有算法都需要或受益于独热编码。例如,一些基于树的算法(如随机森林)可以直接处理分类特征,而无需进行独热编码。

数据预处理与独热编码:独热编码是数据预处理中常用的一种技术,主要用于处理分类数据。

数据预处理与独热编码

  • 分类数据处理:

        在数据集中,经常遇到包含分类(或称为名义)特征的情况,这些特征的值是非数值的,如性别(男、女),颜色(红、绿、蓝)等。

        独热编码是将这些分类特征转换为机器学习模型能够理解的数值格式的一种有效方法。

  • 避免引入偏序关系:

        如果直接将分类特征的标签(如1,2,3)用作数值输入,模型可能会错误地解释这些标签之间存在数值上的关系(如认为2是1的两倍,或3大于2)。

        独热编码通过为每个类别分配一个独立的二进制向量来消除这种偏序关系,确保模型不会基于错误的数值假设做出预测。

  • 与其他预处理技术的结合:

        独热编码通常与其他数据预处理技术一起使用,如缺失值处理、特征缩放和特征选择。

        在应用独热编码之前,可能需要先处理缺失值,因为独热编码通常不适用于包含缺失值的分类特征。此外,在应用独热编码后,可能还需要进行特征选择以减少维度和冗余。

参考: 架构师带你玩转AI

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/4491.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对MAE的解析

一、背景 Masked Autoencoders(掩膜自编码器)在NLP领域大放异彩,它是去噪自编码器[1]的一种具体实现方式,然而其在视觉领域的研究进展却有所滞后。作者指出了视觉和NLP两个领域中掩膜自编码器的差异: 架构差异&#xf…

【智能算法】成吉思汗鲨鱼优化算法(GKSO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2023年,G Hu等人受到成吉思汗鲨鱼(GKS)捕食和生存行为启发,提出了成吉思汗鲨鱼优化算法(Genghis Khan Shark Optimizer, GKSO)…

Vue开发者工具Vue.js devtools Vue开发者工具安装步骤前端开发工具免费附带教程

下载地址: 链接: https://pan.baidu.com/s/1JaGvhS4NoD8lL07n2ScE9A 密码: 9rfs 安装步骤: 以谷歌浏览器为例 第一步:打开Chrome的拓展程序 如图 第二步: 将下载好的拓展程序拖入即可,如下图 第三步:…

现代永磁同步电机控制原理pdf及全套matlab仿真模型

现代永磁同步电机控制原理pdf及matlab仿真模型。全书包含SVPWM, DTC, Lun, smo, EKF, HFI等经典控制算法。将书中10章节涉及到的模型复原搭建模型。 模型获取链接:现代永磁同步电机控制原理pdf及全套matlab仿真模型

TCP-模拟BS架构通信

简介 bs是通过浏览器进行访问的每次访问都会开启一个短期的socket用来访问服务器的资源 响应报文的格式 服务端 bs架构中的b是浏览器,不需要我们书写,我们只需要书写服务端即可 服务端 public class Server {public static void main(String[] args) {S…

【Docker】docker部署lnmp和wordpress网站

环境准备 docker:192.168.67.30 虚拟机:4核4G systemctl stop firewalld systemctl disable firewalld setenforce 0 安装docker #安装依赖包 yum -y install yum-utils device-mapper-persistent-data lvm2 #设置阿里云镜像 yum-config-manager --add…

C++各种排序算法详解及示例源码

1、排序算法 排序算法(sorting algorithm)用于对一组数据按照特定顺序进行排列。排序算法有着广泛的应用,因为有序数据通常能够被更高效地查找、分析和处理。 1.1 评价维度 运行效率:我们期望排序算法的时间复杂度尽量低&#xf…

力扣数据库题库学习(4.25日)

1484. 按日期分组销售产品 问题链接 思路与分析 编写解决方案找出每个日期、销售的不同产品的数量及其名称。 每个日期的销售产品名称应按词典序排列。 返回按 sell_date 排序的结果表。我来分析一下,这里的题目要求其实就是统计不同日期下的销售产品数&#xf…

Matlab 使用subplot绘制多个子图,一元拟合

实现效果: clc; clear;filename sri.xlsx; % 确认文件路径data readtable(filename); datavalue data{:,2:end}; datavalue datavalue;fig figure(Position, [0, 0, 1500, 900]); indexString ["(a)","(b)","(c)","(d)&qu…

<计算机网络自顶向下> Internet Protocol(未完成)

互联网中的网络层 IP数据报格式 ver: 四个比特的版本号(IPV4 0100, IPV6 0110) headlen:head的长度(头部长度字段(IHL)指定了头部的长度,以32位字(4字节)为单位计算。这…

可替换XC6206P332MR的润石超低功耗LDO RS3221-3.3YF3助力智能门锁设计,精度低至1%

润石科技的RS3221,可满足超低功耗,在智能门锁设计时,兼容替换TOREX的XC6206P332MR,具体请参考图1参数对比: 图1:RS3221-3.3YF3与XC6206P332MR电性能参数对比 通过上表可知, 1、 RS3221-3.3YF3…

家政服务小程序:家政行业的数字化转型

随着大众生活水平的提高,以及老龄化的加速,家政服务已经成为了大众生活中不可或缺的一部分。目前,我国家政服务市场的规模在持续扩大,发展前景一片大好。在日益提升的家政需求下,大众对家政服务的种类也逐渐多样。 为…

【ARMv9 DSU-120 系列 4.1 -- Utility bus 详细介绍 2】

请阅读【Arm DynamIQ™ Shared Unit-120 专栏 】 文章目录 ARM DSU-120DSU-120 Utiity BusCluster and core PPUPPU寄存器的访问性PPU寄存器的作用系统组件基地址ARM DSU-120 DSU-120 Utiity Bus 在ARMv9架构中,DSU-120(Dynamic Shared Unit 120)是一个关键组件,用于管理核…

炒股自动化:券商官方,散户可用,查询订单状态API如何用?

券商官方的接口,个人账户可申请,入金门槛低,接入文档完善,技术支持好的,经过我们筛选后,只有一家符合 会编程,有基础,只是需要API接口的朋友不用看这些,不会写程序的朋友…

stm32智能小车前进,后退,左转,右转,停止

本文代码使用 HAL 库。 文章目录 前言一、电机模块介绍二、原理图分析三、电机驱动小车运动原理1. **小车前进,后退,停止**2,小车左转,右转3,左自旋,右自旋 四,cubeMX 配置五,代码模…

基础款:Dockerfile 文件

# bash复制代码# 使用 Node.js 16 作为基础镜像 # 指定一个已经存在的镜像作为模版,第一条必须是from FROM node:16# 将当前工作目录设置为/app # WORKDIR /app# 方法一:用dockerfile命令:进行下载打包文件 # 将 package.json 和 package-loc…

机器人系统开发ros2-基础实践02-自定义一个机器人动作aciton服务端和客户端(c++ 实现)

aciton 是 ROS 中异步通信的一种形式。 操作客户端向操作服务器发送目标请求。 动作服务器将目标反馈和结果发送给动作客户端。 先决条件: 将需要上一个 教程创建操作action_tutorials_interfaces中定义的包和接口。Fibonacci.action 步骤1: 1.1 创建…

MySQL recursive 递归

MySQL 从最内的select开始执行,但是同一个select clause可以在查询的结果上继续查询。 SELECT menu_id,parent_id,(SELECT m1.parent_id FROM sys_menu AS m1 WHERE m1.menu_idm.parent_id) FROM sys_menu AS m WHERE m.menu_id 89 方案1.通过recursive递归 使用…

吴恩达2022机器学习专项课程(一) 6.2 逻辑回归第三周课后实验:Lab2逻辑回归

问题预览/关键词 逻辑回归预测分类创建逻辑回归算法Sigmoid函数Sigmoid函数的表示sigmoid输出的结果Numpy计算指数的方法实验python实现sigmoid函数打印输入的z值和sigmoid计算的值可视化z值和sigmoid的值添加更多数据,使用逻辑回归可以正常预测分类![在这里插入图片…

ESP32-S3如何用socket通信

实验目的: 通过 Socket 编程实现 pyWiFi-ESP32-S3 与电脑服务器助手建立连接,相互收 发数据。 首先先来简单了解一下Socket 我们先来看看网络层级模型图,这是构成网络通信的基础: 我们看看 TCP/IP 模型的传输层和应用层&…