Math 求一个簇的半径,假设它的中心是其他两个簇中心的平均值

Math 求一个簇的半径,假设它的中心是其他两个簇中心的平均值,math,statistics,cluster-analysis,mahout,standard-deviation,Math,Statistics,Cluster Analysis,Mahout,Standard Deviation,我不知道是否有可能找到它,但我正在使用带Mahout的Kmeans集群,我坚持以下几点 在我的实现中,我使用两个不同的线程创建了以下集群: CL-1{n=4 c=[1.75]r=[0.82916]} CL-1{n=2c=[4.5]r=[0.5]} 最后,我想把这两个集群合并成一个最终集群。 在我的代码中,我设法找到最终聚类的总点数为n=6,中心的新平均数为c=2.666,但我无法找到最终的组合半径 我知道半径是总体标准偏差,如果我以前知道属于簇的每个点,我可以计算它 然而,在我的例子中,我没有关

我不知道是否有可能找到它,但我正在使用带Mahout的Kmeans集群,我坚持以下几点

在我的实现中,我使用两个不同的线程创建了以下集群:

CL-1{n=4 c=[1.75]r=[0.82916]}

CL-1{n=2c=[4.5]r=[0.5]}

最后,我想把这两个集群合并成一个最终集群。 在我的代码中,我设法找到最终聚类的总点数为n=6,中心的新平均数为c=2.666,但我无法找到最终的组合半径

我知道半径是总体标准偏差,如果我以前知道属于簇的每个点,我可以计算它

然而,在我的例子中,我没有关于点的先前知识,所以我需要前面提到的2个半径的平均值,以便最终得到:CL-1{n=6c=[2.666]r=[???]}

有什么想法吗?
谢谢你的帮助。

这并不难。记住半径不是一个很好的名称是如何计算的

可能是标准差;如果你将这个值平方,然后乘以物体的数量,你就得到了平方和。您可以聚合平方和,然后反向此过程再次获得标准偏差。这是相当基础的统计知识;要计算加权二次平均值,就像计算中心的加权算术平均值一样


然而,由于您的数据是一维的,我非常确定它将适合主内存。只要你的数据能存储在内存中,就远离Mahout。很慢。改用ELKI、SciPy或R之类的工具运行基准测试。Mahout的执行速度将比其他所有机器慢几个数量级。你也不需要所有这些东西。

我建议你也将其发布到数学堆栈交换上。他们可能会对如何解决这个问题有更多的见解!谢谢你的建议!我希望有人能帮我解决这个问题:问题是您不知道哪些点属于新群集吗?我不期望新的标准差是旧标准差的平均值。除非两个簇包含相同数量的点,否则新平均中心也不可能是旧中心的平均值。如果您首先对新平均值进行加权平均,那么您至少可以获得新簇半径的上限。如果第一个星团的中心是距离新中心的d_1单位,而第二个星团的中心是距离d_2单位的星团,以r_1和r_2为半径,那么新的星团中心,我很确定它是数字1.75,1.75,1.75,4.5,4.5之间的平均值。前四个数字是第一个星团的平均值,另外两个是第二个集群的平均值。我可以证明这一点,因为我已经知道正确的最终结果。但是,半径不同。当然,这不是平均值,但我知道半径的最终结果应该是1.49071。如果我知道要点,这将解决我的问题,但我只有这些信息。这似乎很复杂:/你能给我一个你提到的解决方案的例子吗?至于你答案的第二部分,我使用一个非常简单的数据集来做一些测试,了解Mahout是如何工作的。在我未来的计划中,我将使用更大的数据进行测试,我被告知只使用Mahout我怀疑你是否能找到使用Mahout kmeans会带来回报的数据。它真的很慢,你可以将大量的矢量数据放入主内存!第一部分,拿出笔和纸。这也是经典的克努斯,计算机编程的艺术。