二十一、【机器学习】【非监督学习】- 谱聚类 (Spectral 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)二十、【机器学习】【非监督学习】- 均值漂移 (Mean Shift)


目录

系列文章目录

一、非监督学习

(一)、定义

(二)、训练流程

(三)、基本算法分类

 二、谱聚类 (Spectral Clustering)​​

(一)、定义

(二)、基本概念

(三)、训练过程

步骤 1: 构建相似性图

步骤 2: 计算度矩阵和拉普拉斯矩阵

步骤 3: 特征分解

步骤 4: 数据点映射

步骤 5: 聚类

步骤 6: 映射回原始空间

步骤 7: 评估和优化

(四)、特点

(五)、适用场景

(六)、扩展

三、总结


一、非监督学习

(一)、定义

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

(二)、训练流程

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

  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),它们可以生成类似训练数据的新样本。

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


 二、谱聚类 (Spectral Clustering)​​

(一)、定义

    谱聚类是一种基于图论和线性代数的聚类方法,它通过构建一个图来表示数据点之间的关系,并利用图的拉普拉斯矩阵的谱性质来进行聚类。谱聚类在处理非凸和非球形数据分布时表现出色,能够有效地捕捉数据的内在结构,尤其是在高维空间中。

(二)、基本概念

    谱聚类的基本思想是将聚类问题转换为图的最优划分问题。数据集中的每个样本点被看作图中的一个顶点,而样本点之间的相似性则通过图中的边来表示。谱聚类的关键在于构建一个合适的相似性矩阵,并利用拉普拉斯矩阵的特征分解来寻找最优的划分方案。

(三)、训练过程

谱聚类是一种基于图论的聚类方法,其核心是通过构建图和分析图的拉普拉斯矩阵来揭示数据的内在结构。以下是谱聚类算法的详细训练过程:

步骤 1: 构建相似性图
  1. 选择相似性度量:首先,你需要选择一种度量数据点之间相似性的方法。常见的方法是使用高斯核函数或固定半径邻域。

     

    对于高斯核函数,相似性 𝑆(𝑖,𝑗)可以定义为:

  1. 其中 𝑥𝑖和 𝑥𝑗 是数据集中的两个点,𝜎σ是带宽参数,控制着相似性衰减的速度。

  2. 构建邻接矩阵:基于相似性度量,创建邻接矩阵 𝐴A,其中 𝐴(𝑖,𝑗)=𝑆(𝑖,𝑗)如果 𝑖i 和 𝑗j 是邻居,否则为 0。

步骤 2: 计算度矩阵和拉普拉斯矩阵
  1. 度矩阵:计算度矩阵 𝐷,它是一个对角矩阵,其中 𝐷(𝑖,𝑖) 是第 𝑖个节点的度,即 

  2. 拉普拉斯矩阵:使用度矩阵和邻接矩阵来构建拉普拉斯矩阵 𝐿L。常见的拉普拉斯矩阵定义有两种:未标准化的 𝐿=𝐷−𝐴和标准化的

步骤 3: 特征分解
  1. 求解特征向量:对拉普拉斯矩阵 𝐿L进行特征分解,找到 𝑘 个最小的非零特征值对应的特征向量。这些特征向量通常组成一个矩阵 𝑈。
步骤 4: 数据点映射
  1. 映射到特征空间:将数据点映射到由特征向量组成的 𝑘-维空间中,形成矩阵 𝑌=𝑈。
步骤 5: 聚类
  1. 执行聚类算法:在新的 𝑘-维空间中,使用 k-means 或其他聚类算法对数据点进行聚类。这一步骤将数据点分组到 𝑘 个簇中。
步骤 6: 映射回原始空间
  1. 结果映射:将聚类结果映射回原始数据空间,得到最终的聚类结果。
步骤 7: 评估和优化
  1. 评估聚类质量:使用适当的评估指标,如轮廓系数、互信息或归一化互信息,来衡量聚类的质量。

  2. 参数调优:根据评估结果,可能需要返回并调整相似性度量的参数(如 𝜎)或聚类数目 𝑘,以获得更好的聚类效果。

(四)、特点

  • 非参数化:谱聚类不需要提前确定聚类的形状,适用于各种形状和分布的数据集。
  • 全局最优:理论上,谱聚类能够找到全局最优的聚类结果,尽管实际应用中可能受到数值稳定性和计算资源的限制。
  • 计算效率:尽管谱聚类需要计算特征分解,但在适当的优化下,其计算效率仍可接受,尤其是对于稀疏图。

(五)、适用场景

  • 图像分割:谱聚类能够有效地处理图像数据,将其分割为多个连通区域。
  • 社交网络分析:可用于分析社交网络中的社区结构。
  • 生物信息学:在基因表达数据分析中用于识别不同的基因表达模式。
  • 计算机视觉:在物体识别和场景理解中用于特征聚类和分类。

(六)、扩展

谱聚类有许多变体和扩展,包括但不限于:

  • 随机游走谱聚类:使用随机游走矩阵而非标准化的拉普拉斯矩阵。
  • 核谱聚类:通过核函数将数据投影到高维空间,再进行谱聚类。
  • 多视图谱聚类:处理具有多个数据源或视角的问题,如多模态数据的聚类。
  • 半监督和主动学习下的谱聚类:利用少量标注数据来指导聚类过程,提高聚类精度。

三、总结

     聚类的一个关键优势是它能够处理复杂的数据分布,即使数据不是凸形或球形分布也能找到有意义的聚类。然而,它也存在一些挑战,比如需要选择合适的相似性度量和参数,以及在大规模数据集上可能面临的计算效率问题。在实际应用中,可能还需要考虑如何有效地存储和处理大型的邻接矩阵和拉普拉斯矩阵。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 09:40:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 09:40:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 09:40:01       45 阅读
  4. Python语言-面向对象

    2024-07-22 09:40:01       55 阅读

热门阅读

  1. 16、基于共享内存二叉树的LRU

    2024-07-22 09:40:01       14 阅读
  2. springboot集成kafka | 分布式消息发布和订阅系统

    2024-07-22 09:40:01       15 阅读
  3. shell脚本教程学习

    2024-07-22 09:40:01       13 阅读
  4. mybatis-config.xml中的environments是什么?

    2024-07-22 09:40:01       16 阅读
  5. 云原生:容器技术全解!

    2024-07-22 09:40:01       11 阅读
  6. 设计模式简述(一)

    2024-07-22 09:40:01       17 阅读
  7. PyQt5 自定义控件详细教程

    2024-07-22 09:40:01       14 阅读