在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
我的数据集包含许多数字属性和一个类别属性。 比方说, 其中 我正在使用Octave https://blog.west.uni-koblenz.de/2012-07-14/a-working-k-means-code-for-octave/的默认k-means聚类算法实现。但它仅适用于数值数据。 所以我的问题是:将分类属性 最佳解决方法由于各种原因,标准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聚类的各种算法的论文,其中混合了类别和数值数据。 (我还没看过,所以我不能评论他们的优缺点:)。) 实际上,你建议的(将分类属性转换为二进制值,然后将k-means转换为数字值)是另一种尝试之前的方法(早于k-modes)。 (参见Ralambondrainy,H.1995。概念版的k-means算法。模式识别快报,16:1147-1157。)但我认为k-modes方法是优选的,原因如上所述。 次佳解决方法在我看来,有一些解决方案来处理聚簇中的分类数据。 比如R语言中就为类别数据提供特定距离度量。这个距离叫做Gower(http://www.rdocumentation.org/packages/StatMatch/versions/1.2.0/topics/gower.dist),效果很好。 第三种解决方法这里算是对上文的补充: 选择k-modes聚类绝对是保证聚类稳定性的好方法。
另请查看:ROCK: A Robust Clustering Algorithm for Categorical Attributes 第四种方法这个问题似乎与表示有关,而不是聚类方法。 类别数据是机器学习中大多数算法的问题。例如,假设您有一个名为”color”的分类变量,它可以采用红色,蓝色或黄色值。如果我们简单地将这些数字分别编码为1,2和3,我们的算法将认为red(1)实际上更接近蓝色(2)而不是黄色(3)。我们需要使用一种表示,让计算机理解这些东西实际上都是同样不同的。 一种简单的方法是使用所谓的one-hot表示,它正是您认为应该做的。我们不是像”color”这样的变量可以采用三个值,而是将它分成三个变量。这些将是”color-red,” “color-blue,”和”color-yellow,”,它们只能取值1或0。 这增加了空间的维度,但现在您可以使用任何您喜欢的聚类算法。在执行此过程后,有时对数据进行zscore或者白化是有意义的,但您的想法绝对合理。 参考资料
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13