首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
1.1 为何选择机器学习
1.1.1 机器学习能够解决的问题
1.1.2 熟悉任务和数据
1.2 为何选择Python
1.3 scikit-learn
1.4 必要的库和工具
1.4.1 Jupyter Notebook
1.4.2 NumPy
1.4.3 SciPy
1.4.4 matplotlib
1.4.5 pandas
1.4.6 mglearn
1.5 Python 2 与Python 3 的对比
1.7 第 一个应用:鸢尾花分类
1.7.1 初识数据
1.7.2 衡量模型是否成功:训练数据与测试数据
1.7.3 要事第 一:观察数据
1.7.4 构建第 一个模型:k 近邻算法
1.7.5 做出预测
1.7.6 评估模型
2.1 分类与回归
2.2 泛化、过拟合与欠拟合
2.3 监督学习算法
2.3.1 一些样本数据集
2.3.2 k 近邻
2.3.3 线性模型
2.3.4 朴素贝叶斯分类器
2.3.5 决策树
2.3.6 决策树集成
2.3.7 核支持向量机
2.3.8 神经网络(深度学习)
2.4 分类器的不确定度估计
2.4.1 决策函数
2.4.2 预测概率
2.4.3 多分类问题的不确定度
3.1 无监督学习的类型
3.2 无监督学习的挑战
3.3 预处理与缩放
3.3.1 不同类型的预处理
3.3.2 应用数据变换
3.3.3 对训练数据和测试数据进行相同的缩放
3.3.4 预处理对监督学习的作用
3.4 降维、特征提取与流形学习
3.4.1 主成分分析
3.4.2 非负矩阵分解
3.4.3 用t-SNE 进行流形学习
3.5 聚类
3.5.1 k 均值聚类
3.5.2 凝聚聚类
3.5.3 DBSCAN
3.5.4 聚类算法的对比与评估
3.5.5 聚类方法小结
当前位置:
首页>>
技术小册>>
Python机器学习基础教程(上)
小册名称:Python机器学习基础教程(上)
### 3.5.2 凝聚聚类 在机器学习的广阔领域中,聚类分析是一种无监督学习方法,旨在将数据集中的样本划分为若干个类或簇,使得同一簇内的样本相似度较高,而不同簇间的样本相似度较低。凝聚聚类(Agglomerative Clustering),又称为层次聚类或自下而上的聚类方法,是聚类算法中的一种重要类型,它通过不断合并最接近的簇来构建层次化的聚类结构。本章节将深入探讨凝聚聚类的基本原理、算法流程、关键参数、优缺点以及在实际应用中的案例。 #### 一、基本原理 凝聚聚类算法从每个样本点作为一个单独的簇开始,然后逐步合并最相似的两个簇,直到达到预设的簇数量或满足某种停止条件为止。这个过程中,簇的相似度通常通过距离度量来评估,如欧氏距离、曼哈顿距离或余弦相似度等。合并过程可以视为构建一个聚类树(也称为树状图或树状结构),其中每个节点代表一个簇,而节点之间的连线表示簇的合并操作。 #### 二、算法流程 凝聚聚类算法的典型流程如下: 1. **初始化**:将每个样本点视为一个单独的簇,即如果有N个样本点,则初始时有N个簇。 2. **计算距离**:计算所有簇对之间的距离。这里的距离可以是任意合适的度量方式,但最常见的是采用簇间所有点对之间距离的最小值(单链接)、最大值(全链接)或平均值(平均链接)。 3. **合并簇**:选择距离最小的两个簇进行合并,形成一个新的簇。同时,更新簇的数量和簇间距离的矩阵(如果尚未使用更高效的数据结构如优先队列)。 4. **重复步骤2和3**:重复计算簇间距离并合并最相似的簇,直到达到预设的簇数量K,或者达到某个停止条件(如簇间最小距离超过某个阈值)。 5. **输出结果**:得到最终的簇划分,每个簇包含一组相似的样本点。 #### 三、关键参数 - **簇的数量K**:这是用户需要指定的一个参数,表示最终希望得到的簇的数量。选择合适的K值对于聚类效果至关重要。 - **距离度量**:选择合适的距离度量方法,如欧氏距离、曼哈顿距离、余弦相似度等,以评估簇间的相似度。 - **链接准则**:决定了如何计算簇间的距离,包括单链接、全链接和平均链接等。不同的链接准则对聚类结果有显著影响。 - **停止条件**:除了预设的簇数量K外,还可以设定其他停止条件,如簇间最小距离达到某个阈值、迭代次数限制等。 #### 四、优缺点 **优点**: - 无需事先指定簇的形状,能发现任意形状的簇。 - 可以提供一个清晰的聚类层次结构,便于理解数据间的复杂关系。 - 可以灵活地通过调整参数来探索不同的聚类结果。 **缺点**: - 计算复杂度较高,特别是当样本数量很大时,计算所有簇对之间的距离将非常耗时。 - 对噪声和异常值较为敏感,因为初始时每个样本点都是一个簇,异常值可能会形成独立的簇。 - 需要事先指定簇的数量K,这在实际应用中往往是一个挑战。 #### 五、实际应用案例 **案例一:社交网络中的社区发现** 在社交网络中,用户之间的互动关系可以视为一种图结构,其中节点代表用户,边代表用户间的某种联系(如好友关系、点赞、评论等)。凝聚聚类可以用来识别网络中的社区结构,即具有紧密联系的用户群体。通过计算用户间的相似度(如基于共同好友的数量、互动频率等),可以将相似的用户合并到同一个簇中,从而形成不同的社区。 **案例二:市场细分** 在市场营销领域,企业经常需要对客户群体进行细分,以便更有针对性地推出产品和服务。凝聚聚类可以根据客户的购买历史、消费习惯、年龄、性别等多维度信息,将客户划分为不同的细分市场。通过合并最相似的客户群体,企业可以识别出具有共同特征的目标市场,并制定相应的营销策略。 **案例三:生物信息学中的基因表达数据分析** 在生物信息学领域,基因表达数据通常包含大量基因在不同实验条件下的表达水平。凝聚聚类可以用来分析这些数据,将表达模式相似的基因归为一类,从而揭示基因之间的功能关联和调控网络。这对于理解生物过程、发现疾病相关基因以及开发新的治疗方法具有重要意义。 #### 六、总结 凝聚聚类作为一种层次聚类方法,在机器学习领域具有广泛的应用前景。通过不断合并最相似的簇来构建层次化的聚类结构,凝聚聚类能够揭示数据中的复杂关系,并发现具有潜在价值的模式和信息。然而,其计算复杂度较高和对噪声敏感等缺点也限制了其在某些场景下的应用。在实际应用中,需要根据具体问题的特点和需求选择合适的聚类算法和参数设置,以获得最佳的聚类效果。
上一篇:
3.5.1 k 均值聚类
下一篇:
3.5.3 DBSCAN
该分类下的相关小册推荐:
Python合辑12-面向对象
Python编程轻松进阶(一)
Python与办公-玩转Word
Python编程轻松进阶(四)
Python高性能编程与实战
剑指Python(万变不离其宗)
Python合辑5-格式化字符串
Python数据分析与挖掘实战(上)
Python爬虫入门与实战开发(下)
Python与办公-玩转Excel
Python编程轻松进阶(二)
Python编程轻松进阶(五)