我在三维空间中有大约2000万个点(x,y,z)的大型数据集。我知道这些点在密集区域组织,但这些区域的大小不同。我认为标准的无监督3D聚类应该可以解决我的问题。
由于我不能先验地估计簇的数量,我尝试使用k范围宽的k-means,但它很慢,而且,我必须估计每个k分区的重要程度。 基本上,我的问题是:如何将我的点的最重要分区提取到集群中?
答案 0 :(得分:4)
k-means可能不是这类数据的最佳算法。
DBSCAN应该更接近你对密集区域的直觉。
首先尝试样本,然后弄清楚如何扩大规模。
答案 1 :(得分:0)
如果您打算使用k-means,我上面不清楚,但如果您使用k-means,您应该关注以下帖子的回复,其中显示了如何测量聚类的方差。
Calculating the percentage of variance measure for k-means?
此外,通过尝试2到15 k大小的群集,您可以使用“肘法”获得良好的适应性。请参阅Amro的答案。
答案 2 :(得分:0)
在这种情况下,一个简单的想法是沿每个维度使用3个不同的聚类。这可能会加快速度。
因此,您可以沿X轴找到聚类(将所有点投影到X轴),然后沿Y轴继续形成子聚类,然后沿Z轴形成子聚类。
我认为使用动态编程http://www.sciencedirect.com/science/article/pii/0025556473900072可以非常有效地解决1-D k-means。