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

When running kmeans, is there a rule of thumb on whether tdm or dtm?

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

这是由于数据收集的性质所致 - 用户提交的在线调查往往会留下非常短的 1 句话甚至 1 或 2 个单词的回复。

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

在讨论了tdm和dtm之后,thispostr博主说:

Which of these proves to be most convenient will depend on the relative number of documents and terms in your data.

有这么多的术语和文档,我发现绘制 cusplot 非常困难。所以我删除了一些稀疏性 (.96),这给我留下了 33 个术语。但是文件数量还是非常多。大概大多数文本挖掘场景是相反的,ters 相对于文档的数量更多。

根据我的描述,我会在 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. 这取决于实现

通常,实现期望 中的实例。

  1. 这取决于你的任务。

如果要聚类文档,那么文档应该是实例。 运行 在转置矩阵上将根据出现的文档对术语进行聚类。

类似于计算行平均值与列平均值,它们在数学上是相同的,但具有非常不同的语义。做错事是因为 "more convenient" (?!?) 听起来是个很糟糕的主意。