One-Hot 编码是否会增加数据集的维数和稀疏性?

数据挖掘 机器学习 数据挖掘 编码 一热编码
2022-03-02 05:10:11

将对象数据类型转换为数字数据类型有两种方法,第一种是 One-Hot 编码,第二种是将数字标签简单地映射到不同的值。

例如,对于包含三个不同值“child”、“adult”和“old”的 Age 列,该列的 One-Hot 编码为:

年龄 Age_child 年龄_成人 年龄
孩子 1 0 0
成人 0 1 0
老的 0 0 1

而数字标签到不同值的简单映射可能是

年龄 _年龄
孩子 1
成人 2
老的 3

我所理解的 One-Hot 编码可以将列数增加很多倍。例如,考虑 10 列,每列平均有 3 个不同的值,那么生成的日期集将有 30 列。然而,简单的数字映射不会改变数据集的大小(列),只是将数字标签分配给每个不同的值。

那么问题来了,One-Hot 编码是否会增加复杂和大型数据集的维数和稀疏性?在这两种方法中,更适合机器或深度学习分析的方法是什么?两者有什么优缺点吗?

3个回答

使用哪种编码技术取决于您的数据/功能。当您的特征有秩序感时,使用序数编码。例如,您有一个特征性能,它的值是最差的,坏的 在这里你应该使用序数编码器,这将导致最差= 0、= 1 和= 2。我们使用序数编码是因为好比,比所以在这里我们有一种秩序感,良好的优先级更高。然后模型将学习这种秩序感。

OHE 用于不存在顺序感并且我们只想将分类类型转换为数值类型的情况。例如,我们有一个名为color的特征,其值为redbluegreen如果我们使用序数编码,它将分配红色= 0、蓝色= 1 和绿色= 2,这意味着绿色比蓝色和红色重要得多。但这没有任何意义!

因此,在第二种情况下,明智的做法是使用 OHE。

谈到利弊,是的,OHE 增加了数据集的维度,而序数编码不会。但是当特征中没有排序时,OHE 很有用。

所以是的,这取决于功能类型。我建议您在必要时同时使用两者。例如,您有一些没有秩序感的特征和存在秩序的其他特征。使用这两种技术,以保持对特征类型的真实性,同时降低维度!!

你描述的是序数编码如果你的数据有内在的顺序(比如年龄),你绝对可以试试。是的,one-hot 编码确实增加了数据的维度和稀疏性。但这两种并不是处理分类数据的唯一方法。以下是不同编码器的列表,以及使用神经网络比较其中一些技术的论文。

您是对的-根据定义,一种热编码会增加您的尺寸,并且(很可能)还会增加稀疏性。

您的数字映射可能会产生误导,因为例如随机森林会解释adult>child在年龄的情况下是有意义的。但是说映射是{1:"dog",2:"cat",3:"horse"}而不是它的年龄是2>1没有意义的。

何时使用取决于您尝试解决的任务以及您要使用的算法