回归前聚类-推荐系统



我有一个名为train.dat的文件,它有三个字段- userID, movieIDrating

我需要在此基础上预测test.dat文件中的rating

我想知道如何使用scikit-learn的KMeans来分组类似的用户,因为我只有功能- rating。这样做有意义吗?在聚类步骤之后,我可以执行一个回归步骤来获得test.dat

中每个用户-电影对的评分。

编辑:我有一些额外的文件,其中包含每部电影的演员,导演和电影所属的类型。我不确定如何使用这些开始,我问这个问题,因为我想知道是否有可能得到一个简单的模型工作与评级,然后与其他数据增强它。我听说这叫做基于内容的推荐。对不起,我应该把其他数据文件也写下来。

scikit-learn 不是推荐系统的库,也不是典型的聚类工具。你要做的事情是处理图,通常是在图的层面上分析,或者使用各种矩阵分解技术。

特别地,kmeans只在欧几里得空间中有效,而这里没有这样的东西。您可以做的是使用DBScan(或任何其他接受任意相似性的聚类技术,但这个技术实际上是在scikit-learn中),并根据两个用户的喜好来定义他们之间的相似性,例如:

sim(user1, user2) = # movies both users like / # movies at least one of them likes

,即二元向量间相似度的雅卡德系数。你有评级,不只是"喜欢",但我在这里给出一个最简单的例子,而你可以想出许多其他的东西来尝试。关键是—对于最简单的方法,您所要做的就是定义每个用户相似度的概念,并应用接受这种设置的集群(如前面提到的DBScan)。

集群用户是有意义的。但如果你的唯一特征是评级,我认为它不能产生一个有用的预测模型。下面是我做这个论证的假设:

  • 影片质量应呈高斯分布。
  • 如果我们看看普通用户的评分分布,它应该是高斯分布。
  • 我不排除一些用户只在看烂片时才给评分的可能性(因此所有评分都很低);反之亦然。但对于大量用户来说,这应该是不寻常的行为。

因此,我可以想象,在聚类之后,在两个极端情况下,您会得到小组用户;大多数用户处于中间(因为他们有类似高斯的评分行为)。使用这个模型,您可能会为两个小(极端)群体的用户获得良好的结果;然而,对于大多数用户来说,你不能期待好的预测。

相关内容

  • 没有找到相关文章

最新更新