📜  机器学习中的凝聚方法

📅  最后修改于: 2022-05-13 01:57:05.630000             🧑  作者: Mango

机器学习中的凝聚方法

在深入研究凝聚算法之前,我们必须了解聚类技术中的不同概念。所以,首先,看一下机器学习中聚类的概念:

聚类是一组广泛的技术,用于根据数据集中对象的特征来查找子组或聚类,使得具有组的对象与其他组的对象相似但不同。集群的主要指导原则是集群内的数据应该彼此非常相似,但与集群外的数据非常不同。有不同类型的聚类技术,如分区方法、分层方法和分区方法。

Method

Characteristics

Partitioning Method

  • Uses mean/mediod to represent cluster centre
  • Adopts distance-based approach to refine clusters
  • Finds mutually exclusive clusters of spherical / nearly spherical shape
  • Effective for datasets of small – medium age

Hierarchical Method

  • Creates tree-like structure through decomposition
  • Uses distance between nearest / furthest points in neighbouring clusters for refinement
  • Error can’t be corrected at subsequent levels

Density Based Method

  • Useful for identifying arbitarily shaped clusters
  • May filter out outliers

在分区方法中,有两种技术,即k-means和 k-mediods 技术(partitioning around mediods algorithm)。但是为了了解凝聚方法,我们必须讨论分层方法。

  • 分层方法:数据被分组为树状结构。该方法有两种主要的聚类算法:
    • A. 分裂聚类:它采用自顶向下的策略,以包含所有对象的最大聚类为起点,然后递归分裂,形成越来越小的聚类。当达到用户定义的条件或最终集群仅包含一个对象时,它会终止。
    • B. 凝聚聚类:它使用自下而上的方法。它从每个对象形成自己的集群开始,然后根据它们的相似性迭代合并集群以形成大集群。它终止
      • 当达到用户施加的某些聚类条件或
      • 所有集群合并为一个集群

树状图是一种树状结构,用于表示层次聚类。单个对象由叶节点表示,集群由根节点表示。下图显示了树状图的表示:

聚类树状图

现在我们将研究凝聚方法的变体:

1.凝聚算法:单链路

单最近距离或单链接是使用两个集群的最近成员之间的距离的凝聚方法。我们现在将解决一个问题以更好地理解它:

题。使用单链接技术查找集群使用欧几里得距离并绘制树状图。

Sample No.

X

Y

P1

0.40

0.53

P2

0.22

0.38

P3

0.35

0.32

P4

0.26

0.19

P5

0.08

0.41

P6

0.45

0.30

解决方案:

第 1 步:通过以下方式计算距离矩阵: d[(x,y)(a,b)] = \sqrt{(x-a)^2 + (y-b)^2}

所以我们必须找到每个点之间的欧几里得距离,比如说我们首先找到 P1 和 P2 之间的欧几里得距离

d(P1,P2) = \sqrt{(0.4-0.22)^2 + (0.53-0.38)^2}    = \sqrt{(0.18)^2 + (0.15)^2} = \sqrt{0.0324+0.0225} = 0.23

所以距离矩阵将如下所示:

\begin{pmatrix} & P1 & P2 & P3 & P4 & P5 & P6 \\ P1 & 0 \\ P2 & 0.23 & 0 \\ P3 & & & 0 \\ P4 & & & & 0 \\ P5 & & & & & 0 \\ P6 & & & & & & 0 \\ \end{pmatrix}

同样,求每个点的欧几里得距离。但是有一点需要注意,上述距离矩阵的对角线对我们来说是一个特殊的点。对角线上方和下方的距离将相同。例如: d(P2, P5) 等价于 d(P5, P2) 。所以我们会找到矩阵下面部分的距离。

d(P1,P4) = \sqrt{(0.4-0.26)^2 + (0.53-0.19)^2} = \sqrt{(0.14)^2 + (0.34)^2} = \sqrt{0.0196+0.1156} = 0.3676 = 0.37

d(P1,P5) = \sqrt{(0.4-0.08)^2 + (0.53-0.41)^2} = \sqrt{(0.32)^2 + (0.12)^2} = \sqrt{0.1024+0.0144} = 0.3417 = 0.34

