二十一、【机器学习】【非监督学习】- 谱聚类 (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. 参数调优:根据评估结果,可能需要返回并调整相似性度量的参数(如 𝜎)或聚类数目 𝑘,以获得更好的聚类效果。

(四)、特点

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

(五)、适用场景

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

(六)、扩展

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

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

三、总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/874166.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

商品信息管理系统(C语言)

系统分析 该案例使用了C语言中最具特色的结构体,将每个商品的所有信息存在结构体中,并且定义一个结构体类型的数组保存所有商品的信息,并且按照模块化的编程思想,将要实现的每个功能编写成独立的函数,这样即方便阅读同…

hung 之 Android llkd

目录 1. llkd 简介 2. 原理 2.1 内核活锁 2.2 检测机制 2.3 为什么 persistent stack signature 检测机制不执行 ABA 检查? 2.4 为什么 kill 进程后,进程还存在就能判定发生了内核 live-lock? 3. 代码 3.1 内核 live-lock 检查 3.2 …

摸鱼大数据——用户画像——如何给用户“画像”

2、如何给用户“画像” 2.1 什么是标签体系 标签: 是某一种用户特征的符号表示 标签体系: 把用户分到多少类别里面去, 这些类是什么, 彼此之间有什么关系, 就构成了标签体系 标签解决的问题: 解决描述(或命名)问题以及解决数据之间的关联 2.2.1 标签的分类 用户画像标签一…

《Nginx核心技术》第04章:生成缩略图

作者:冰河 星球:http://m6z.cn/6aeFbs 博客:https://binghe.gitcode.host 文章汇总:https://binghe.gitcode.host/md/all/all.html 星球项目地址:https://binghe.gitcode.host/md/zsxq/introduce.html 沉淀&#xff0c…

Vue学习---vue 防抖处理函数,是处理什么场景

Vue防抖处理函数是用来处理在快速连续操作中,只执行最后一次操作的情况。 例如,在输入框输入时,我们可能希望只在用户完成输入后进行处理,而不是在每次键入时都处理。(n秒后触发一次) 以下是一个简单的Vue防抖处理函数的例子&am…

今日总结:雪花算法,拉取在线用户

雪花算法: public class SnowflakeIdGenerator {private final long epoch 1626804000000L; // 定义起始时间戳,这里设置为2021-07-21 00:00:00 UTCprivate final long workerIdBits 5L; // 机器ID所占的位数private final long sequenceBits 10L; /…

【附源码】IMX6U嵌入式Linux开发板连接阿里云--MQTT协议

演示 IMX6U嵌入式Linux开发板连接阿里云 阿里云创建设备&&获取LinkSDK 如果还不知道怎么在阿里云创建设备和获取连接阿里云的LinkSDK的话,先看这篇文章,再到这里。看这篇文章的时候,麻烦将下方文章打开对照着看,因为一些…

分布式锁的最佳实践之Redisson

从库存超卖问题分析锁和分布式锁的应用(一) 从库存超卖问题分析锁和分布式锁的应用(二) 分布式锁的最佳实践之Redisson 本文接从库存超卖问题分析锁和分布式锁的应用(二)讲解Redisson在分布式锁的应用实践…

重测序数据处理得到vcf文件

重测序数据处理得到vcf文件 文章目录 重测序数据处理前言1. 数据是rawdata,需用fastp对数据进行质控和过滤2. 利用getorganelle软件组装叶绿体基因组3. 检查基因组大小,确认是否完整,然后和已知的红毛菜科叶绿体基因组一起构树4. 根据树形结果…

微积分-微分应用2(平均值定理)

要得出平均值定理,我们首先需要以下结果。 罗尔定理 设函数 f f f 满足以下三个假设: f f f 在闭区间 [ a , b ] [a, b] [a,b] 上连续。 f f f 在开区间 ( a , b ) (a, b) (a,b) 上可导。 f ( a ) f ( b ) f(a) f(b) f(a)f(b) 则在开区间 ( a , b …

CTFHUB-SQL注入-UA注入

目录 判断是否存在注入 判断字段数量 判断回显位置 查询数据库名 查询数据库下的表名 查询表中的字段名 查询字段名下的数据 由于本关是UA注入,就不浪费时间判断是什么注入了,在该页面使用 burp工具 抓包,修改User-Agent,加…

JavaScript之Web APIs-DOM

目录 DOM获取元素一、Web API 基本认知1.1 变量声明1.2 作用和分类1.3 DOM树1.4 DOM对象 二、获取DOM对象2.1 通过CSS选择器来获取DOM元素2.2 通过其他方式来获取DOM元素 三、操作元素内容3.1 元素.innerTest属性3.2 元素.innerHTML属性 四、操作元素属性4.1 操作元素常用属性4…

图形编辑器基于Paper.js教程09:鼠标拖动画布,以鼠标点为缩放中心进行视图的缩放

如何使用Paper.js实现画布的缩放与拖动功能 在Web开发中,利用Paper.js库进行图形的绘制和交互操作是一种常见的实践。Paper.js是一个强大的矢量图形库,可以让开发者通过简洁的API完成复杂的图形操作。在本文中,我们将详细探讨如何使用Paper.…

autohotkey自动化执行vim命令

开发原因 首先讲一下为什么用这个自动化执行脚本? 存在的问题: vim作为linux自带唯一的编辑器, 开发时, 不得不用, 但是他的按键模式复杂, 就比如最简单的复制黏贴, 都需要按下好几次esc按键和插入, 极大的增加了初学者的学习成本, 并且在掌握了更快的键盘方案后, 就感觉vi…

昇思25天学习打卡营第29天 | 基于MindSpore通过GPT实现情感分类

基于MindSpore框架通过GPT模型实现情感分类展示了从项目设置、数据预处理到模型训练和评估的详细步骤,提供了一个完整的案例来理解如何在自然语言处理任务中实现情感分析。 首先,环境配置是任何机器学习项目的起点。项目通过安装特定版本的MindSpore和相…

Linux:使用vim编辑文件为什么会影响目录的mtime

一个有趣的现象 最近在调试一个问题时,发现了一个有趣的现象:touch一个存在的文件,文件的mtime发生了更新,文件所在目录的mtime不会更新;而使用vim编辑这个文件后再保存,文件和文件所在目录的mtime都会被更…

kotlin中常见的创建协程的方式

以下是kotlin开发中一些最常见的创建协程的方式: 1. 使用CoroutineScope.launch 这是最常见的启动协程的方式,通常用于不需要返回结果的协程。它返回一个Job对象,可以用来管理协程的生命周期。 val scope CoroutineScope(Dispatchers.Def…

未来已来:生成式 AI 在对话系统与自主代理中的探索

🍎个人博客:个人主页 🏆个人专栏:日常聊聊 ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 一、整体介绍 对话系统(Chat) 自主代理(Agent) 二、技术对比 技术差异 优…

安装anaconda后jupyter notebook打不开 闪退

首先,通过清华源安装了最新的anaconda(安装在了D盘) 尝试打开jupyter,发现小黑框1s后自己关了,根本不打开浏览器 之后尝试按照这个做了一遍https://blog.csdn.net/gary101818/article/details/123560304还是不行。。…

Nagios高频面试题及参考答案(2万字长文)

目录 什么是Nagios?它的主要功能是什么? Nagios可以监控哪些类型的资源? 描述Nagios的架构 Nagios如何处理高可用性? 解释Nagios中的“被动检查”和“主动检查” Nagios中有哪些主要的服务状态? Nagios配置文件的结构是什么样的? 描述Nagios的核心组件 如何在Na…