一个使用 latent space clustering model 和 NMF 进行Bicluster 聚类的实例

来源:互联网 发布:安卓常用的布局优化 编辑:程序博客网 时间:2024/06/15 08:28

NMF = nonnegative matrix  factorization 


具体介绍请看拙文

使用NMF模型进行消费者行为分析


本文将举例介绍如何综合使用  latent clustering model 和 NMF 模型 对消费者进行聚类。


我们这次演示用的数据是 Davis 数据集, 这是个18 * 14 的小数据集, 每一行是一位女性,总共18位女性,每一列是一个活动,总共有14个活动。 每一个cell可以取1或者0, 取值之为1时,代表该行代表的女士参加了该列的活动。你可以把每个活动想象成不同的电影或者在不同的餐馆就餐。 这里有个关于使用latent clustering model的教程,也是使用的Davis 数据集。


以下是具体数据:




我们使用R package latentnet  进行聚类


library(latentnet)
data(davis)
davis.fit<-ergmm(davis~bilinear(d=2)+rsociality)
plot(davis.fit,pie=TRUE,rand.eff="sociality",labels=TRUE)




从图中的结果看,活动似乎被分为了两个大 cluster, 上面的E1 -E6, 以及下方的E9 - E14。 女士们也能大致分为上下两个组。 


我们再来看一下 NMF模型的结果,我们依旧使用我们的NMF  R 包。 根据上面的结果我们把Basis 设为2。


library(NMF)data_matrix<-as.matrix.network(davis)fit<-nmf(data_matrix, 2, "lee", nrun=20)par(mfrow = c(1, 2))basismap(fit)coefmap(fit)



我们可以看到, NMF的结果更为清晰,从右边的 Mixture coefficients 图中, 我们可以看到,NMF把E1 -E6 分为一类, E9 -E12 归为另一类。右边的basis components 图也清晰的显示出绝大多数女士被单独的归到了一类中。 两种模型所得出的结果一致。

0 0