d(P1,P6) = \sqrt{(0.4-0.45)^2 + (0.53-0.30)^2} = \sqrt{(0.05)^2 + (0.23)^2} = \sqrt{0.0025+0.0529} = 0.2354 = 0.24

d(P2,P3) = \sqrt{(0.22-0.35)^2 + (0.38-0.32)^2} = \sqrt{(-0.13)^2 + (0.06)^2} = \sqrt{0.0169+0.0036} = 0.1432 = 0.14

d(P2,P4) = \sqrt{(0.22-0.26)^2 + (0.38-0.19)^2} = \sqrt{(-0.04)^2 + (0.19)^2} = \sqrt{0.0016+0.0361} = 0.1942 = 0.19

d(P2,P5) = \sqrt{(0.22-0.08)^2 + (0.38-0.41)^2} = \sqrt{(0.14)^2 + (-0.03)^2} = \sqrt{0.0196+0.0009} = 0.1432 = 0.14

d(P2,P3) = \sqrt{(0.22-0.35)^2 + (0.38-0.32)^2} = \sqrt{(-0.13)^2 + (0.06)^2} = \sqrt{0.0169+0.0036} = 0.0.1432 = 0.14

d(P2,P6) = \sqrt{(0.22-0.45)^2 + (0.38-0.30)^2} = \sqrt{(-0.23)^2 + (0.08)^2} = \sqrt{0.0529+0.0064} = 0.2435 = 0.24

d(P3,P4) = \sqrt{(0.35-0.26)^2 + (0.32-0.19)^2} = \sqrt{(0.03)^2 + (0.13)^2} = \sqrt{0.0009+0.0169} = 0.1334 = 0.13

d(P3,P5) = \sqrt{(0.35-0.08)^2 + (0.32-0.41)^2} = \sqrt{(0.27)^2 + (-0.09)^2} = \sqrt{0.0729+0.0081} = 0.2846 = 0.28

d(P3,P6) = \sqrt{(0.35-0.45)^2 + (0.32-0.30)^2} = \sqrt{(-0.1)^2 + (0.02)^2} = \sqrt{0.01+0.0004} = 0.10198 = 0.10

d(P4,P5) = \sqrt{(0.26-0.08)^2 + (0.19-0.41)^2} = \sqrt{(0.07)^2 + (-0.22)^2} = \sqrt{0.0049+0.0484} = 0.2309 = 0.23

d(P4,P6) = \sqrt{(0.26-0.45)^2 + (0.19-0.30)^2} = \sqrt{(-0.19)^2 + (-0.11)^2} = \sqrt{0.0361+0.0121} = 0.2195 = 0.22

d(P5,P6) = \sqrt{(0.08-0.45)^2 + (0.41-0.30)^2} = \sqrt{(-0.37)^2 + (0.11)^2} = \sqrt{0.1369+0.0121} = 0.3860 = 0.39

因此,更新后的距离矩阵将是:

\begin{pmatrix} & P1 & P2 & P3 & P4 & P5 & P6 \\ P1 & 0 \\ P2 & 0.23 & 0 \\ P3 & 0.22 & 0.14 & 0 \\ P4 & 0.37 & 0.19 & 0.13 & 0 \\ P5 & 0.34 & 0.14 & 0.28 & 0.23 & 0 \\ P6 & 0.24 & 0.24 & 0.10 & 0.22 & 0.39 & 0 \\ \end{pmatrix}

步骤 2:合并两个簇中最近的两个成员,并找到距离矩阵中的最小元素。这里的最小值是 0.10 ,因此我们将 P3 和 P6 结合起来(因为 0.10 出现在 P6 行和 P3 列中)。现在,形成对应于最小值的元素簇并更新距离矩阵。更新距离矩阵:

min ((P3,P6), P1) = min ((P3,P1), (P6,P1)) = min (0.22,0.24) = 0.22

min ((P3,P6), P2) = min ((P3,P2), (P6,P2)) = min (0.14,0.24) = 0.14

min ((P3,P6), P4) = min ((P3,P4), (P6,P4)) = min (0.13,0.22) = 0.13

min ((P3,P6), P5) = min ((P3,P5), (P6,P5)) = min (0.28,0.39) = 0.28

现在我们将更新距离矩阵:

