如何在(k-means)聚类模型中赋予某些特征更高的重要性?

数据挖掘 机器学习 聚类 特征缩放 虚拟变量
2021-09-26 17:03:39

我正在使用数字分类变量对数据进行聚类。为了处理集群模型的分类变量,我创建了虚拟变量。但是,我觉得这会导致这些虚拟变量的重要性更高,因为多个虚拟变量代表一个分类变量。

例如,我有一个分类变量Airport,它会产生多个虚拟变量:LAX、JFK、MIABOS现在假设我还有一个数字 温度变量。我还将所有变量缩放到 0 和 1 之间。现在我的Airport变量似乎比Temperature变量重要 4 倍,并且集群将主要基于Airport变量。

我的问题是我希望所有变量都具有相同的重要性。有没有办法做到这一点?我正在考虑以不同的方式缩放变量,但我不知道如何缩放它们以赋予它们相同的重要性。

3个回答

如果您的数据包含分类变量,则您不能真正使用 k-means 聚类,因为 k-means 使用欧几里得距离,这对分类变量没有多大意义。查看这个类似问题的答案。

您可以使用以下规则使用 k-means 或其派生方法之一执行聚类:

如果您的数据仅包含度量变量:

缩放数据并使用 k-means ( R ) ( Python )。

如果您的数据仅包含分类变量:

使用 k 模式 ( R ) ( Python )。

如果您的数据包含分类变量和度量变量:

缩放度量变量并使用 k-prototypes ( R ) ( Python )。

显然,目标函数使用了特征的总和。

因此,如果您想增加功能的重要性,请相应地对其进行缩放。如果将其缩放 2,则正方形将增长 4。因此,您增加了权重。

但是,我不会k-means 用于单热变量。均值适用于连续变量,最小化 one-hot 变量的平方和具有奇怪的语义。

如果您的数据包含分类变量并且 k-modes 适用于对分类数据进行聚类,则不能使用 k-means 聚类算法。但是,有几种算法可以对混合数据进行聚类,它们实际上是基本算法的变体\修改。请检查以下文件:

“最先进的混合数据聚类算法调查”,Amir Ahmad 和 Sheorz Khan,2019 年。