运行kmeans时,是否有关于tdm或dtm的经验法则?

时间:2016-07-03 21:02:33

标签: r cluster-analysis k-means text-mining

我的特定语料库包含大约20k个文档和大约9k个术语,一旦处理和阻止。

这是由于数据收集的性质 - 用户提交的在线调查是他们倾向于留下非常短的1句话甚至1或2个字的回复。

如果我在tdm上运行kmeans()然后在dtm上运行结果会有所不同,如果我查看例如在簇的平方和内。我知道tdm只是一个转置的dtm,反之亦然。

在讨论了tdm和dtm之后,this帖子对r博主说:

  

其中哪些证明最方便将取决于   数据中文档和术语的相对数量。

有这么多的条款和文件,我发现绘制一个cusplot非常困难。所以我删除了一些稀缺性(.96),这给了我33个条款。但仍然是一个非常大量的文件。据推测,大多数文本挖掘场景都是相反的,相对于文档而言,文本数量更多。

根据我的描述,我会在tdm或dtm上运行kmeans吗?我正在寻求将术语组合在一起,旨在找出有关人们提交这些表格的原因的概括。

我一直在玩的示例代码块,kfit和kfit1之间究竟有什么区别?

library(tm) # for text mining

## make a example corpus
# make a df of documents a to i

# try making some docs mostly about pets
a <- "dog bunny dog cat hamster"
b <- "cat cat bunny dog hamster"
c <- "cat fish dog"
d <- "cat dog bunny hamster fish"

# try making the remaining docs about fruits
 e <- "apple mango orange carrot"
f <- "cabbage apple dog"
g <- "orange mango cat apple"
h <- "apple apple orange"
i <- "apple orange carrot"
j <- c(a,b,c,d,e,f,g,h,i)
x <- data.frame(j)

# turn x into a document term matrix (dtm)
docs <- Corpus(DataframeSource(x))
tdm <- TermDocumentMatrix(docs)
dtm <- DocumentTermMatrix(docs)

# kmeans clustering
set.seed(123)
kfit <- kmeans(tdm, 2)
kfit1 <- kmeans(dtm, 2)
#plot – need library cluster
library(cluster)
clusplot(m, kfit$cluster, color=T, shade=T, labels=2, lines=0)

# t(table(kfit$cluster, 1:dtm$nrow)) for docs based analysis
table(tdm$dimnames$Terms, kfit$cluster) # for term based analysis

1 个答案:

答案 0 :(得分:2)

  1. 这取决于实施
  2. 通常,实现期望中的实例。

    1. 这取决于你的任务。
    2. 如果要集群文档,则文档应该是实例。在转置矩阵上运行将根据它们出现的文档对术语进行聚类。

      与计算行平均值与列平均值类似,它们在数学上都是相同的,但具有非常不同的语义。做错了,因为它“更方便”(?!?)听起来是个坏主意。