使用离散变量和连续变量对数据集进行聚类

机器算法验证 聚类 k-均值 离散数据 连续数据 高斯混合分布
2022-01-31 17:58:16

我有一个数据集 X,它有 10 个维度,其中 4 个是离散值。事实上,这 4 个离散变量是有序的,即更高的值意味着更高/更好的语义。

这些离散变量中有 2 个是分类变量,因为对于这些变量中的每一个,从 11 到 12 的距离与从 5 到 6 的距离不同。虽然较高的变量值意味着实际上较高,但规模是不一定是线性的(实际上并没有真正定义)。

我的问题是:

  • 对包含离散变量和连续变量的数据集应用通用聚类算法(例如 K-Means,然后是高斯混合 (GMM))是否是个好主意?

如果不:

  • 我应该删除离散变量并只关注连续变量吗?
  • 我应该更好地离散连续数据并为离散数据使用聚类算法吗?
4个回答

过去我不得不处理这种问题,我认为可能有两种有趣的方法:

  • 连续化:用整数序列转换符号属性。有几种方法可以做到这一点,所有这些都在本文中描述。您可以尝试 NBF、VDM 和 MDV 算法。

  • 离散化:将连续属性转换为符号值。同样,许多算法,关于这方面的一个很好的讲座就是这篇文章我相信最常用的方法是 Holte 的 1R,但最好的确定方法是查看 ROC 曲线与 EWD、EFD、ID、LD 或 NDD 等算法的对比。

一旦您将所有功能都放在同一个空间中,它就会成为一个常见的聚类问题。

在连续化或离散化之间进行选择取决于你的数据集和你的特征是什么样的,所以这有点难说,但我建议你阅读我给你的关于该主题的文章。

K-means 显然没有任何意义,因为它计算均值(这是无意义的)。GMM 也是如此。

您可能想尝试使用适当距离函数的基于距离的聚类算法,例如 DBSCAN。

主要的挑战是找到一个距离函数!

虽然您可以将不同的距离函数放入 k-means 中,但它仍然会计算可能没有多大意义的平均值(并且可能与离散值的距离函数混淆)。

无论如何,首先要重点定义什么是“相似”然后集群使用这个定义类似!

如果您对使用 size 的距离矩阵感到满意num_of_samples x num_of_samples,也可以使用random forests

单击此处获取标题为 的参考论文Unsupervised learning with random forest predictors

这个想法是通过shuffling原始数据集中的值创建一个合成数据集,并训练一个分类器来分离两者。在分类过程中,您将获得一个inter-sample distance matrix,您可以在其上测试您最喜欢的聚类算法。