如何设置K的范围,同时找到其最佳值



当KMeans算法对大型数据集进行聚类时,为了找到K的最佳值,我们可以使用以下代码片段:

model = KMeans()
visualizer = KElbowVisualizer(model, k=(min_value, max_value), timings=False, locate_elbow=True)  
visualizer.fit(data)
no_of_clusters= visualizer.elbow_value_

在这里,我们指定了应该在其中获得K值的范围(min_value和max_value(。对于大型数据集(例如:100万行(,我们如何找到这些范围的最佳组合,以便节省大量执行时间?

关于如何获得K的合理范围的好问题。有几个场景你想把你的问题放在那里。

场景1:我们知道业务上下文,即结果如何有用。比方说,如果我们试图将国家分为一些集群——发展中国家、发达国家和欠发达国家。在这里,我们知道了由业务驱动的价值的大致范围。在这种情况下,您可能会考虑将范围增加几个集群。

场景2:我们对集群的业务用途知之甚少。在这种情况下,您可以尝试对每个K值使用轮廓分数等指标,并在找到最大轮廓分数的值处停止。这里的一个小调整是每次将K的值增加2/3,而不是1,以防您正在查看的簇的数量在10的数量级。

https://scikit-learn.org/stable/modules/generated/sklearn.metrics.silhouette_score.html

在回答这个问题之前,数据科学是你的直觉与试验&错误我们不是一次就能解决的。使用轮廓分数来评估K的最佳值。或一次使用3个值&计算轮廓分数&然后看看他们是否给了你好分数。

实际上决定集群主要取决于您的应用程序。

但就我而言,我遵循以下价值观:1.对于小数据和不太关键的应用程序:Kmin=2和Kmax=102.对于小数据和更关键的应用:Kmin=2,Kmax=max高达203.对于大数据和不太关键的应用程序:Kmin=2,Kmax=5-104.对于大数据和更关键的应用:Kmin=2和Kmax=10-15

无论如何,不要超过30岁。

对数据进行子采样。

K-means是基于means的。随着数据的增加,平均值的精度并没有提高多少。所以只要使用10k个物体就足够了。

最新更新