十九、【机器学习】【非监督学习】- 层次聚类 (Hierarchical Clustering)

系列文章目录

第一章 【机器学习】初识机器学习

第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression)

第三章 【机器学习】【监督学习】- 支持向量机 (SVM)

第四章【机器学习】【监督学习】- K-近邻算法 (K-NN)

第五章【机器学习】【监督学习】- 决策树 (Decision Trees)

第六章【机器学习】【监督学习】- 梯度提升机 (Gradient Boosting Machine, GBM)

第七章 【机器学习】【监督学习】-神经网络 (Neural Networks)

第八章【机器学习】【监督学习】-卷积神经网络 (CNN)

第九章【机器学习】【监督学习】-循环神经网络 (RNN)

第十章【机器学习】【监督学习】-线性回归

第十一章【机器学习】【监督学习】-局部加权线性回归 (Locally Weighted Linear Regression, LWLR)

第十二章【机器学习】【监督学习】- 岭回归 (Ridge Regression)

十三、【机器学习】【监督学习】- Lasso回归 (Least Absolute Shrinkage and Selection Operator)

十四、【机器学习】【监督学习】- 弹性网回归 (Elastic Net Regression)

十五、【机器学习】【监督学习】- 神经网络回归

十六、【机器学习】【监督学习】- 支持向量回归 (SVR)

十七、【机器学习】【非监督学习】- K-均值 (K-Means)

十八、【机器学习】【非监督学习】- DBSCAN (Density-Based Spatial Clustering of Applications with Noise)


目录

系列文章目录

一、非监督学习

(一)、定义

(二)、训练流程

(三)、基本算法分类

二、层次聚类 (Hierarchical Clustering)

(一)、定义

(二)、基本概念

(三)、训练过程

(四)、特点

(五)、适用场景

(六)、扩展和变体

三、总结


一、非监督学习

(一)、定义

非监督学习是一种机器学习方法,它处理的是没有标签的数据集。与监督学习不同,非监督学习算法不需要知道数据的正确分类或目标值。它的目标是通过数据内部的结构和模式来推断出有意义的信息,如数据的分布、聚类、降维或异常检测等。

(二)、训练流程

非监督学习的训练流程通常包含以下几个步骤:

  1. 数据准备:收集和预处理数据,可能包括数据清洗、缺失值处理、数据标准化或归一化等。

  2. 模型选择:根据问题的性质选择合适的非监督学习算法。

  3. 参数初始化:初始化模型的参数,这一步对于某些算法至关重要,如K-means聚类。

  4. 模型训练:使用无标签数据训练模型,寻找数据中的结构或模式。这一过程可能涉及到迭代优化,直到满足某个停止准则,如收敛或达到预定的迭代次数。

  5. 结果评估:评估模型的结果,这通常比监督学习更具有挑战性,因为没有明确的"正确答案"。评估可能基于内在指标(如聚类的紧凑度和分离度)或外在指标(如与已知分类的比较)。

  6. 应用模型:使用训练好的模型对新数据进行分析或预测,如对新数据进行聚类或降维。

(三)、基本算法分类

非监督学习算法可以大致分为以下几类:

  1. 聚类算法:用于将数据点分组到不同的簇中,常见的算法有K-means、层次聚类、DBSCAN、Gaussian Mixture Models等。

  2. 降维算法:用于减少数据的维度,同时尽可能保留数据的结构信息,常见的算法有PCA(主成分分析)、t-SNE(t-分布随机邻域嵌入)、自编码器等。

  3. 关联规则学习:用于发现数据集中项之间的关系,如Apriori算法和Eclat算法。

  4. 异常检测算法:用于识别数据集中的异常点或离群点,如Isolation Forest、Local Outlier Factor等。

  5. 自组织映射(SOM):一种神经网络模型,用于数据可视化和聚类,可以将高维数据映射到低维空间中。

  6. 生成模型:如变分自编码器(VAE)和生成对抗网络(GAN),它们可以生成类似训练数据的新样本。

非监督学习在很多场景中都有广泛应用,如客户细分、图像识别、自然语言处理、生物信息学和推荐系统等。由于其灵活性和在处理大量未标注数据时的优势,非监督学习是数据科学和人工智能领域的重要组成部分。


二、层次聚类 (Hierarchical Clustering)

(一)、定义

层次聚类(Hierarchical Clustering)是一种无监督学习的聚类算法,用于发现数据集中的自然分组或聚类。不同于k-means等迭代型聚类算法,层次聚类构建了一个聚类的层次结构,这个结构通常表现为一棵树,称为聚类树或树状图(dendrogram)。层次聚类可以分为两种主要类型:凝聚式(Agglomerative)和分裂式(Divisive)。

(二)、基本概念

  • 凝聚式层次聚类:从最底层开始,每个样本被视为一个单独的聚类。算法随后计算每对聚类之间的相似度,并将距离最近的两个聚类合并。这一过程重复进行,直到所有样本被合并到一个单一的聚类,或者达到预设的停止条件。
  • 分裂式层次聚类:相反,从顶层开始,所有样本被视为一个整体聚类。算法将这个聚类逐步分割成更小的聚类,直到每个样本成为一个独立的聚类,或者达到另一个预设的停止条件。

