机器学习之-聚类学习笔记

1 聚类任务

聚类试图将数据集中的样本划分为若干个通常是不相交的子集,每个子集 称为一个"簇" (cluster)。
通过这样的划分,每个簇可能对应于一些潜在的概念(类别) ,如"浅色瓜" “深色瓜”,“有籽瓜” “无籽瓜”,甚至"本地瓜""外地瓜"等。
这些概念对聚类算法而言事先是未知的,聚类过程 仅能自动形成簇结构,簇所对应的概念语义需由使用者来把握和命名。

2 聚类性能度量

聚类性能度量大致有两类:

  • 一类是将聚类结果与某个"参考模型" (reference model)进行比较,称为"外部指标" (external index)。
  • 另一 类是直接考察聚类结果而不利用任何参考模型,称为"内部指标" (internal index)。
    常用的聚类性能度量外部指标:
    在这里插入图片描述
  • Jaccard系数(Jaccard Coefficient,简称 JC)
    在这里插入图片描述
    FM 指数 (Fowlkes and Mallows lndex,简称 FMI)
    在这里插入图片描述
    Rand指数(RandIndex,简称RI)
    在这里插入图片描述
    显然,上述性能度量的结果值均在 [0, 1] 区间,值越大越好。
    用的聚类性能度量内部指标:
    在这里插入图片描述
    DB指数 (Davies-Bouldin Index,简称 DBI)
    在这里插入图片描述
    Dunn指数(Dunn Index, 简称DI)
    在这里插入图片描述
    DBI 的值越小越好,而 DI 则相反,值越大越好.

3 距离计算

不同的距离量度会对距离的结果产生影响,常见的距离量度如下所示:
在这里插入图片描述
在这里插入图片描述

4 常见的三种聚类算法

4.1 K-Means算法

4.1.1 算法思想

选择K个点作为初始质心  
repeat  
    将每个点指派到最近的质心,形成K个簇  
    重新计算每个簇的质心  
until 簇不发生变化或达到最大迭代次数 

这里的重新计算每个簇的质心,如何计算的是根据目标函数得来的,因此在开始时我们要考虑距离度量和目标函数。
考虑欧几里得距离的数据,使用误差平方和(Sum of the Squared Error, SSE)作为聚类的目标函数,两次运行K均值产生的两个不同的簇集,选择SSE最小的那个。
在这里插入图片描述
k表示k个聚类中心,ci表示第几个中心,dist表示的是欧几里得距离。

4.2 DBSCAN

DBSCAN 是一种著名的密度聚类算法,它基于一组"邻域" (neigh- borhood) 参数 (E,MinPts) 来刻画样本分布的紧密程度。
DBSCAN 的原理是识别特征空间的“拥挤”区域中的点,在这些区域中许多数据点靠近在 一起,这些区域被称为特征空间中的密集(dense)区域。
**DBSCAN 有两个参数:min_samples 和 eps。**如果在距一个给定数据点 eps 的距离内至少有 min_ samples 个数据点,那么这个数据点就是核心样本。DBSCAN 将彼此距离小于 eps 的核心样本放到同一个簇中。
算法流程:

  • 以每一个数据点 xi 为圆心,以 eps值 为半径画一个圆圈。这个圆圈被称为 xi的 eps 邻域

  • 对这个圆圈内包含的点进行计数。
    (1)如果一个圆圈里面的点的数目超过了密度阈值 MinPts,那么将该圆圈的圆心记为核心点,又称核心对象。
    (2) 如果某个点的 eps 邻域内点的个数小于密度阈值但是落在核心点的邻域内,则称该点为边界点。
    (3) 既不是核心点也不是边界点的点,就是噪声点。

  • 核心点 xi的 eps 邻域内的所有的核心点连在一起,这样不断的将区域内的核心点连在一起,核心点的区域内又有核心点相当于从x1- > x2- > . . . - > xn ,类似于密度传导一样,那么xn由 x1密度可达。这个性质说明了由密度直达的传递性,可以推导出密度可达。

  • 如果对于 xk,使 xi和 xj都可以由 xk密度可达,那么,就称 x xi和 xj密度相连,将密度相连的点连接在一起,就形成了我们的聚类簇。
    通过上述算法我们可以看到算法需要两个参数:

  • eps值,半径值,用来做区域

  • MinPts值,用来判断哪些点是核心点

算法思想
在这里插入图片描述
最后,一共有三种类型的点:核心点、与核心点的距离在 eps 之内的点(叫作边界点, boundary point)和噪声

4.3 凝聚式层次聚类

