【问题标题】:Clustering transactional data using PAM in R?在 R 中使用 PAM 对事务数据进行聚类?
【发布时间】:2013-11-07 23:16:14
【问题描述】:

我需要将交易集分组到不同的组中。 我的文本文件中的数据格式如下:

T1  17  20  22  35  37  60  62    
T2  39  51  53  54  57  65  73    
T3  17  20  21  22  34  37  62    
T4  20  22  54  57  65  73  45    
T5  20  54  57  65  73  75  80    
T6  2   20  54  57  59  63  71    
T7  2   20  22  57  59  71  66    
T8  17  20  28  29  30  34  35    
T9  16  20  28  32  54  57  65    
T10 16  20  22  28  57  59  71    
-    
-

等等,超过 5000 行。 每行代表一个交易。

到目前为止我做了什么:

txIn<-read.transactions("data2.txt",format="basket",sep=" ") 
d<-dissimilarity(txIn,method="Jaccard")
 library("cluster")
 clustersA<-pam(d,k=100)
 txOut <- paste("txOu", ".txt") 
write.table(clustersA$clustering, file="txOu",sep=" ")

但文件存储事务#及其集群,如:

"x"
"1" 1
"2" 1
"3" 1
"4" 1
"5" 1
"6" 2
"7" 2
"8" 2
"9" 1
"10" 2
-
-

我需要将其保存为,例如:

集群 1:

T1  17  20  22  35  37  60  62    
T2  39  51  53  54  57  65  73    
T3  17  20  21  22  34  37  62    
T4  20  22  54  57  65  73  45    
T5  20  54  57  65  73  75  80

T9  16  20  28  32  54  57  65

集群 2:

T6  2   20  54  57  59  63  71    
T7  2   20  22  57  59  71  66    
T8  17  20  28  29  30  34  35        
T10 16  20  22  28  57  59  71    
    -
    -

等等, 因为我想单独处理每个集群。

请我搜索了很多,我需要任何信息,例如,文档,任何帮助。

【问题讨论】:

  • 请删除多余的空格以使您的问题可读。真是一团糟。

标签: r cluster-analysis transactional pam


【解决方案1】:

您确定要进行聚类吗?

在我看来,您可能对频繁项集挖掘更感兴趣。

【讨论】:

  • 是的,我想对它们进行聚类。我尝试使用 clara 进行聚类,但 clara 的问题是 = 它使用距离乐趣来计算相似度,而且我相信当我们将数据作为事务处理时,我们不能将距离视为相似度。
  • 你的最后一句话对我来说没有意义。 Clara 可以处理任何不同的问题。但是您确实需要考虑何时您希望对象聚集...这对于交易来说一点也不明显,因为假设您有客户 1 购买 tomato spaghetti,客户 2 购买 beer diapers 和客户3 购买所有这四个项目。那么你想如何对它们进行聚类呢?频繁项集挖掘更有意义,因为客户 3 可以同时包含两个频繁项集。
  • 我明白你关于频繁项集的观点。这很有趣,非常感谢。我试图将交易聚集在不同的组中,因此我可以在每个组中单独应用关联规则挖掘算法。但我不确定在事务数据中使用 clara。在这里:stat.ethz.ch/R-manual/R-devel/library/cluster/html/clara.html 你可以看到:metric="euclidean" 或 "manhattan。那么我们如何将它们应用到事务数据中?就像你的例子。因为我使用了带有 Jaccard 函数的 pam。非常感谢
  • 我不使用 R。我不明白为什么 Clara 应该被限制在这两个距离上,除了那个 R 函数的作者没有费心去实现其他函数。不幸的是,R 在重用代码方面相当糟糕。但也许它也会接受距离矩阵?
  • 无论哪种方式,R 在此类任务上都非常有限且速度很慢。您可能想尝试更灵活的 ELKI。距离函数,而且通常也快得多。它还有大量的聚类算法。您可以使用TermFrequencyParser 加载此数据集,然后使用SparseVectorFieldFilter(使密集距离函数满意;它大致意味着计算最大维度)或使用稀疏距离函数。 Jaccard 可能类似于稀疏向量上的余弦相似度。然后尝试例如DBSCAN 和 OPTICS 集群。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-06
  • 2017-05-08
  • 1970-01-01
  • 1970-01-01
  • 2014-05-29
  • 2020-05-09
  • 1970-01-01
相关资源
最近更新 更多