(三)、训练过程

  1. 初始化

    • 将数据集中的每个对象视为一个单独的聚类,形成初始的n个聚类(n为数据点的数量)。
  2. 计算距离矩阵

    • 构建一个距离矩阵,记录所有聚类两两之间的距离。距离可以由不同的度量方式定义,如欧氏距离、曼哈顿距离等。
    • 通常,距离矩阵是基于聚类内部成员的点到点距离计算的。常用的方法有:
      • 单连接(Single Linkage):两个聚类间的距离定义为它们所有成员间的最小距离。
      • 完全连接(Complete Linkage):两个聚类间的距离定义为它们所有成员间的最大距离。
      • 平均连接(Average Linkage):两个聚类间的距离定义为它们所有成员间距离的平均值。
      • UPGMA(Unweighted Pair Group Method with Arithmetic Mean):类似于平均连接,但在构建树状图时考虑到聚类的大小。
      • WPGMA(Weighted Pair Group Method with Arithmetic Mean):在UPGMA的基础上,根据聚类大小加权平均距离。
  3. 合并聚类

    • 找到距离矩阵中距离最小的两个聚类,并将它们合并为一个新的聚类。
    • 更新距离矩阵,移除已被合并的聚类,用新聚类替换,并重新计算新聚类与其他聚类之间的距离。
  4. 重复合并

    • 重复步骤3,直到所有数据点被合并成一个聚类或达到预定的聚类数目。
    • 每一次合并后,都会在树状图中添加一个节点,表示两个聚类的合并。
  5. 构建树状图

    • 随着聚类的不断合并,可以构建出一个树状图,其中的叶节点对应原始数据点,而内部节点表示聚类的合并事件。
  6. 确定聚类数目

    • 树状图的截断决定了最终的聚类数目。通常,可以通过观察树状图的形态、设定距离阈值或采用统计方法(如Gap Statistic)来确定合理的聚类数目。
    • 截断树状图可以得到不同层次的聚类结果,提供层次结构的信息。

(四)、特点

  • 可视化:层次聚类的结果可以用树状图直观地表示,便于理解和解释。
  • 灵活性:用户可以在不同的层次上决定聚类的数量,而不必在算法开始前指定。
  • 稳定性:一旦聚类树建立,就不会因为随机初始化而改变,这使得结果更加可靠。
  • 局限性:处理大规模数据集时效率较低,因为它涉及到大量的距离计算和存储。

(五)、适用场景

  • 生物信息学:基因表达数据的聚类分析。
  • 市场细分:消费者行为数据的分群。
  • 图像分析:图像分割和特征提取。
  • 文档分类:文本数据的主题分类。

(六)、扩展和变体

  • Divisive Hierarchical Clustering:与凝聚式相反,从一个包含所有数据点的大聚类开始,逐渐分割成更小的聚类。
  • BIRCH (Balanced Iterative Reducing and Clustering using Hierarchies):适用于大型数据集,通过构建CF树(Clustering Feature Tree)来近似数据,减少计算距离的开销。
  • CURE (Clustering Using REpresentatives):通过选择每个聚类的多个代表性点,避免了完全连接和平均连接的缺点,提高了鲁棒性。

层次聚类因其生成的树状图能够提供数据的层次结构信息,常用于生物信息学、文本分析等领域,特别适合于数据探索和理解数据的内在组织结构。

三、总结

层次聚类可以与其他技术结合,例如使用不同的距离度量或链接规则(如单链、全链、平均链等)来改进聚类效果。此外,为了提高大型数据集的处理能力,可以采用近似算法或数据降维技术。在某些情况下,层次聚类也可以与其它类型的聚类算法(如k-means)结合使用,以优化最终的聚类结果。例如,可以使用层次聚类来初步确定k-means算法中k的值,或作为预处理步骤来减少k-means的迭代次数。

相关推荐
机器人虎哥2 分钟前
【8210A-TX2】Ubuntu18.04 + ROS_ Melodic + TM-16多线激光 雷达评测
人工智能·机器学习
EterNity_TiMe_30 分钟前
【论文复现】(CLIP)文本也能和图像配对
python·学习·算法·性能优化·数据分析·clip
sanguine__33 分钟前
java学习-集合
学习
lxlyhwl33 分钟前
【STK学习】part2-星座-目标可见性与覆盖性分析
学习
nbsaas-boot34 分钟前
如何利用ChatGPT加速开发与学习:以BPMN编辑器为例
学习·chatgpt·编辑器
CV学术叫叫兽1 小时前
一站式学习:害虫识别与分类图像分割
学习·分类·数据挖掘
我们的五年1 小时前
【Linux课程学习】:进程程序替换,execl,execv,execlp,execvp,execve,execle,execvpe函数
linux·c++·学习
一棵开花的树,枝芽无限靠近你2 小时前
【PPTist】添加PPT模版
前端·学习·编辑器·html
VertexGeek2 小时前
Rust学习(八):异常处理和宏编程:
学习·算法·rust
罗小罗同学2 小时前
医工交叉入门书籍分享:Transformer模型在机器学习领域的应用|个人观点·24-11-22
深度学习·机器学习·transformer