为什么独热编码会引起维度诅咒以及避免他的几个办法

简介: 为什么独热编码会引起维度诅咒以及避免他的几个办法

特征工程是数据科学模型开发的重要组成部分之一。数据科学家把大部分时间花在数据处理和特征工程上,以便训练一个鲁棒模型。数据集由各种类型的特征组成,包括类别、数字、文本、日期时间等。

由于大多数机器学习模型只理解数值向量,所以各种特征需要被设计成数值格式。有各种编码技术可以将文本数据转换为数字格式,包括词袋、Tf-Idf矢量化等等。分类特征可以编码成数字格式,独热编码就是其中一种方式。

什么是独热编码?

640.png

独热编码,又称虚拟编码,是一种将分类变量转换为数值向量格式的方法。每个类别在数值向量中都有自己的列或特征,并被转换为0和1的数值向量。

为什么独热编码对于有许多类的列是不可行的?

对于一个有许多类别或层次的分类特征,从机器学习的角度来看独热编码不是一个很好的选择,最明显的原因是它加起来有大量的维度。例如,pin码有大量的级别或类别。创建一个单热编码的向量的Pincode列将使所有的值加起来都为零,只有1列除外。这个数字向量包含的信息不多,只有一大堆0。

数据集维数的增加会引起维数诅咒,从而导致并行性和多重共线性问题。

基本有两种类型的分类特征:

  • 有序变量:离散值的有限变量集,值之间按等级排序。例如:学历、工资等。
  • 标称变量:离散值之间没有关系的有限变量集。例如:国家、Pin码等。

有序分类特征在它们的层次之间有一个已知的关系,使用标签编码是最好的选择。而对于标称变量来说,类别之间没有关系。但是有各种已知的技术来编码标称分类变量,例如独热编码就是其中之一。

但是,对多层分类变量的进行独热编码会导致维度诅咒。在本文中,您可以阅读一些技巧/技巧,这些技巧可以用于多层编码分类变量。

限制X个最常见的类别

独热编码具有多个层次的全部标称分类变量增加了许多的维度。这里有个更好的选择是采用最常见的x个类别,并创建一个虚拟编码或一个独热编码。

例如,我们使用世界城市数据库进行演示,从simple maps网站下载。

640.png

数据集中的“国家/地区”列具有224个唯一特征,如果使用独热编码产生224个维度。在下面可以看到,“国家/地区”列的频率分布非常偏斜,很少有类别具有最高频率。

640.png

从频率分布来看,几乎没有类别具有高频,而大多数类别具有非常低的频率。因此,我们可以将“独热编码”限制为仅出现在前x个频繁出现的类别。在此可以对x进行试验并确定。

640.png

ConcludingfromtheabovePDF:
50topoccuringcountriescoversalmost85%ofrows.
100topoccuringcountriescoversalmost95%oftherows.

因此,限制为100个类别可以覆盖95%的行,并将224个国家的一键编码的维度减少到101个国家(其他100个国家/地区排名最高,其他1个国家/地区)。

频率编码

频率编码是Kaggle比赛中大量使用的一种技术或技巧。想法是用其计数或频率替换每个类别。

640.png

可以使用pandas函数生成“国家/地区”列的频率分布:data ['country'].value_counts()

现在用数据中的频率替换每个类别,例如,美国将被7768取代,俄罗斯将被1161取代。这项技术实施起来非常广泛,并且在Kagglers中非常流行。

使用此技术的缺点是,如果某些类别具有相同的计数,则模型将对它们进行类似的处理,因此会丢失一些信息。

目标编码

目标编码也称为平均编码是Kagglers广泛使用的一种流行技术,该技术将分类变量表示为一维数值向量。

每个类别都是将变量替换为该类别的平均目标值。这种技术使我们在目标变量和分类变量之间形成直接关系。

640.png

嵌入

对于文本数据类型或具有字符串值且不特定于领域的类别变量,可以使用预先训练的模型(如Word2Vec)将它们转换为词嵌入。如果数据集具有较长的文本类别,则可以对Word2Vec取加权平均值或使用预先训练过的Sent2Vec。

640.png

因此,使用预训练的嵌入模型,您可以将分类变量的文本类别转换为数值向量。

使用领域知识

最后还可以使用领域知识对分类特征进行编码。可以根据多种因素(例如GDP,人口,人均纯收入等)对“国家/地区”列进行编码。这种编码根据案例研究和要求而有所不同。

同样,您也可以使用领域知识将标称变量转换为序数变量,标签会对其进行编码,以将其转换为数字格式。

总结

具有多个类别的一键编码类别变量会导致编码的维数增加。这引起了维度诅咒,因此产生了并行性和多重共线性的问题。在本文中,我们讨论了几种编码具有多个级别的分类变量的技术,能够部分解决维度诅咒的问题。

目录
相关文章
|
1月前
|
机器学习/深度学习 自然语言处理 算法
汉字的探索性分词方式:基于字图的部首分解与图神经网络的多因素表示
本文提出一种结合传统字符嵌入与部首结构的图表示法,用于捕捉汉字的语义和组成结构,提升大模型对汉字的理解能力。方法包括将字符分解为部首,构建部首图,并利用图卷积网络生成嵌入。此方法增强了模型的泛化能力和灵活性,并提供了代码实现。未来可优化的方向包括改进图构建算法、扩展部首系统、探索更先进的图神经网络架构及多模态融合。
|
3月前
|
SQL 自然语言处理 算法
评估数据集CGoDial问题之计算伪OOD样本的软标签的问题如何解决
评估数据集CGoDial问题之计算伪OOD样本的软标签的问题如何解决
|
6月前
Stata广义矩量法GMM面板向量自回归 VAR模型选择、估计、Granger因果检验分析投资、收入和消费数据
Stata广义矩量法GMM面板向量自回归 VAR模型选择、估计、Granger因果检验分析投资、收入和消费数据
|
6月前
R语言中固定与随机效应Meta分析 - 效率和置信区间覆盖
R语言中固定与随机效应Meta分析 - 效率和置信区间覆盖
|
6月前
R语言估计多元标记的潜过程混合效应模型(lcmm)分析心理测试的认知过程
R语言估计多元标记的潜过程混合效应模型(lcmm)分析心理测试的认知过程
|
6月前
【SPSS】两独立样本的极端反应检验和两配对样本的非参数检验详细操作教程(附案例实战)
【SPSS】两独立样本的极端反应检验和两配对样本的非参数检验详细操作教程(附案例实战)
188 0
|
6月前
|
机器学习/深度学习 编解码 自动驾驶
【论文速递】WACV2022 - 基于小样本分割的多尺度Non-Novel片段消除方法
【论文速递】WACV2022 - 基于小样本分割的多尺度Non-Novel片段消除方法
|
JSON 算法 数据格式
【变化检测】多时相影像变化检测精度评价(附有完整代码)
【变化检测】多时相影像变化检测精度评价(附有完整代码)
|
数据挖掘 索引 Python
Python实现固定效应回归模型实现因果关系推断(二)
Python实现固定效应回归模型实现因果关系推断(二)
916 1
Python实现固定效应回归模型实现因果关系推断(二)
下一篇
无影云桌面