问题

我的数据集包含许多数字属性和一个类别属性。

比方说,NumericAttr1, NumericAttr2, ..., NumericAttrN, CategoricalAttr,

其中CategoricalAttr取三个可能值之一:CategoricalAttrValue1,CategoricalAttrValue2或CategoricalAttrValue3。
所以我的问题是:将分类属性CategoricalAttr拆分为三个数字(二进制​​)变量(如IsCategoricalAttrValue1, IsCategoricalAttrValue2, IsCategoricalAttrValue3)是否正确?

解答

由于各种原因,标准k-means算法不能直接应用于类别数据。类别数据的样本空间是离散的,并且没有自然来源。在这样的空间上的欧几里德距离函数并不是真正有意义的。正如有人所说的那样,“The fact a snake possesses neither wheels nor legs allows us to say nothing about the relative value of wheels and legs。” (来自here)

k-means的变种称为k-modes,由Zhexue Huang在this paper 中引入,适用于分类(类别)数据。请注意,这个解决方案对初始条件很敏感,例如,如here(PDF) 所述。

Huang的论文(上面链接)也有一个关于"k-prototypes"的部分,它适用于具有分类和数字特征的数据。它使用混合距离度量:分类特征的汉明距离和数字特征的欧几里德距离。

谷歌搜索“k-means混合分类数据”最近发表了很多关于k-means-like聚类的各种算法的论文,其中混合了类别和数值数据。 (我还没看过,所以我不能评论他们的优缺点:)

相关知识点

距离函数都有哪些?

欧氏距离、余弦相似度、汉明距离、编辑距离
https://zhuanlan.zhihu.com/p/71610113