我正在尝试使用这些数据使用回归制作数据分析报告。由于回归只允许数字类型,因此我需要对分类数据进行编码。但是,其中大多数具有超过 15 个独特的值,例如国家/地区。
我仍然使用 one-hot 编码吗?还是有替代方案?在这个数据集上使用回归是个好主意吗?
我正在尝试使用这些数据使用回归制作数据分析报告。由于回归只允许数字类型,因此我需要对分类数据进行编码。但是,其中大多数具有超过 15 个独特的值,例如国家/地区。
我仍然使用 one-hot 编码吗?还是有替代方案?在这个数据集上使用回归是个好主意吗?
[编辑] 另见卡洛斯的回答,我认为它比我的好。
您应该对分类特征使用一种热编码。用数值替换分类值将是一个坏主意,因为它在值之间引入了顺序,并且模型会尝试根据此顺序查找模式(例如,'x < 4')。
如果确实有太多不同的值,那么删除或替换最不常见的值通常是一个好主意,但这些数据似乎不是问题。
根据记录,超过 15 种不同的值没什么好害怕的。例如,在处理文本数据时,通常会处理一个单词的数千个值。
虽然这里的大多数答案都建议使用各种编码方案,但我想提出一种不同的方法:折叠类别。这个想法是,如果有两个(或更多)相似的类别,您可以将它们合并为一个类别,从而降低特征/变量的维数。此外,如果有一些类别具有预期的低频,您可以将它们折叠为“其他”类别。
对具有高基数的分类数据进行编码有很多不错的选择。如果使用 Python,Category Encoders 包在撰写本文时有十几个选项。我在这里写了使用其中一些的指南。
类别编码器包括几个贝叶斯编码器,包括目标编码器。
二进制和散列编码器有助于降低维度,但可能会使您的模型更难获取数据中的信号。