2014-05-07 48 views
0

我有一个数据矩阵作为以下给出..我应该使用哪种聚类技术?

它是用户访问matrix..each行代表用户和每列表示由该用户访问的网页的类别。

0 8 1 0 0 8 0 0 0 0 0 0 0 11 2 2 0 
1 0 7 0 0 0 0 0 1 1 0 0 0 0 0 0 1 
1 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 
6 1 0 0 0 2 6 0 0 0 0 1 0 0 0 0 0 
5 3 2 0 2 0 0 0 0 0 1 0 0 0 1 0 0 
2 3 0 1 0 1 0 0 0 0 0 1 0 3 0 0 0 
9 0 1 1 0 0 5 0 0 0 1 2 0 0 0 0 0 
5 1 4 0 0 0 1 0 0 2 0 0 0 9 0 0 0 
5 5 0 2 0 1 0 0 0 0 1 1 0 0 0 0 0 
1 2 0 0 2 3 3 0 0 1 1 0 0 0 4 0 0 
0 1 0 1 0 2 0 0 1 0 0 0 0 2 0 0 0 
5 4 0 0 1 0 0 0 0 0 1 0 0 2 0 0 0 
0 0 0 2 0 0 2 12 1 0 0 0 2 0 0 0 0 
6 1 0 0 0 0 58 15 7 0 1 0 0 0 0 0 0 
1 0 2 0 0 1 1 0 0 0 2 0 0 0 0 0 0 

我需要在其上应用biclustering技术。 这种双聚类技术将首先生成用户群集,然后生成页面群集。之后,它将用户和页面群集结合起来以生成双聚类。 现在我很困惑我应该为此使用哪种聚类技术。 最好的聚类将从这个矩阵生成相干双聚类。

+1

您是否有理由需要双集群数据,而不仅仅是分析?这是解决矩阵问题的数学解决方案,而不是程序化解决方案。 –

+0

看看[Apache Mahout](https://mahout.apache.org/),他们有很多[算法](https://mahout.apache.org/users/basics/algorithms.html)可能适合您的需求。 – sp00m

+0

是的,我正在处理网络日志数据的双重聚合..我已经从这些数据生成了这个矩阵..但是现在关于聚类方法来执行双聚类。 – Pratts

回答

0

通过查看矩阵,您无法确定哪种聚类算法最好。你必须尝试不同的算法(可能是k-means,bayes,最近的邻居或者你的图书馆有的)。进行交叉验证(集群只是一种将用户归类到集群中心的分类)并评估结果。你甚至可以把它打印到图表上。然后做出决定。没有决定会是完美的,你总会有错误。结果取决于你的期望。也许错误更多的结果在你的个人观点中会有更好的结果。

你有没有尝试过任何算法呢?

+0

是的,我已经尝试了k意味着它的算法..它给出了很好的结果..但问题是k值..选择最佳的k值。 – Pratts

+0

是的,这确实是一个问题。但是尽管有层次聚类,我听说过的所有算法都需要固定数量的簇来计算才能运行。 –

1

下面是几个聚类算法,可以帮助回答这个问题

摘要“的聚类技术我应该用?”

没有客观上的“正确”的聚类算法Ref

聚类算法可以根据自己的“集群模式”进行分类。针对特定类型的模型设计的算法通常会在不同类型的模型上失败。例如,k-means不能找到非凸集群,它只能找到圆形集群。

因此,了解这些“集群模式”成为关键,理解如何不同的聚类算法/方法中进行选择。典型的群集模型包括:

[1]连接模式:构建基于距离的连接模型。如分层聚类。当我们需要根据树木切割高度进行不同的分区时使用。 R函数:统计软件包中的hclust。

[2]质心模式:由表示由单个均值向量每个簇构建模型。当我们需要清晰的分区时使用(与后面描述的模糊聚类相对)。 R函数:统计包中的kmeans。

[3]分布模型:生成基于统计分布模型,例如通过最大期望算法使用多变量正态分布。用于群集形状可以是任意的,而不同于假定为圆形群集的k-均值。 R功能:群集软件包中的群集。

[4]密度模型:生成基于簇在数据空间连接密集区域的模型。例如DBSCAN和OPTICS。用于群集形状可以是任意的,不同于假定为圆形群集的k-均值。R函数dbscan在包dbscan中。

[5]子空间模型:生成基于两个集群成员和相关属性的模型。例如,双聚类(也称为联合聚类或双模式聚类)。在需要同时进行行和列聚类时使用。 R函数biclust在biclust包中。

[6]组模型:根据分组信息构建模型。例如协同过滤(推荐算法)。 R函数Recommender in recommenderlab包。

[7]基于图的模型:基于派系构建模型。社区结构检测算法尝试在有向或无向图中找到稠密子图。例如igraph包中的R函数cluster_walktrap。

Kohonen自组织特征映射:基于神经网络建立模型。 R功能在kohonen包中。

[9]光谱聚类:基于非凸集群结构构建模型,或者当中心的度量不是整个聚类的合适描述时。 R函数specc在kernlab包中。

[10]子空间聚类:对于高维数据,距离函数可能会产生问题。群集模型包括群集的相关属性。例如,R包HDclassif中的hddc函数。

[11]序列聚类:相关的组序列。 rBlast软件包。

亲和传播:基于数据点之间的消息传递构建模型。在运行算法之前,不需要确定群集的数量。某些计算机视觉和计算生物学任务比较好,例如,聚类人脸图片和识别调控转录本,比k-means,Ref Rpackage APCluster。

[13]流聚类:生成基于数据比如电话记录,金融交易等如R包BIRCH [连续到达模型https://cran.r-project.org/src/contrib/Archive/birch/]

[14]文献聚类(或文本聚类):构建模型基于SVD。它用于主题提取。例如胡萝卜[http://search.carrot2.org]是一个开源的搜索结果聚类引擎,可以将文档聚类为专题类别。

潜类级模型:它将一组观察到的多变量变量与一组潜变量联系起来。 LCA可用于协作过滤。 R功能recommenderlab软件包中的Recommender具有协作过滤功能。

双聚类:用于同时对双模数据的行和列进行聚类。例如包装biclust中的R功能biclust。软聚类(fuzzy clustering):每个对象在一定程度上属于每个聚类。例如fclust包中的R Fclust函数。

相关问题