\begin{pmatrix} & P1 & P2 & P3,P6 & P4 & P5 \\ P1 & 0 \\ P2 & 0.23 & 0 \\ P3,P6 & 0.22 & 0.14 & 0 \\ P4 & 0.37 & 0.19 & 0.13 & 0 \\ P5 & 0.34 & 0.14 & 0.28 & 0.23 & 0 \end{pmatrix}

现在我们将重复相同的过程。合并两个簇中最近的两个成员,并找到距离矩阵中的最小元素。最小值为 0.13 ,因此我们将 P3、P6 和 P4 组合在一起。现在,形成对应于最小值的元素簇并更新距离矩阵。为了找到,我们必须在距离矩阵中更新什么,

min (((P3,P6) P4), P1) = min (((P3,P6), P1), (P4,P1)) = min (0.22,0.37) = 0.22

min (((P3,P6), P4), P2) = min (((P3,P6), P2), (P4,P2)) = min (0.14,0.19) = 0.14

min (((P3,P6), P4), P5) = min (((P3,P6), P5), (P4,P5)) = min (0.28,0.23) = 0.23

现在我们将更新距离矩阵:

\begin{pmatrix} & P1 & P2 & P3,P6,P4 & P5 \\ P1 & 0 \\ P2 & 0.23 & 0 \\ P3,P6,P4 & 0.22 & 0.14 & 0 \\ P5 & 0.34 & 0.14 & 0.23 & 0 \end{pmatrix}

再次重复相同的过程:最小值为 0.14 ,因此我们将 P2 和 P5 结合起来。现在,形成对应于最小值的元素簇并更新距离矩阵。更新距离矩阵:

min ((P2,P5), P1) = min ((P2,P1), (P5,P1)) = min (0.23, 0.34) = 0.23

min ((P2,P5), (P3,P6,P4)) = min ((P3,P6,P4), (P3,P6,P4)) = min (0.14. 0.23) = 0.14

更新距离矩阵将是:

\begin{pmatrix} & P1 & P2,P5 & P3,P6,P4 \\ P1 & 0 \\ P2,P5 & 0.23 & 0 \\ P3,P6,P4 & 0.22 & 0.14 & 0 \\ \end{pmatrix}

再次重复相同的过程:最小值为 0.14 ,因此我们将 P2、P5 和 P3、P6、P4 组合在一起。现在,形成对应于最小值的元素簇并更新距离矩阵。更新距离矩阵:

min ((P2,P5,P3,P6,P4), P1) = min ((P2,P5), P1), ((P3,P6,P4), P1)) = min (0.23, 0.22) = 0.22

更新的距离矩阵将是:

\begin{pmatrix} & P1 & P2,P5,P3,P6,P4 \\ P1 & 0 \\ P2,P5,P3,P6,P4 & 0.22 & 0 \end{pmatrix}

所以现在我们终于找到了解决方案,这些问题的树状图如下:

2.凝聚算法:完整链接

在该算法中,完全最远距离或完全链接是使用距离最远的成员之间的距离的凝聚方法。

题。对于给定的点集,使用完整的链接凝聚聚类来识别聚类

Sample No

X

Y

P1

1

1

P2

1.5

1.5

P3

5

5

P4

3

4

P5

4

4

P6

3

3.5

解决方案。

第 1 步:通过以下方式计算距离矩阵: d[(x,y)(a,b)] = \sqrt{(x-a)^2 + (y-b)^2}    所以我们必须找到每个点之间的欧式距离,比如说我们首先找到 P1 和 P2 之间的欧式距离。 (距离计算公式同上)

假设某些点的距离矩阵是:

\begin{pmatrix} & P1 & P2 & P3 & P4 & P5 & P6 \\ P1 & 0 \\ P2 & 0.71 & 0 \\ P3 & 5.66 & 4.95 & 0 \\ P4 & 3.6 & 2.92 & 2.24 & 0 \\ P5 & 4.24 & 3.53 & 1.41 & 1.0 & 0 \\ P6 & 3.20 & 2.5 & 2.5 & 0.5 & 1.12 & 0 \\ \end{pmatrix}

