Answers:
假设mat_pages []包含列中的页面(要集群)和行中的个人。您可以使用以下命令根据Rby中的单个数据对页面进行聚类:
pc <- prcomp(x=mat_pages,center=TRUE,scale=TRUE)
加载矩阵是数据的SVD分解的特征向量矩阵。他们给出了分数计算中每个PAGE的相对权重。绝对值较大的载荷在确定相应主成分的分数时会产生更大的影响。
但是,我还应该指出使用PCA对页面进行群集的短期性。这样做的原因是,负载赋予PAGES较大的权重,且具有较高的变异性,而不管此变异性实际上是由于PAGE含量还是其他原因(可能是技术变异或个别变异)。负载不一定反映组之间的真正差异,这(可能是您的主要兴趣)。但是,在所有页面具有相同方差的假设下,这种聚类确实反映了组中的差异(我不知道这是否是有效的假设)。
如果您拥有强大的计算功能(在给定数据大小的情况下可能实现)-使用分层模型可能是个好主意。在R中,可以使用lme4包来完成。
取得分数后该怎么办?
这是一个粗略的建议,分析很大程度上取决于数据的外观。另外,我想这个过程将很难对您拥有的数量级数据进行分组。
pc.col <- paste("page", 1:27000, sep=".")
pdf("principle-components.pdf")
plot(pc$x[,1:2]) ## Just look at the 1st two loadings (as you can see the groupings in a plane)
dev.off()
希望这可以使您了解如何将数据分组。
警告:这不是我所建议的。
我的建议:
这样的问题在基因组学中经常出现。在您的案例中,页面对应于基因,个体对应于患者(基本上,个体与基因组学具有相同的含义)
您要基于数据对页面进行聚类。
您可以在R中使用很多群集程序包,并且在其他答案中已指出。软件包的基本问题就像hclust是如何确定群集的数量。我最喜欢的一些是:
您也可以使用k-means等聚类算法。我敢肯定,我在这个论坛上看到一个有关聚类的话题。答案非常详细。Tal Galili询问我是否记得正确。
这肯定是一个集群问题。签出Rs cluster
包以获得算法选项的概述(pam
并且agnes
是开始的最佳选择;它们代表聚类中的两个主要流- 质心和分层)。
在数据上使用聚类的主要问题是在页面之间定义良好的相似性度量。一个简单的方法就是使用曼哈顿距离;比方说,计算普通观众的数量并对其进行归一化处理要稍微复杂一点,比如说第一页和第二页的观众数量的平均值,这应该会使受欢迎程度的影响保持沉默。
降维基本上是将聚类算法应用于属性(列)。由于数据集的维数很大,因此您可以尝试使用SOM(自组织地图/ Kohonen网络)为个人或页面创建地图。然后,您可以查看模式是否有意义(可解释)。