快速挖掘机中聚类算法性能的比较

时间:2013-07-05 12:54:51

标签: validation data-mining cluster-analysis

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

3 个答案:

答案 0 :(得分:0)

评估群集的最可靠方法是查看您的数据。如果群集对您有任何使用对域专家有意义

绝不仅仅依赖数字。

例如,您可以通过采用群内方差来以数字方式评估群集。

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

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

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

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

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

答案 1 :(得分:0)

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

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

当它识别出比另一个更好的聚类时,Silhouette度量趋于最大。

群集密度和群集距离度量通常表现为“肘部”,因为它们趋于零。这个肘部经常与一个有趣的聚类相吻合(我必须诚实地说,我从未真正相信这种肘部标准方法)。

如果您将不同的有效性度量作为k的函数进行绘制,并且所有度量都表明某个特定k更好,那么其他人就更有理由更好地考虑该值,以确定是否为数据领域专家同意。

如果您有兴趣,我会举一些例子here

答案 2 :(得分:0)

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

1。监督技术

2。无监督技术

3。混合技术

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

例如-贾卡德相似度指数,兰德指数,纯度等。

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

例如-轮廓测量,SSE

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

现在,让我们看一下这些方法背后的直觉-

  • 剪影测量

剪影量度源自两个主要量度-内聚和分离。

凝聚力不过是集群中数据点的紧密性或紧密性。

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

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

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

enter image description here

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

在这里

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

位置

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

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

enter image description here

在这里,我们将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个数据点,则

enter image description here

基于图的分离=常数*(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个像质心这样的簇的公认点之间的距离来计算的。

enter image description here

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

剪影量度=(b-a)/ max(b,a)

位置

a =内聚值

b =分离值

如果Silhouette度量= -1,则表示聚类非常差。

如果Silhouette度量= 0,则表示聚类良好,但仍有可能进行一些改进。

如果Silhouette度量= 1,则表示聚类非常好。

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

  • SSE(误差平方和)

SSE是通过将内聚和分离值相加来计算的。

SSE =值(内聚)+值(分离)。

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

  • Jaccard相似度索引 使用数据点中的标签来测量Jaccard相似性指数。如果没有提供数据点,那么我们将无法测量该指数。

数据点分为4类-

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

True Positive(TP)=具有相同类别和相同簇的数据点

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

假阳性(FP)=具有不同类别和相同簇的数据点

在这里

enter image description here

注意-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

  • 土地指数

兰德指数类似于贾卡德相似度指数。其公式由-

给出

土地指数=(TP + TN)/(TP + TN + FP + FN)

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

兰德指数大于0.7时,可以认为是很好的聚类。

同样,当Jaccard相似性指数大于0.5时,可以认为是良好的聚类。

  • 纯度

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

给出

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

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

enter image description here

纯度=(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