步骤 2:合并两个簇中最近的两个成员,并找到距离矩阵中的最小元素。因此,最小值为 0.5 ,因此我们将 P4 和 P6 组合在一起。要更新距离矩阵,

最大值 (d(P4,P6), P1) = 最大值 (d(P4,P1), d(P6,P1)) =最大值(3.6, 3.2) = 3.6

最大值 (d(P4,P6), P2) = 最大值 (d(P4,P2), d(P6,P2)) = 最大值 (2.92, 2.5) = 2.92

最大值 (d(P4,P6), P3) = 最大值 (d(P4,P3), d(P6,P3)) = 最大值 (2.24, 2.5) = 2.5

最大值 (d(P4,P6), P5) = 最大值 (d(P4,P5), d(P6,P5)) = 最大值 (1.0, 1.12) = 1.12

更新的距离矩阵为:

\begin{pmatrix} & P1 & P2 & P3 & P4,P6 & P5 \\ P1 & 0 \\ P2 & 0.71 & 0 \\ P3 & 5.66 & 4.95 & 0 \\ P4,P6 & 3.6 & 2.92 & 2.5 & 0 \\ P5 & 4.24 & 3.53 & 1.41 & 1.12 & 0 \\ \end{pmatrix}

再次,合并两个簇中最近的两个成员并找到距离矩阵中的最小元素。我们得到最小值为 0.71 ,因此我们结合了 P1 和 P2。要更新距离矩阵,

最大值 (d(P1, P2), P3) = 最大值 (d(P1, P3), d(P2, P3)) = 最大值 (5.66, 4.95) = 5.66

最大值 (d(P1,P2), (P4,P6)) = 最大值 (d(P1, P4, P6), d(P2, P4, P6)) = 最大值 (3.6, 2.92) = 3.6

最大值 (d(P1,P2), P5) = 最大值 (d(P1, P5), d(P2, P5)) = 最大值 (4.24, 3.53) = 4.24

更新的距离矩阵为:

\begin{pmatrix} & P1,P2 & P3 & P4,P6 & P5 \\ P1,P2 & 0 \\   P3 & 5.66 & 0 \\ P4,P6 & 3.6 & 2.5 & 0 \\ P5 & 4.24 & 1.41 & 1.12 & 0 \\ \end{pmatrix}

再次,合并两个簇中最近的两个成员并找到距离矩阵中的最小元素。我们得到最小值为 1.12 ,因此我们结合了 P4、P6 和 P5。要更新距离矩阵,

最大值 (d(P4,P6,P5), (P1,P2)) = 最大值 (d(P4,P6,P1,P2), d(P5,P1,P2)) = 最大值 (3.6, 4.24) = 4.24  

最大值 (d(P4,P6,P5), P3) = 最大值 (d(P4,P6,P3), d(P5, P3)) = 最大值 (2.5, 1.41) = 2.5

更新的距离矩阵为:

\begin{pmatrix} & P1,P2 & P3 & P4,P6,P5 \\ P1,P2 & 0 \\   P3 & 5.66 & 0 \\ P4,P6,P5 & 4.24 & 2.5 & 0 \\ \end{pmatrix}

再次,合并两个簇中最近的两个成员并找到距离矩阵中的最小元素。我们得到最小值为 2.5 ,因此结合了 P4、P6、P5 和 P3。更新距离矩阵,

最小值 (d(P4,P6,P5,P3), (P1,P2)) = 最大值 (d(P4,P6,P5,P1,P2), d(P3,P1,P2)) = mac (3.6, 5.66 ) = 5.66

更新的距离矩阵为:

\begin{pmatrix} & P1,P2 & P4,P6,P5,P3 \\ P1,P2 & 0 \\   P4,P6,P5,P3 & 5.66 & 0\\ \end{pmatrix}

所以现在我们终于找到了解决方案,这些问题的树状图如下:

3.凝聚力算法:平均链接

平均-平均距离或平均链接是涉及查看所有对之间的距离并将所有这些距离平均的方法。这也称为通用对组平均值。

题。对于上一个问题中给出的点,使用平均链接凝聚聚类来识别聚类

解决方案:

我们必须首先找到距离矩阵,因为我们选择了相同的问题,距离矩阵将与上面相同:

