我有一个包含名义和数值特征的数据集。我希望能够尽可能地将这个数据集完全用数字表示出来。
理想情况下,我希望能够对n元名义特征进行这种表示。我意识到在二元情况下,可以用整数来表示两个名义值。然而,当一个名义特征可以有多种排列组合时,这是否可能实现呢?
回答:
有许多技术可以将分类属性“嵌入”为数字。
例如,给定一个可以取值red
、green
和blue
的分类变量,我们可以简单地将其编码为三个属性isRed={0,1}
、isGreen={0,1}
和isBlue={0,1}
。
虽然这种方法很流行,并且显然“有效”,但许多人误以为之后的数值处理技术会产生合理的结果。
例如,如果你在一个这样编码的数据集上运行k-means算法,结果可能不会太有意义。特别是,如果你得到的平均值如isRed=.3 isGreen=.2 isBlue=.5
,你无法合理地将其映射回原始数据。更糟糕的是,使用某些算法时,你甚至可能得到isRed=0 isGreen=0 isBlue=0
的结果。
我建议你尽量处理你的实际数据,尽可能避免编码。如果你有一个好的工具,它将允许你使用混合数据类型。不要试图将所有东西都变成数值向量。这种数据的数学视角相当有限,数据不会给你所有你需要从这种视角受益的数学假设(例如,度量空间)。