机器学习算法--层次聚类算法

一、层次聚类算法简介

        层次聚类算法(Hierarchical Clustering Algorithm)是一种常用的无监督学习算法,用于将数据集划分成多个不同层次的簇。与K均值聚类不同,层次聚类不需要预先指定聚类数量,而是通过计算样本之间的相似度或距离来构建一个层次结构。

二、层次聚类算法基本思想

        层次聚类算法的基本思想是将数据集构建成一个层次结构,其中每个样本最初表示为一个单独的簇,然后通过计算样本之间的相似度或距离来逐渐将簇合并成更大的簇。整个过程可以表示为一棵树形结构,称为聚类树或者树状图。通过该树状图,我们可以选择合适的切割点来确定最终的聚类结果。

        层次聚类的合并算法通过计算两类数据点间的相似性,对所有数据点中最为相似的两个数据点进行组合,并反复迭代这一过程。简单的说层次聚类的合并算法是通过计算每一个类别的数据点与所有数据点之间的距离来确定它们之间的相似性,距离越小,相似度越高。并将距离最近的两个数据点或类别进行组合,生成聚类树。层次聚类主要使用欧式距离来计算不同类别数据点间的距离(相似度),欧式距离的计算公式如下所示:

三、层次聚类算法实现过程

        层次聚类算法通常有两种主要的方法:凝聚(自底向上)和分裂(自顶向下)。具体则为:凝聚层次聚类(Agglomerative Hierarchical Clustering)与分裂层次聚类(Divisive Hierarchical Clustering)。

1、凝聚层次聚类算法

        凝聚层次聚类算法从每个样本作为一个单独的簇开始,然后在每个步骤中合并最相似的簇,直到达到所需的聚类数或者只剩下一个簇。该算法的主要步骤如下:
        1)初始化:将每个样本视为一个簇;
        2)计算相似度/距离:根据某种相似度或距离度量方法计算任意两个样本之间的相似度或距离;
        3)合并:合并相似度/距离最小的簇,形成新的簇;
        4)更新相似度/距离矩阵:根据实际合并情况更新相似度/距离矩阵;
        5)重复:重复步骤3和4,直到只剩下一个簇或达到所需的聚类数。

2、分裂层次聚类算法

        分裂层次聚类算法从所有样本作为一个簇开始,然后在每个步骤中选择一个簇并将其分裂成更小的簇,直到达到所需的聚类数或者每个簇包含一个样本。该算法的主要步骤如下:

        1)初始化:将所有样本视为一个簇;
        2)计算相似度/距离:根据某种相似度或距离度量方法计算任意两个样本之间的相似度或距离;
        3)选择簇:选择一个需要分裂的簇,通常是其中包含样本数最多的簇;
        4)分裂:将选择的簇分裂成更小的簇,形成新的簇;
        5)更新相似度/距离矩阵:根据实际分裂情况更新相似度/距离矩阵。
        6)重复:重复步骤3~5,直到达到所需的聚类数或每个簇只包含一个样本。

四、如何从层次树中看出聚类情况?

        我们在构建好的聚类树或者树状图中,可以通过纵轴分界线来决定这些数据到底可以分为多少类,如下图所示就是一个构建好的聚类树。

机器学习算法--层次聚类算法_第1张图片

        整棵层次树是由一棵棵小树组成,每棵小树代表了一个类,小树的高度即是两个点或两个类之间的距离,所以两个点之间的距离越近,这棵树就越矮小。

机器学习算法--层次聚类算法_第2张图片

         定好分界线后,只需要看距离这条横线和单独的竖线即可,上图中距离红线的横杠有两条(分别表示类1、3和类2、5),单独的竖线也有两条,从横坐标4和6上各延伸出的一条。

        以该聚类树为例,最好不要分为3组:1、3,2、5、4和6,因为树的高度表示两个点之间的距离,所以4到类2、5的距离只比到类1、3的距离要多如下图所示的一点点,所以硬是把 4 跟 2、5 分成一类就有点牵强了,正因为这种牵强的分类方式可能会让我们忽略 4 这个点单独的价值,所以我们不如直接将 4 看成单独的一类。

机器学习算法--层次聚类算法_第3张图片

你可能感兴趣的:(机器学习,算法,聚类)