我想使用量化误差衡量群集的质量,但无法找到有关如何计算此指标的任何明确信息。
我发现的一些文件/文章是:
quantization_error
函数(在代码的最后)是用Python实现的关于第三个链接(这是我迄今为止发现的最好的信息)我不知道如何解释计算(请参阅下面的代码段):
(#注释是我的。问号表示我不清楚的步骤)
def quantization_error(self):
"""
This method calculates the quantization error of the given clustering
:return: the quantization error
"""
total_distance = 0.0
s = Similarity(self.e) #Class containing different types of distance measures
#For each point, compute squared fractional distance between point and centroid ?
for i in range(len(self.solution.patterns)):
total_distance += math.pow(s.fractional_distance(self.solution.patterns[i], self.solution.centroids[self.solution.solution[i]]), 2.0)
return total_distance / len(self.solution.patterns) # Divide total_distance by the total number of points ?
问题:量化误差的计算是否正确?如果不是,计算它的步骤是什么?
非常感谢任何帮助。
答案 0 :(得分:1)
冒着重述你已经知道的事情的风险,我将介绍基础知识。
查看强>
量化是我们通过将众多数据点中的每一个移动到方便(最接近,通过某个度量)量子点来简化数据集的任何时候。这些量子点是一个小得多的集合。例如,给定一组浮点数,将每个浮点数舍入为最接近的整数是一种量化。
聚类是一种众所周知的常用量化类型,我们使用数据点本身来确定量子点。
量化误差是通过将每个点从其原始位置移动到其关联的量子点而引入的误差的度量。在聚类中,我们经常将此错误测量为每个点的均方根误差(移动到其聚类的质心)。
您的解决方案
...在一个非常常见的意义上是正确的:你已经计算了数据集的和平方误差,并采用了它的平均值。这是一个非常有效的指标。
我经常看到的方法是采用群集的最终均值的平方根,并使用这些根的总和作为整个数据集的误差函数。
CITED PAPER
k-means聚类(或任何聚类,就此而言)中的一个常见问题是"该数据集的最佳聚类数是多少?"本文使用另一个级别的量化来寻找平衡。
给定一组N
个数据点,我们希望找到最佳数字' m'群集,它将满足一些合理化的最佳聚类"。找到m
后,我们可以继续使用常用的聚类算法来找到最佳聚类。
我们不能'只需最小化所有成本的错误:使用N
群集会给出错误0。
这是否足以解释您的需求?