层次聚类算法的优缺点解析 层次聚类算法解析( 二 )


  • 将所有点分配到最近的簇的质心
  • 计算新形成的簇的质心
  • 重复步骤3和4
  • 这是一个迭代过程 。它将继续运行,直到新形成的簇的质心不再变化或达到最大迭代次数 。
    但K-means存在一定的挑战 。因为它总是试图将集群划分为相同大小 。此外,我们必须在算法开始时确定簇的数量 。理想情况下,我们不知道算法的一开始应该有多少个簇,因此它是K-means的挑战 。
    这就平稳的过渡到了层次聚类 。它消除了必须预先定义集群数量的问题 。听起来像在做梦!那么,让我们看看什么是层次聚类,以及它如何改进k-means 。
    什么是层次聚类
    假设我们有以下几个点,我们希望将它们分组:
    我们可以将每个点分配给一个单独的集群:
    现在,基于这些集群的相似性,我们可以将最相似的集群组合在一起并重复此过程,直到只留下一个集群:
    我们这是在构建集群层次结构 。这就是为什么这个算法被称为层次聚类 。我将在后面的部分讨论如何确定集群的数量 。现在,让我们看看不同类型的层次聚类 。
    层次聚类的类型
    主要有两种类型的层次聚类:
    1. 聚合层次聚类
    2. 分裂层次聚类
    让我们来详细了解一下每种类型 。
    聚合层次聚类
    我们在这种技术中,将每个点分配给一个单独的集群 。假设有4个数据点 。我们将每个点分配给一个集群,因此在开始时将有4个集群:

    层次聚类算法的优缺点解析 层次聚类算法解析

    文章插图
    层次聚类算法的优缺点解析 层次聚类算法解析

    文章插图

    然后,在每次迭代时,我们合并最近的一对集群并重复此步骤,直到只留下一个簇:
    我们在每一步合并(或添加)集群,对吧?因此,这种类型的聚类也称为加和层次聚类 。
    分裂层次聚类
    分裂层次聚类以相反的方式工作 。我们不是从n个集群开始(在n个观察的情况下),而是从单个集群开始,并将所有点分配给该集群 。
    因此,如果我们有10或1000个数据点,都无关紧要 。所有这些点在开始时都属于同一个集群:
    现在,在每次迭代中,我们分离集群中的最远点并重复此过程,直到每个集群仅包含一个点:
    我们在每一步进行分裂(或划分)集群,因此称为分裂层次聚类 。
    聚合聚类在业界广泛使用,这将成为本文的重点 。一旦我们处理了聚合型,分裂的层次聚类就像一块蛋糕一样 。
    执行层次聚类的步骤
    我们在层次聚类中合并最相似的点或集群–这是我们已知的 。现在的问题是 – 我们如何确定哪些点相似,哪些不相似?这是聚类中最重要的问题之一!
    计算相似度的方法之一是获取这些集群质心之间的距离 。具有最小距离的点被称为相似点,我们可以合并它们 。这被称为基于距离的算法(因为我们正在计算集群之间的距离) 。
    在层次聚类中,有一个被称为邻近矩阵的概念 。它存储了每个点之间的距离 。让我们举一个例子来理解这个矩阵以及执行层次聚类的步骤 。
    示例
    假设一位老师想把她的学生分成不同的小组 。她有每个学生的作业得分,她希望根据这些分数给学生分组(这里没有固定要多少组的目标) 。由于教师不知道应该将哪种类型的学生分配到哪个小组,所以不能将其作为监督学习问题解决 。我们将尝试在此处应用层次聚类,并将学生划分为不同的组 。
    我们来看看5名学生的样本:

    层次聚类算法的优缺点解析 层次聚类算法解析

    文章插图
    层次聚类算法的优缺点解析 层次聚类算法解析

    文章插图

    创建邻近矩阵
    首先,我们将创建一个邻近矩阵,它将告诉我们每个点之间的距离 。我们计算了每个点与每个其他点的距离,得到一个形状为n X n的方形矩阵(其中n是观测数) 。
    制作5 x 5邻近矩阵:
    此矩阵的对角线元素将始终为0,因为点与其自身的距离始终为0 。使用欧几里德距离公式计算其余距离 。假设我们想要计算第1点和第2点之间的距离:
    √(10-7)^ 2 =√9= 3
    同样,我们可以计算所有距离并填充邻近矩阵 。
    执行层次聚类的步骤
    第1步: 首先,将所有点分配给单个集群:
    这里不同的颜色代表不同的聚类 。您可以看到有5个点,对应5个不同的聚类 。
    第2步: 接下来,我们将查看邻近矩阵中的最小距离,合并具有最小距离的点 。然后更新邻近矩阵:

    推荐阅读