R- K均值聚类的内存问题



我正在尝试使用k的搜索历史记录群集键短语表示聚类,但是当我运行StringdistMatrix((命令时,我遇到了"无法分配大小30GB的向量"。。我正在使用的数据集包含63455个唯一元素,因此所得的矩阵需要大约30GB的内存来处理。有没有办法降低过程的要求而不会失去太多意义?

以下是我试图运行的代码,如果您碰巧注意到任何其他错误:

#Set data source, format for use, check consistency
MyData <- c('Create company email', 'email for business', 'free trial', 'corporate pricing', 'email cost')
summary(MyData)

#Define number of clusters
kclusters = round(0.90 * length(unique(MyData)))
#Compute distance between words
uniquedata <- unique(as.character(MyData))
distancemodels <- stringdistmatrix(uniquedata, uniquedata, method="jw")
#Create Dendrogram
rownames(distancemodels) <- uniquedata
hc <- hclust(as.dist(distancemodels))
par(mar = rep(2, 4))
plot(hc)
#Create clusters from grouped keywords
dfClust <- data.frame(uniquedata, cutree(hc, k=kclusters))
names(dfClust) <- c('data','cluster')
plot(table(dfClust$cluster))
#End view
view(dfClust)

我不知道在执行K-均值聚类时避免生成距离矩阵的任何方法。

您可以考虑设计为避免记忆问题的替代聚类算法。想到的主要是克拉拉(Clara((集群大型应用; Kaufman和Rousseeuw 1990(。在R中,它与cluster::clara一样简单,仅获取数字数据(例如K-均值(,并要求您提前设置k

阅读手册(?cluster::clara(,尤其是在您应该设置的样本数量的数量上,该示例的数量应高于默认值。希望有帮助!

编辑:只是注意到您实际上没有数字数据,因此也许克拉拉并不是那么有用。您可能可以使用与Clara相同的一些原理,包括多次对数据进行采样以减少记忆足迹和以后结合结果。

最新更新