连载|机器学习|聚类(下)

简介: 连载|机器学习|聚类(下)

聚类(下)

在聚类(上)中我们了解了一下聚类算法的基本原理,同时也了解了最常用的聚类算法K-Means以及相关的优化算法,对于K-Means来说,我们可以称之为原型聚类算法,本节再让我们来了解一下密度聚类和层次聚类算法。


密度聚类

密度聚类算法假设聚类结构能通过样本分布的紧密程度确定,一般情况下,密度聚类算法从样本密度的角度来考察样本的可连接性,并基于可连接样本不断扩展聚类簇以获得最终的聚类结果。


密度聚类算法的主要特点:

  1. 对噪声数据不敏感
  2. 发现任意形状的簇
  3. 一次扫描
  4. 需要密度参数来作为算法停止的条件
  5. 计算量大、复杂度高


DBSCAN的概念

image.png

从下图可以很容易看出理解上述定义,图中MinPts=5(图中每个圆内至少有5个样本),红色的点都是核心对象,因为其ϵ − 邻域至少有5个样本。黑色的样本是非核心对象。所有核心对象密度直达的样本在以红色核心对象为中心的超球体内,如果不在超球体内,则不能密度直达。图中用绿色箭头连起来的核心对象组成了密度可达的样本序列。在这些密度可达的样本序列的ϵ − 邻域内所有的样本相互都是密度相连的。

image.png

DBSCAN的算法思想

DBSCAN的聚类定义很简单:由密度可达关系导出的最大密度相连的样本集合,即为我们最终聚类的一个类别,或者说一个簇。


这个DBSCAN的簇里面可以有一个或者多个核心对象。如果只有一个核心对象,则簇里其他的非核心对象样本都在这个核心对象的s s里;如果有多个核心对象,则簇里的任意一个核心对象的ss中一定有一个其他的核心对象,否则这两个核心对象无法密度可达。这些核心对象的ss里所有的样本的集合组成的一个DBSCAN聚类簇。


那么怎么才能找到这样的簇样本集合呢?DBSCAN使用的方法很简单,它任意选择一个没有类别的核心对象作为种子,然后找到所有这个核心对象能够密度可达的样本集合,即为一个聚类簇。接着继续选择另一个没有类别的核心对象去寻找密度可达的样本集合,这样就得到另一个聚类簇。一直运行到所有核心对象都有类别为止。


基本上这就是DBSCAN算法的主要内容了,是不是很简单?但是我们还是有三个问题没有考虑。

第一个是一些异常样本点或者说少量游离于簇外的样本点,这些点不在任何一个核心对象周围,在DBSCAN中,我们一般将这些样本点标记为噪音点。


第二个是距离的度量问题,即如何计算某样本和核心对象样本的距离。在DBSCAN中,一般采用最近邻思想,采用某一种距离度量来衡量样本距离,比如欧式距离。这和KNN分类算法的最近邻思想完全相同。对应少量的样本,寻找最近邻可以直接去计算所有样本的距离,如果样本量较大,则一般采用KD树或者球树来快速的搜索最近邻。


第三种问题比较特殊,某些样本可能到两个核心对象的距离都小于\epsilon,但是这两个核心对象由于不是密度直达,又不属于同一个聚类簇,那么如果界定这个样本的类别呢?一般来说,此时DBSCAN采用先来后到,先进行聚类的类别簇会标记这个样本为它的类别。也就是说DBSCAN的算法不是完全稳定的算法。


DBSCAN的算法流程

在进行DBSCAN算法之前首先我们要确定该算法需要的两个参数:

image.png

层次聚类

层次聚类试图在不同层次对数据集进行划分,从而形成树形的聚类结构,对于数据集的划分我们即可以采用“自底向上”的策略,也可以采用“自顶向下”的策略。层次聚类的展示图如下:

113.png

AGNES算法

AGNES是一种采用自底向上聚合策略的层次聚类算法。它先将数据集中的每个样本看作是一个初始聚类簇,然后在算法运行的每一步中找出距离最近的两个聚类簇进行合并,该过程不断重复,直到达到预设的聚类簇个数。这里的关键就在于如何计算聚类簇之间的距离。

