通过稀疏数据聚类进行用户细分

机器算法验证 聚类 k-均值
2022-03-04 12:03:51

想象一下,我有 10 万个用户和 1k 个类别。对于每个用户,最多 5 个类别,我知道他们花了多少钱。显然我的数据非常稀疏。

现在我想按用户在不同类别上花费的钱对他们进行分组。这样,我可以将某些类别中“便宜”和某些其他类别中“势利”的用户分组在一起。

在通过计算它们偏离类别均值的标准偏差次数来标准化这些值之后,我尝试了 k-means 聚类,但我最终发现一个集群变得越来越大,而其他集群缩小到仅包含少数用户的集群作为数字k-means 的迭代次数确实增加了。

如何解决稀疏数据问题的聚类?任何指针,建议或想法表示赞赏。

1个回答

K -Means 不太可能在如此高维空间上给出有意义的集群(参见例如Curse of Dimensionality)。

我同意评论中的建议:您需要减少数据的维度,然后在减少的空间上执行 -Means。K

但是我不会以正确的方式进行 PCA:对于 PCA,您需要进行mean normalization,这会将稀疏矩阵变成密集矩阵。你可以做的是SVD - 没有均值归一化 - 然后应用聚类算法。另请注意,随机 SVD应该可以正常工作,但速度更快。

您可以在非负矩阵分解中应用的另一种可能有趣的技术。由于您的数据只包含正值(如果我得到正确的话),NMF 应该很好地解决这个问题。此外,您可以将 NMF 的结果解释为聚类:当我们进行维 NMF 时,我们可以将结果矩阵的列视为聚类,其中单元格中的值是观察到的关联度集群nii

您可以在“基于非负矩阵分解的文档聚类”中阅读有关将 NMF 应用于聚类的更多信息。作者:Xu、Wei、Xin Liu 和 Yihong Gong ( pdf )。