0

我使用 Rapidminer 在我的生物医学数据集上应用了不同的聚类算法,如 kmean、kmediod kmean-fast 和最大期望聚类。现在我想检查这些算法的性能,哪些算法可以提供更好的聚类结果。为此,我应用了一些运算符,例如“集群密度性能”和“集群距离性能”,这为我提供了每个集群和 davis bouldin 的集群距离内的平均值。但我很困惑用这些运算符检查每个算法的聚类性能是否正确?我也对 Silhouette 方法感兴趣,我可以将其应用于每个算法来检查性能,但无法理解从哪里可以从聚类算法输出中获取 b(i) 和 a(i) 值。

4

3 回答 3

0

评估聚类最可靠的方法是查看您的数据。如果集群对您有用并且对领域专家有意义

永远不要只依赖数字。

例如,您可以通过获取集群内方差来以数值方式评估集群。

然而,k-means 正是优化了这个值,所以 k-means 总是会得到最好的结果,实际上这个度量随着 k 的数量而减少 - 但结果根本没有变得更有意义!

以这种方式使用一个系数(例如剪影系数)来比较相同算法的结果在某种程度上是可以的。由于轮廓系数与方差最小化有些正交,因此当结果是两个目标的合理平衡时,它将使 k-means 在某个点停止。

但是,将这种度量应用于不同的算法(可能与度量具有不同的相关性)本质上是不公平的。最有可能的是,您会高估一种算法而低估另一种算法的性能。

另一种流行的方法是使用标记数据进行外部评估。虽然这应该对方法没有偏见——除非标签是由类似的方法生成的——但它有不同的问题:它会惩罚一个实际发现集群的解决方案!

总而言之,无监督方法的评估是困难的。真的很难。你能做的最好的就是看看结果在实践中是否有用!

于 2013-07-05T14:15:27.287 回答
0

永远不要依赖数字是非常好的建议。

所有数字都可以帮助您专注于数学上有趣的特定聚类。Davies-Bouldin 有效性度量很好,因为当它认为集群相对于自身最紧凑并且相对于其他集群最分离时,它会显示最小值。如果您将 Davies-Bouldin 度量作为 k 的函数绘制图表,“最佳”聚类将显示为最小值。当然,数据可能不会形成球形集群,因此这种措施可能不合适,但那是另一回事了。

当剪影度量识别出一个相对优于另一个的聚类时,它趋于最大值。

聚类密度和聚类距离测量值通常呈现“弯头”,因为它们趋于零。这个肘部通常与一个有趣的聚类相吻合(老实说,我从来没有真正相信这种肘部标准方法)。

如果您要绘制不同的有效性度量作为 k 的函数,并且所有度量都表明特定的 k 比其他的更好,那么这将有充分的理由更详细地考虑该值,看看您是否作为领域专家对于数据,同意。

如果你有兴趣,我这里有一些例子。

于 2013-07-07T13:30:33.160 回答
0

有很多方法可以评估机器学习中聚类模型的性能。它们大致分为3类-

1. 监督技术

2. 无监督技术

3. 混合技术

通过将评估指标的值与一些预定义的基本规则和值进行比较来评估监督技术。

例如 - Jaccard 相似度指数、Rand 指数、纯度等。

无监督技术由一些无法与预定义值进行比较的评估指标组成,但可以在不同的聚类模型之间进行比较,从而我们可以选择最佳模型。

例如 - 轮廓测量,SSE

混合技术只不过是有监督和无监督方法的组合。

现在,让我们来看看这些方法背后的直觉——

  • 剪影测量

轮廓度量源自 2 个主要度量 - 凝聚力和分离度。

内聚只不过是集群内数据点的紧凑性或紧密性。

基本上有两种计算凝聚力的方法-

  1. · 基于图的内聚
  2. · 基于原型的凝聚力

让我们假设 A 是一个具有 4 个数据点的集群,如图所示 -

在此处输入图像描述

基于图的内聚通过将每个点到每个其他点的距离(欧几里得或曼哈顿)相加来计算内聚值。

这里,

图形凝聚力(A) = 常数 * ( Dis(1,2) + Dis(1,3) + Dis(1,4) + Dis(2,3) + Dis(2,4) + Dis(3,4) )

在哪里,

常数 = 1/ (2 * 所有距离的平均值)

基于原型的凝聚力是通过将所有数据点与一个普遍接受的点(如质心)的距离相加来计算的。

在此处输入图像描述

在这里,让我们将 C 视为集群 A 中的质心

然后,

原型内聚力(A) = 常数 * (Dis(1,C) +Dis(2,C) + Dis(3,C) + Dis(4,C))

在哪里,

常数 = 1/ (2 * 所有距离的平均值)

分离是 2 个不同集群的数据点之间的距离或差异幅度。