给定簇image.png我们可以通过下面的式子来计算距离:

image.png

根据上面的公式,显然我们可以看出,最小距离由两个簇的最近样本决定,最大距离由两个簇的最远样本决定,而平均距离则由两个簇的所有样本共同决定。


AGNES算法的原理如下:


输入:包含n个对象的数据库,设定需要的簇的个数k。

输出:满足终止条件的若干个簇。


(1) 将每个对象当成一个初始簇;

(2)计算任意两个簇的距离,并找到最近的两个簇;

(3)合并两个簇,生成新的簇的集合;

(4)当不满足终止条件的时候重复执行(2)(3);

(5) 终止条件(得到k个簇)得到满足,输出聚类结果。

相关文章
|
23天前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
73 4
|
2月前
|
机器学习/深度学习 算法 数据可视化
机器学习的核心功能:分类、回归、聚类与降维
机器学习领域的基本功能类型通常按照学习模式、预测目标和算法适用性来分类。这些类型包括监督学习、无监督学习、半监督学习和强化学习。
47 0
|
4月前
|
机器学习/深度学习 数据采集 算法
【机器学习】K-Means聚类的执行过程?优缺点?有哪些改进的模型?
K-Means聚类的执行过程、优缺点,以及改进模型,包括K-Means++和ISODATA算法,旨在解决传统K-Means算法在确定初始K值、收敛到局部最优和对噪声敏感等问题上的局限性。
68 2
|
4月前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】聚类算法中的距离度量有哪些及公式表示?
聚类算法中常用的距离度量方法及其数学表达式,包括欧式距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、余弦相似度等多种距离和相似度计算方式。
391 1
|
4月前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】Python详细实现基于欧式Euclidean、切比雪夫Chebyshew、曼哈顿Manhattan距离的Kmeans聚类
文章详细实现了基于不同距离度量(欧氏、切比雪夫、曼哈顿)的Kmeans聚类算法,并提供了Python代码,展示了使用曼哈顿距离计算距离矩阵并输出k=3时的聚类结果和轮廓系数评价指标。
100 1
|
6月前
|
机器学习/深度学习 数据挖掘
机器学习之聚类——模糊聚类FCM
机器学习之聚类——模糊聚类FCM
122 4
|
6月前
|
机器学习/深度学习 算法 搜索推荐
机器学习中的聚类
**文章摘要:** 本文介绍了聚类算法的基本概念、应用、实现流程和评估方法。聚类是一种无监督学习技术,用于将数据分为相似的组,如K-means、层次聚类、DBSCAN和谱聚类。K-means算法通过迭代优化质心,将数据点分配到最近的簇,直至质心不再变化。模型评估包括误差平方和(SSE)、肘部方法(确定最佳簇数)和轮廓系数法(Silhouette Coefficient),以量化聚类的紧密度和分离度。应用场景涵盖用户画像、广告推荐和图像分割等。在Python的sklearn库中,可以使用KMeans API进行聚类操作。
|
6月前
|
机器学习/深度学习 算法 数据挖掘
机器学习——DBSCAN 聚类算法
【6月更文挑战第8天】DBSCAN是一种基于密度的无监督聚类算法,能处理不规则形状的簇和噪声数据,无需预设簇数量。其优点包括自动发现簇结构和对噪声的鲁棒性。示例代码展示了其基本用法。然而,DBSCAN对参数选择敏感,计算效率受大规模数据影响。为改善这些问题,研究方向包括参数自适应和并行化实现。DBSCAN在图像分析、数据分析等领域有广泛应用,通过持续改进,将在未来保持重要地位。
82 2
|
6月前
|
机器学习/深度学习 分布式计算 算法
在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)
【6月更文挑战第28天】在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)、数据规模与特性(大数据可能适合分布式算法或深度学习)、性能需求(准确性、速度、可解释性)、资源限制(计算与内存)、领域知识应用以及实验验证(交叉验证、模型比较)。迭代过程包括数据探索、模型构建、评估和优化,结合业务需求进行决策。
63 0
|
6月前
|
机器学习/深度学习 算法 数据可视化
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
61 0