用户阅读习惯的分类聚类

数据挖掘 r 聚类 k-均值 无监督学习
2021-10-03 07:40:37

我有一个数据集,其中包含一组用户和他们阅读过的文档的历史记录,所有文档都有与之关联的元数据属性(想想主题、国家、作者)。

我想根据与他们单击的文档相关联的元数据属性之一根据他们的阅读历史对用户进行聚类。这个属性有 7 个可能的分类值,我想证明一个假设,即用户的阅读习惯有一个模式,它们可以分为七个集群。换句话说,用户通常会根据特定元数据类别中的 7 个可能值之一来阅读文档。

任何人都对如何做到这一点有任何建议,尤其是在 R 中,比如特定的包?我意识到标准的 k-means 算法在这种情况下不能很好地工作,因为数据是分类的而不是数字的。

4个回答

听起来您准备进行协同过滤- 您有读者(用户)和文档(项目)创建一个一元响应矩阵,其中 1 个单元格指示读者(行)阅读给定文档(列)。有各种类型的推荐系统(例如,基于用户和基于项目协作过滤器),其中一些可以解释与您的文档相关联的元数据(例如,基于内容的系统)。你应该看看 R 包{recommenderlab}

查看 R 中的homals包,就降低数据集的维数而言,这可能是一个很好的起点。

鉴于您的数据是分类的,一种可能有效的方法是潜在类聚类。有大量关于这组模型和一个相当容易运行的 R 模块的文献。参见poLCA: An R Package for Polytomous Variable Latent Class Analysis 作者Linzer 和 Lewis 发表在 Journal of Statistical Software,2011 年 6 月,第 42 卷,第 10 期。

LCM 是有限混合模型的一个子集,由哥伦比亚社会学家 Paul Lazarsfeld 在 50 年代首次开发。从那以后,它们得到了广泛的发展,并且可能被营销科学家最广泛地用于细分。如果您有 1,000 美元可花,您可以从 Statistical Innovations购买Latent Gold的永久许可证。在我看来,LG 是 LCM 的最佳工具。

如果你想坚持聚类,那么你可以根据适合分类数据(汉明、杰卡德......)的度量来计算相似度矩阵,并将其提取到层次聚类算法中。

我还建议寻找关联规则,在 R ARu​​les中有一个非常好的包,可以显示频繁的产品。此外,它还可以将一起使用的“产品”可视化,因此您可以看到类似产品的组。