\begin{pmatrix} & P1 & P2 & P3 & P4 & P5 & P6 \\ P1 & 0 \\ P2 & 0.71 & 0 \\ P3 & 5.66 & 4.95 & 0 \\ P4 & 3.6 & 2.92 & 2.24 & 0 \\ P5 & 4.24 & 3.53 & 1.41 & 1.0 & 0 \\ P6 & 3.20 & 2.5 & 2.5 & 0.5 & 1.12 & 0 \\ \end{pmatrix}

合并两个簇中最近的两个成员并找到距离矩阵中的最小元素。我们得到最小值为 0.5,因此我们结合了 P4 和 P6。更新距离矩阵:

平均 (d(P4,P6), P1) = 平均 (d(P4,P1), d(P6,P1)) = 平均 (3.6, 3.20) = 3.4

平均 (d(P4,P6), P2) = 平均 (d(P4,P2), d(P6,P2)) = 平均 (2.92, 2.5) = 2.71

平均 (d(P4,P6), P3) = 平均 (d(P4,P3), d(P6,P3)) = 平均 (2.24, 2.5) = 2.37

平均 (d(P4,P6), P5) = 平均 (d(P4,P5), d(P6,P5)) = 平均 (1.0, 1.12) = 1.06

更新的距离矩阵为:

\begin{pmatrix} & P1 & P2 & P3 & P4,P6 & P5 \\ P1 & 0 \\ P2 & 0.71 & 0 \\ P3 & 5.66 & 4.95 & 0 \\ P4,P6 & 3.4 & 2.71 & 2.37 & 0 \\ P5 & 4.24 & 3.53 & 1.41 & 1.06 & 0 \\ \end{pmatrix}

合并两个簇中最近的两个成员并找到距离矩阵中的最小元素。我们得到最小值为 0.71,因此我们结合了 P1 和 P2。更新距离矩阵:

平均 (d(P1,P2), P3) = 平均 (d(P1,P3), d(P2,P3)) = 平均 (5.66, 4.95) = 5.31

平均 (d(P1,P2), (P4,P6)) = 平均 (d(P1,P4,P6), d(P2,P4,P6)) = 平均 (3.2, 2.71) = 2.96

平均 (d(P1,P2), P5) = 平均 (d(P1,P5), d(P2,P5)) = 平均 (4.24, 3.53) = 3.89

更新的距离矩阵为:

\begin{pmatrix} & P1,P2 & P3 & P4,P6 & P5 \\ P1,P2 & 0 \\ P3 & 5.31 & 0 \\ P4,P6 & 2.96 & 2.5 & 0 \\ P5 & 3.89 & 1.41 & 1.12 & 0 \\ \end{pmatrix}

合并两个簇中最近的两个成员并找到距离矩阵中的最小元素。我们得到最小值为 1.12,因此我们结合了 P4、P6 和 P5。更新距离矩阵:

平均 (d(P4,P6,P5), (P1,P2)) = 平均 (d(P4,P6,P1,P2), d(P5,P1,P2)) = 平均 (2.96, 3.89) = 3.43

平均 (d(P4,P6,P5), P3) = 平均 (d(P4,P6,P3), d(P5,P3)) = 平均 (2.5, 1.41) = 1.96

更新的距离矩阵为:

\begin{pmatrix} & P1,P2 & P3 & P4,P6,P5 \\ P1,P2 & 0 \\ P3 & 5.66 & 0 \\ P4,P6,P5 & 3.43 & 1.96 & 0 \\ \end{pmatrix}

合并两个簇中最近的两个成员并找到距离矩阵中的最小元素。我们得到最小值为 1.96,因此我们结合了 P4、P6、P5 和 P3。更新距离矩阵:

平均 (d(P4,P6,P5,P3), (P1,P2)) = 平均 (d(P4,P6,P5,P1,P2), d(P3,P1P2)) = 平均 (3.43, 5.66) = 4.55

更新的距离矩阵为:

\begin{pmatrix} & P1,P2 & P4,P6,P5,P3 \\ P1,P2 & 0 \\ P4,P6,P5,P3 & 4.55 & 0 \\ \end{pmatrix}

因此,可以绘制的最终集群如下所示:

因此,我们研究了凝聚算法的所有三种变体。