将分类特征编码为机器学习的数字

机器算法验证 机器学习 多类
2022-02-17 06:01:58

许多机器学习算法,例如神经网络,都希望处理数字。因此,当您拥有分类数据时,您需要对其进行转换。我的意思是分类,例如:

汽车品牌:奥迪、宝马、雪佛兰... 用户 ID:1、25、26、28...

尽管用户 ID 是数字,但它们只是标签,并不意味着任何连续性,例如年龄或金额。

因此,基本方法似乎使用二进制向量来编码类别:

奥迪:1、0、0……宝马:0、1、0……雪佛兰:0、0、1……

类别很少的时候还可以,但除此之外它看起来有点低效。例如,当您有 10 000 个用户 ID 进行编码时,它就是 10 000 个特征。

问题是,有没有更好的方法?也许一个涉及概率?

2个回答

您始终可以将您的用户 ID 视为词袋:当数据稀疏时,大多数文本分类器可以处理数十万个维度(您不需要显式存储在内存中的许多零,例如,如果您使用Compressed Sparse Rows表示您的数据矩阵)。

然而问题是:将用户ID视为特征是否有意义?非规范化您的关系数据并使用用户特征(年龄、位置、在线昵称的字符、交易历史......)而不是他们的 ID 不是更有意义吗?

您还可以对原始用户向量进行聚类,并使用前 N 个最近的中心 id 作为激活特征,而不是用户 id。

等边编码可能是您在尝试将类编码到神经网络时所寻找的。它往往比其他帖子中引用的“n 中的 1”编码更好。作为参考,我建议:http ://www.heatonresearch.com/wiki/Equilateral