您应该在执行协同过滤之前进行集群吗?

数据挖掘 聚类 推荐系统
2022-02-16 19:10:07

因此,我正在使用客户和产品信息构建推荐模型。这将通过隐式完成,即客户是否拥有产品,因为我们没有关于产品的评级信息。我希望模型使用协同过滤来推荐产品,所以我正在考虑使用推荐模型,如矩阵分解/ SVD 等。我将执行多个测试/实验以确定最佳算法。

我是否应该在推荐人之前根据他们的人口统计和地理信息先进行聚类以确定相似的客户?然后我应该为每个集群训练一个推荐模型吗?

这种方法是否有任何好处,或者推荐模型是否能够自然地确定相似的客户?

3个回答

简短回答:不,您不应该在进行矩阵分解之前执行聚类。

首先,我只想说 SVD 是矩阵分解的一个特例。还有一点,推荐中的SVD不是传统的SVD,而是有不同的形式

为什么(通常)在进行矩阵分解之前不应执行聚类的详细答案

矩阵分解 (MF) 本身执行聚类。当您执行矩阵分解时,您最终会得到用户和项目的潜在向量。通过在这些潜在向量上运行聚类算法(例如 K-Means),您最终会进行聚类。但是,如果您的最终目标只是推荐,那么执行聚类先验是没有意义的。

在某些极端情况下,您可以考虑执行聚类

  • 您是否想进行集群以更好地理解数据并为每个不同的集群构建不同的推荐模型?如果是,那么您可以考虑事先进行聚类。

你应该考虑它:

  • 使用协同过滤模型将隐含地学习用户的相似性。如果您提取用户的低维表示,这将为您提供可以被视为用户嵌入的内容。如果您对此执行集群,您可以获得用户集群。问题是,除非您使用辅助信息执行协同过滤,否则这些集群只会考虑用户反馈。如果您选择使用带有辅助信息的模型,您会发现它更难训练。

  • 因此,使用协同过滤 + 用户集群可以帮助您增强推荐模型:即在返回的推荐之上,您还可以为给定的用户集群添加最流行的产品,这可能有助于减少新用户对流行项目的推荐.

  • 这里唯一的难点是不要训练多个推荐模型。这将使您的生活更加艰难(每个模型将从更少的数据中学习)。口味是模棱两可的,单个模型可以了解客户群体之间的细微差别。

这就是您的领域专业知识发挥作用的地方一些重要的考虑因素,例如基于位置的用户行为和基于位置的产品提供。

对于典型的推荐问题,您所需要的只是用户的产品评分。推断产品特征和用户对它们的行为。

您还拥有一组属性,可以帮助您创建具有相似行为的个人类别。将这些作为评分矩阵的一部分提供只会混淆典型的推荐算法。现在出现的问题是如何最好地使用它们,因为拥有更多数据总是更好。这可以通过先验聚类来实现。

主要内容是,这是您要解决的更大问题的两个独立部分。您必须评估哪种方法更有效,同时牢记您不应该以大量集群结束,这会显着减少每个集群的产品评级数据。

或者,如果您的产品数量较少,您可以针对您的问题采用多标签或多输出分类公式,因为您正在寻找推荐或不推荐产品的二元结果(不是评级)。