层次聚类可以分为凝聚(agglomerative)层次聚类和分裂(divsive)层次聚类。

  • 分裂层次聚类采用的就是"自顶而下"的思想,先将所有的样本都看作是同一个簇,然后通过迭代将簇划分为更小的簇,直到每个簇中只有一个样本为止。
  • 凝聚层次聚类采用的是"自底向上"的思想,先将每一个样本都看成是一个不同的簇,通过重复将最近的一对簇进行合并,直到最后所有的样本都属于同一个簇为止。
    算法步骤:
  • 首先将每个数据点视为一个单一的簇,即如果我们的数据集中有 X 个数据点,那么我们就有 X个簇。然后,我们选择一个测量两个簇之间距离的距离度量标准。作为例子,使用 average linkage,它将两个簇之间的距离定义为第一个簇中的数据点与第二个簇中的数据点之间的平均距离。
  • 在每次迭代中,将两个簇合并成一个。这两个要合并的簇应具有最小的 average linkage。即根据选择的距离度量标准,这两个簇之间的距离最小,因此是最相似的,应该合并在一起。
  • 重复步骤 2 直到到达树根,即只有一个包含所有数据点的簇。这样只需要选择何时停止合并簇,即何时停止构建树,来选择最终需要多少个簇!
    从算法中可以知道,需要提供一下:
    距离计算公式,计算两个类之间的距离
    在凝聚层次聚类中,判定簇间距离的两个标准方法就是单连接(single linkage)和全连接(complete linkage)。
  • 单连接,是计算每一对簇中最相似两个样本的距离,并合并距离最近的两个样本所属簇。
  • 全连接,通过比较找到分布于两个簇中最不相似的样本(距离最远),从而来完成簇的合并。
    sklearn中相关实现
    scikit-learn中实现的停止准则是簇的个数,因此相似的簇被合并,直到仅剩下指定个数的簇。
    还有一些链接(linkage)准则,规定如何度量“最相似的簇”。这种度量总是定义在两个现有的簇之间。
    scikit-learn实现了以下三种链接准则:
linkage : {“ward”, “complete”, “average”, “single”}, optional (default=”ward”)
  • ward:默认选项,挑选两个簇来合并,是的所有簇中的方差增加最小,这通常会得到大小差不多相等的簇。
  • average链接:将簇中所有点之间平均距离最小的两个簇合并。
  • complete链接:也称为最大链接,将簇中点之间最大距离最小的两个簇合并。

4.4 三种聚类算法的优缺点

4.4.1 k-means算法(k均值算法)

优点

  • k-平均算法是解决聚类问题的一种经典算法,算法简单、快速。
  • 对处理大数据集,该算法是相对可伸缩的和高效率的,因为它的复杂度大约是O(nkt),其中n是所有对象的数目,k是簇的数目,t是迭代的次数。通常k<<n。这个算法经常以局部最优结束。
  • 算法尝试找出使平方误差函数值最小的k个划分。当簇是密集的、球状或团状的,而簇与簇之间区别明显时,它的聚类效果很好。

缺点

  • 对 K 值敏感。也就是说,K 的选择会较大程度上影响分类效果。在聚类之前,我们需要预先设定 K的大小,但是我们很难确定分成几类是最佳的,比如上面的数据集中,显然分为 2 类,即K = 2 最好,但是当数据量很大时,我们预先无法判断。
  • 对离群点和噪声点敏感。如果在上述数据集中添加一个噪音点,这个噪音点独立成一个类。很显然,如果 K =2,其余点是一类,噪音点自成一类,原本可以区分出来的点被噪音点影响,成为了一类了。如果 K =3,噪音点也是自成一类,剩下的数据分成两类。这说明噪音点会极大的影响其他点的分类。
  • 初始聚类中心的选择。K-means 是随机选择 K个点作为初始的聚类中心。但是,我们可以对这个随机性进行一点约束,使迭代速度更快。举个例子,如果上面的数据集我随机选择了(0,0)和(1,0)两个点,或者选择了(1.5,1.5)和(9,9)两个点,即可以加快迭代速度,也可以避免陷入局部最优。
  • 只能聚凸的数据集。所谓的凸数据集,是指集合内的每一对点,连接两个点的直线段上的每个点也在该集合内。通俗讲就是K-means聚类的形状一般只能是球状的,不能推广到任意的形状,但是有研究表明,若采用 Bregman距离,则可显著增强此类算法对更多类型簇结构的适用性。

4.4.2 DBSCAN算法

优点

  • 自适应的聚类,不需要提前设定K值大小,可以自适应的做聚类结果。
  • 对噪声不敏感。这是因为该算法能够较好地判断离群点,并且即使错判离群点,对最终的聚类结果也没什么影响。
  • 能发现任意形状的簇。这是因为DBSCAN 是靠不断连接邻域呢高密度点来发现簇的,只需要定义邻域大小和密度阈值,因此可以发现不同形状,不同大小的簇。
  • 聚类结果没有偏倚,相对的,K-Means之类的聚类算法初始值对聚类结果有很大影响

缺点

  • 对两个参数的设置敏感,即圈的半径 eps 、阈值 MinPts。
  • DBSCAN 使用固定的参数识别聚类。显然,当聚类的稀疏程度不同,聚类效果也有很大不同。即数据密度不均匀时,很难使用该算法。
  • 如果数据样本集越大,收敛时间越长。此时可以使用 KD 树优化

4.4.3 凝聚式层次聚类

优点

  • 距离和规则的相似度容易定义,限制少。
  • 不需要预先制定聚类数 。
  • 可以发现类的层次关系。

缺点

  • 计算复杂度太高。
  • 奇异值也能产生很大影响。
  • 算法很可能聚类成链状。
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值