PCA vs TSNE vs MDS(评论群集)

时间:2019-03-13 13:20:05

标签: python cluster-analysis pca svd dimensionality-reduction

我有一个来自Movielens的知名数据集,希望对用户进行电影收藏。

我从这样的数据集开始:

idUser iDmovies review
1       2       1
1       10      2
5       5       5
5       10      2

最初,我用用户x电影创建了一个矩阵,并以这种方式填充评论值:

       movieid
idUser  2    5   10
    1   1    0    2               
    5   0    5    2 

我的矩阵非常稀疏,所以我应用了矩阵分解来填充值,现在我以这种方式有了一个矩阵(只是一个例子):

          movieid
    idUser  2    5   10
        1   1    -2    2               
        5   -2    5    2 

您是否知道将PCA o TSNE或Kmeans应用于此数据集?还是最好使用MDS?

我尝试将PCA应用于此数据集,并且我拥有了:

enter image description here

我认为这真的很糟糕。 之后,我尝试按照一个教程在PCA(https://medium.com/@gabrieltseng/clustering-and-collaborative-filtering-visualizing-clusters-using-t-sne-f9718e7491e6)上应用TSNE  在此链接

我做到了:

enter image description here

我的问题是: 我认为不是很好的集群方法。对你们来说,这是有意义的集群吗?用完整矩阵做到这一点有意义吗?

我在虹膜数据集中看到示例,并且将创建集群,因为虹膜的值实际上具有相似的值。 在我的情况下,一个用户在一个组件上可以是5个,而在另一个组件上可以是-5(太远)...所以对我来说,这可能没有道理..对吗?

为澄清起见,我希望添加一个矩阵审查屏幕:

enter image description here

对此我真的很疯狂。

1 个答案:

答案 0 :(得分:0)

在诸如movielense数据之类的数据集上,聚类通常无法像人们天真的期望的那样工作。

  1. 并非所有用户都属于“典型”兴趣簇
  2. 许多用户将有多种兴趣
  3. 变量的重要性不同
  4. 缺少的值不对应于0评级

这就是为什么在推荐系统中使用基于因子和基于项目集的方法的原因。