将分类特征编码为数字以进行机器学习


14

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

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

即使用户ID是数字,它们也只是标签,并不意味着在连续性方面(例如年龄或总金额)。

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

奥迪:1,0,0 ...宝马:0,1,0 ...雪佛兰:0,0,1 ...

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

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


3
为什么要在预测模型中包括用户ID?至于基数大于您所描述的虚拟变量编码时所希望的其他类别变量,我首先在决策树中将它们作为唯一的预测变量运行-以折叠级别。还可以通过分组“罕见”的水平等重宾
B_Miner

这听起来很有趣-就像统计模型中的随机效应一样,您对特定个体所特有的效应感兴趣。我可以想象一下有用的情况,例如,如果您一次又一次地看到同​​一个人,并希望预测该特定个人会做什么。如果可以,请分享更多有关您的计划的信息。此外,您可能会研究多层次建模,尽管传统上它是在推理环境中而不是在机器学习中使用的。
Anne Z. 2012年

我记得曾经读过一次ML竞赛,当时有一些聪明的研究人员检测到在创建用户帐户时已经提供了数据中的用户ID。因此,揭示了已经混淆的时间戳(积极影响响应的预测)。除了这种情况以及Anne(推荐系统)提到的情况之外,我不会包括userID。
steffen 2012年

安妮-随机效应模型实际上对个人不感兴趣-因此,他们被认为是总体样本吗?
B_Miner 2012年

我不明白,如果学习问题是要预测富裕/不富裕的二元类别,为什么为特定用户的汽车品牌提供功能就没有意义了。如果知道个人的社交网络,则可以使用用户ID:例如,证明用户X的朋友更容易成为有钱人。这种思路有什么问题吗?
Vladtn

Answers:


6

您始终可以将用户ID视为一堆单词:大多数稀疏文本分类器可以在数据稀疏时处理成千上万个维度(许多零不需要显式存储在内存中,例如,如果您使用压缩稀疏行数据矩阵的表示形式)。

但是问题是:将用户ID视为特征是否对您有特定的问题有意义?规范化您的关系数据并使用用户功能(年龄,位置,在线昵称的字符,交易历史记录...)代替其ID更加有意义吗?

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


好的,虽然这是一个更普遍的问题,但是我看到你们中的大多数人都集中在用户ID的问题上,所以这就是为什么我要使用它们的原因。让我们看一下Kaggle关于Grockit的比赛之一:kaggle.com/c/WhatDoYouKnow。目的是预测用户是否会正确回答问题。在我看来,这是与推荐系统类似的问题,您只会收到问题而不是电影,而只会得到正确/不正确的消息,而不是评级以及其他数据。可以使用时间戳:)
Nucular,2012年

1
在这种情况下,您可以假设用户是独立的,并且可以为仅根据自己的历史训练的每个用户构建一个分类器。
ogrisel 2012年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.