我正在尝试根据R中的借款人的过去行为将我的数据分组为3个集群
我正在使用dtwclust包使用DTW距离进行层次聚类。我的数据集有4000行--年份是按列表示的。我想分成3组。这需要永远的时间来运行。有没有更好的方法去做,或者我做错了什么?
install.packages("BBmisc")
install.packages("dtwclust")
cluster_data <- data.frame(name = LETTERS, x2001 = 1:26 , x2002 = 27:52,x2003 = 52:77)
remit.norm <- BBmisc::normalize(cluster_data, method="standardize")
remit.norm <- remit.norm[-1,-1]
cluster_dtw_h <- tsclust(remit.norm, type = "h", k = 3L, distance = "dtw", control = hierarchical_control(method = "complete"), seed = 390, preproc = NULL)发布于 2019-06-08 22:11:31
我不明白,因为对我来说,上面的代码几乎是瞬间就能工作的。您也可以尝试使用hclust函数的TSdist包,效果可能会更好。希望能有所帮助
发布于 2019-06-09 00:27:37
有几件事。DTW是昂贵的,如果你有4k系列,层次聚类需要执行800万次DTW计算,这将需要时间。然而,您使用的是dtw::dtw距离,它是而不是针对交叉距离矩阵优化的。尝试使用distance = "dtw_basic",它是包含在dtwclust中的多线程版本,并查看help("dtw_basic") (考虑使用窗口约束)。还要检查timing experiments,以了解预期的运行时间,可能在几分钟到几个小时的顺序。
https://stackoverflow.com/questions/56505710
复制相似问题