这里也主要有两种分离值的计算方法。

1. 基于图的分离

2. 基于原型的分离

基于图形的分离通过将簇 1 中的所有点与簇 2 中的每个点之间的距离相加来计算值。

例如,如果 A 和 B 是 2 个集群,每个集群有 4 个数据点,那么,

在此处输入图像描述

基于图形的分离 = 常数 * ( Dis(A1,B1) + Dis(A1,B1) + Dis(A1,B2) + Dis(A1,B3) + Dis(A1,B4) + Dis(A2,B1) + Dis (A2,B2) + Dis(A2,B3) + Dis(A2,B4) + Dis(A3,B1) + Dis(A3,B2) + Dis(A3,B3) + Dis(A3,B4) + Dis( A4,B1) + Dis(A4,B2) + Dis(A4,B3) + Dis(A4,B4) )

在哪里,

常数 = 1/ 簇数

基于原型的分离是通过找到 2 个簇(如质心)的普遍接受点之间的距离来计算的。

在此处输入图像描述

在这里,我们可以简单地计算 2 个簇 A 和 B 的质心之间的距离,即 Dis(C(A),C(B)) 乘以一个常数,其中常数 = 1/ 簇数。

轮廓测量 = (ba)/max(b,a)

在哪里,

a = 凝聚力值

b = 分离值

如果 Silhouette measure = -1 则意味着聚类非常差。

如果 Silhouette measure = 0,则表示聚类效果很好,但仍有一些改进可能。

如果 Silhouette measure = 1 则意味着聚类非常好。

当我们有多种聚类算法时,总是建议选择具有高轮廓度量的一种。

  • SSE(误差平方和)

SSE 是通过添加内聚力和分离度值来计算的。

SSE = 价值(凝聚力)+ 价值(分离)。

当我们有多种聚类算法时,总是建议选择 SSE 低的一种。

  • Jaccard 相似度指数 Jaccard 相似度指数是使用数据点中的标签测量的。如果未提供数据点,则我们无法衡量该指数。

数据点分为4类-

True Negative (TN) = 具有相同类别和不同聚类的数据点

真阳性 (TP) = 具有相同类别和相同集群的数据点

假阴性 (FN) = 具有相同类别和不同聚类的数据点

误报 (FP) = 具有不同类别和相同聚类的数据点

这里,

在此处输入图像描述

注意 - nC2 表示包含 n 个元素的集合中可能包含 2 个元素的组合数

nC2 = n*(n-1)/2

TP = 5C2 + 4C2 + 2C2 + 3C2 = 20

FN = 5C1 * 1C1 + 5C1 * 2C1 + 1C1 * 4C1 + 1C1 * 2C1 + 1C1 * 3C1 = 24

FP = 5C1 * 1C1 + 4C1 * 1C1 +4C1 * 1C1 + 1C1 * 1C1 +3C1 * 2C1 = 20

TN= 5C1 * 4C1 + 5C1 * 1C1 + 5C1 * 3C1 + 1C1 * 1C1 + 1C1 * 1C1 + 1C1 * 2C1 + 1C1 * 3C1 + 4C1 * 3C1 + 4C1 * 2C1 + 1C1 * 3C1 + 1C1 * 2C1 = 72

Jaccard相似指数=TP/(TP+TN+FP+FN)

这里,Jaccard 相似度指数 = 20 / (20+ 72 + 20 + 24) = 0.15

  • 兰德指数

Rand Index 类似于 Jaccard 相似度指数。它的公式由-

兰德指数 = (TP + TN) / (TP + TN + FP +FN)

这里,兰德指数 = (20 + 72) / (20+ 72 + 20 + 24) = 0.67

当 Rand 指数在 0.7 以上时,可以认为是一个很好的聚类。

同样,当 Jaccard 相似度指数在 0.5 以上时,可以认为是良好的聚类。

  • 纯度

此指标还需要数据中的标签。该公式由 -

纯度 = (属于聚类 1 中最大标签的数据点数 + 属于聚类 2 中最大标签的数据点数 + .... + 属于聚类中最大标签的数据点数簇 n ) / 数据点总数。

例如,让我们考虑 3 个集群 - A 、 B 和 C 带有标记的数据点

在此处输入图像描述

纯度 = (a + b + c) / n

在哪里,

a = 簇 A 中黑色圆圈的数量(因为黑色是计数中的最大值)

b = 簇 B 中红色圆圈的数量(因为红色是计数中的最大值)

c = 集群 C 中绿色圆圈的数量(因为绿色是计数中的最大值)

n = 数据点总数

这里,纯度 = (5 + 6 + 3) / (8 + 9 + 5) = 0.6

如果纯度大于 0.7,则可以认为是良好的聚类。

原始来源- https://qr.ae/pNsxIX

于 2020-08-02T02:08:10.577 回答