【发布时间】:2018-08-14 18:26:06
【问题描述】:
我完全是机器学习和 k-means 算法的新手。经过一番搜索后,我确定在尝试为 k-means 找到正确的 k 时,我可以使用 Elbow、Silhouette 或 Gap 统计方法。问题是每个图表都给了我截然不同的输出。这些数据是针对具有纬度和经度的一个用户的位置,缩放几乎没有影响,因为所有位置实际上都在相同的 50 英里半径内。
这是我在 R 中使用的代码:
#Determining the right number of clusters for each user beginning with UserId = 2949
la <- user2949$Latitude
lo<-user2949$Longitude
p <- cbind(la,lo)
s <- scale(p)
head(s)
#Using Elbow Method
Elbow <- fviz_nbclust(p,kmeans,method = "wss")+labs(subtitle = "Elbow Method")
Elbow
#Using Silhouette Method
Silhouette <- fviz_nbclust(p,kmeans,method = "silhouette")+labs(subtitle = "Silhouette Method")
Silhouette
#Using Gap Statistic
set.seed(123)
Gap <- fviz_nbclust(p,kmeans,nstart=25,method = "gap_stat",nboot=50)+labs(subtitle = "Gap Statistic Method",K.max = 20)
Gap
输出(这些仅在链接中,因为我显然无法发布没有 10 名声望的照片): - 对我来说另一个问题是确定弯道,我听说我应该研究 BIC,但不知道如何解决这个问题。我通过查看得出的结论是,最佳聚类数可能是 6, - 这种方法说 10,考虑到用户数量的庞大,这对于我正在尝试做的事情可能是不可行的, - 差距统计表明 1 个集群就足够了。我不知道什么是误导,什么不是,因为我对每种方法都没有专业知识。
该项目的最终目标是查看所有用户位置,并根据他们的活动(由快餐店的信标接收)确定他们的“家”在哪里。我正在尝试找到一种大规模的方法来确定近 70,000 个用户的用户位置。我最初的想法是使用这些方法中最有效的方法进行循环,并将集群的中心作为可能的家庭位置......我可以使用什么代码来给我正确数量的集群,而无需查看 70,000 个图表?
【问题讨论】:
-
那么你真的有一个编程问题吗?您似乎更普遍地询问如何解释统计模型的结果,这不是这里的主题。也许您的问题更适合Data Science 或Cross Validated。
-
我的编程问题是我可以编写什么 R 代码来从这些图中确定 k-means 集群的最佳数量。我不知道如何从每种方法中提取数字而不实际查看图表@MrFlick
标签: r machine-learning geolocation cluster-analysis k-means