8 聚类算法

目录

0 背景

1 Kmeans

1.1 聚类数量k的确定

2 DBSCAN

2.1 三个点

2.2 算法流程

 3 层次聚类

3.1 过程

4 基于分布的聚类:高斯混合模型


 

0 背景

        聚类算法是一种无监督学习技术,用于将数据集中的数据点划分为不同的组或簇,使得同一组内的数据点彼此相似,而不同组之间的数据点则有所区别。

        天下没有免费的午餐。没有所谓最好的聚类方法,通常是需要根据不同的问题,人工进行选择的。了解算法本身原理然后与真实数据结合起来考量。说白了就是衣服(算法)适不适合你先看看然后再试试。

聚类分析的整个过程包括四个基本步骤:

A. Feature Selection or Extraction (特征选择和提取)

        特征选择是确定最有效的原始特征子集用于聚类的过程。特征提取是将一个或多个输入特征转换为初始显著特征的过程。聚类过程高度依赖于此步骤。对特征的轻率剔除会增加内卷involution(involution: a function, transformation, or operator that is equal to its inverse),并可能导致额外的无关紧要的簇(clusters).

B. Clustering Algorithm Design or Selection (聚类算法的设计和选择)

        不可能定理指出,“没有一个单一的聚类算法可以同时满足数据聚类的三个基本公理,即scale-invariance (尺度不变性)、consistency (一致性) 和 richness (丰富性)。因此,不可能为在不同的科学、社交、医学等其它领域中建立一个通用的聚类方法框架。从而,通过对应用领域的认知来精确剔除该算法是非常重要的。通常,所有算法都基于不同的输入参数,例如聚类的数量,优化/构造标准,终止条件,邻近度等。额外设计或者剔除这些不同的参数和标准,以此来作为这个步骤的前提条件。

C. Cluster Validation (聚类验证)

        将不同的聚类算法用于同一数据集可以产生不同的结果。甚至是相同的算法,不同的参数也会产生不同的聚类结果。因此,必须验证或评估该聚类方法产生的结果。评估标准分为:

1)内部指标:内部指标是通过和它的数据进行比较来评估由聚类算法产生的聚类

2)外部指标:外部指标通过利用已知的知识(例如:类别标签)来评估聚类结果。

3)相对指标:顾名思义,该标准将结果与不同算法产生的其他结果进行比较。

D. Results Interpretation (结果解析)

        聚类过程的最后一步涉及聚类的展示。聚类的最终目的是为了让人们更了解原始数据,以便它们更有效地分析和解决难题。因为“Cluster(集群)”的概念无法精确地被定义,

1 Kmeans

        聚类原则:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。逐次计算各簇中心的值为新的中心值,迭代更新,直至簇中心位置不再改变或者达到最大迭代次数。

公式:

argmin J(c) = argmin\sum_{i=1}^{k}\left | x-c_{i} \right |_{2}^{2}

式中k是簇的个数,C为簇首(聚类中心)集合,共有K个簇首,x是簇中的样本。

算法流程:1 适当选择k个类的初始中心;
2 在第n次迭代中,对任意一个样本,求其到k个中心的距离,将该样本归到距离最短的中心所在的类/簇;
3 利用均值等方法更新该类的中心值;
4 对于所有的k个聚类中心,如果利用(2)(3)的迭代法更新后,聚类中心的位置保持不变,则迭代结束;否则,则继续迭代。

优点:

速度快,简单,容易理解。

缺点:

  1. 需要预先指定簇的数量 K:在实际应用中,往往难以事先确定最佳的簇数 K,选择不合适的 K 可能导致聚类效果不佳。

  2. 对初始中心点敏感:K-means 对初始簇中心的选择敏感,不同的初始中心可能导致不同的聚类结果。

  3. 只适用于凸形状的簇:K-means 对非凸形状的簇效果较差,可能会将非凸簇分割成多个凸簇。

  4. 无法处理噪声和离群值:K-means 对噪声和离群值敏感,这些异常值可能会影响聚类结果。

  5. 欧氏距离度量的限制:K-means 使用欧氏距离来度量数据点之间的相似性,对于非球形簇或具有不同密度的簇效果可能不佳。

1.1 聚类数量k的确定

        肘部法则(Elbow method):改变聚类数K,然后进行聚类,计算损失函数,拐点处即为推荐的聚类数 (即通过此点后,聚类数的增大也不会对损失函数的下降带来很大的影响,所以会选择拐点)。手肘法是一个经验方法,缺点就是不够自动化。

由图可见,K值越大,距离和越小;并且,当K=3时,存在一个拐点,就像人的肘部一样;当K (1,3)时,曲线急速下降;当K>3时,曲线趋于平稳。手肘法认为拐点就是K的最佳值。 

2 DBSCAN

        DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,它能够有效地识别任意形状的簇,并且可以处理噪声数据。超参数:邻域半径(eps)和最小点数(minPts)。

2.1 三个点

核心点:核心点的半径范围内的样本个数≥最少点数。明星选手。

边界点:边界点的半径范围内的样本个数小于最少点数大于0。边缘选手。

噪声点:噪声点的半径范围的样本个数为0。扫把星选手。

2.2 算法流程

  1. 选择核心点:如果一个点的eps-邻域内点数超过minPts,将其标记为核心点。

  2. 构建邻域链:对每个核心点,将它的eps-邻域内所有点(包括其他核心点)连接起来,形成一个聚类。
  3. 边界点的归属:将边界点分配给与之相连的核心点的聚类。
  4. 标记噪声:最后,未被归入任何聚类的点被标记为噪声。

2.3 优点缺点

优点

  1. 基于密度的聚类:DBSCAN 根据数据点周围的密度来确定簇的形状和大小,而不需要预先指定簇的数量。

  2. 能够处理噪声和离群值:DBSCAN 能够有效地识别噪声数据点,将其标记为噪声或边界点,而不将其分配给任何簇。

  3. 适用于不规则形状的簇:由于 DBSCAN 不受簇形状的限制,因此可以识别任意形状的簇,包括非凸形状的簇。

  4. 无需预先指定簇的数量:相比于 K-means 等需要预先指定簇数量的算法,DBSCAN 不需要事先知道簇的数量,因此更加灵活。

  5. 鲁棒性强:DBSCAN 对参数的选择相对鲁棒,对于不同密度和大小的簇能够给出合理的聚类结果。

  6. 高效性:DBSCAN 在处理大规模数据集时表现良好,其时间复杂度为 O(n log n)。

  7. 边界点和核心点:DBSCAN 将数据点分为核心点、边界点和噪声点,核心点是周围邻域内有足够密度的点,边界点是靠近核心点但自身密度不足的点。

缺点

        需指定最少点个数,半径(或自动计算半径)。

实战技巧:

  1. 数据探索:在调整参数之前,对数据进行彻底的探索,包括可视化和基础统计分析。
  2. 领域知识:利用领域知识来指导初步参数的选择。
  3. 迭代实验:进行一系列的实验,逐步调整参数,每次变化后都仔细分析聚类结果的变化。

 3 层次聚类

        层次法(Hierarchicalmethods):先计算样本之间的距离。每次将距离最近的点合并到同一个类。然后,再计算类与类之间的距离,将距离最近的类合并为一个大类。不停的合并,直到合成了一个类。其中类与类的距离的计算方法有:最短距离法,最长距离法,中间距离法,类平均法等。比如最短距离法,将类与类的距离定义为类与类之间样本的最短距离。

自下而上法:凝聚型层次聚类,就是一开始每个个体(object)都是一个类,然后根据linkage寻找同类,最后形成一个“类”。

自上而下法:分裂型层次聚类,就是反过来,一开始所有个体都属于一个“类”,然后根据linkage排除异己,最后每个个体都成为一个“类”。

3.1 过程

绝大多数层次聚类属于凝聚型层次聚类,它们只是在簇间相似度的定义上有所不同。 这里给出采用最小距离的凝聚层次聚类算法流程:

(1) 将每个对象看作一类,计算两两之间的最小距离;

(2) 将距离最小的两个类合并成一个新类;

(3) 重新计算新类与所有类之间的距离;

(4) 重复(2)、(3),直到所有类最后合并成一类。

优点:

1,距离和规则的相似度容易定义,限制少;

2,不需要预先制定聚类数;

3,可以发现类的层次关系;

4,可以聚类成其它形状

缺点:

1,计算复杂度太高;

2,奇异值也能产生很大影响;

3,算法很可能聚类成链状

4 基于分布的聚类:高斯混合模型

        高斯混合模型(GMM)是统计模型中的一颗璀璨之星,它为数据提供了一种复杂而又强大的表示方法。在机器学习的许多领域,从模式识别到图像处理,GMM都被广泛地采用和研究。它背后的核心思想是使用多个高斯分布的组合来拟合数据,这种方法的优越性在于其对数据的弹性拟合能力和生成性质。

  1. 概率模型:GMM 是一个概率模型,假设数据是由多个高斯分布组合而成的混合物。

  2. 灵活性:GMM 可以拟合各种形状的数据分布,因为它是多个高斯分布的线性组合。

  3. 软聚类:GMM 提供了软聚类(soft clustering)的能力,即每个数据点都可以属于不同簇的概率,而不是硬性地分配到一个簇。

  4. 参数化:GMM 的参数包括每个高斯分布的均值、协方差矩阵和混合系数,可以通过最大似然估计或期望最大化算法(EM 算法)来估计这些参数。

  5. 处理概率密度不均匀的数据:GMM 可以很好地处理数据的概率密度不均匀的情况,因为每个高斯分布可以捕捉数据的局部特征。

  6. 模型选择:GMM 可以通过信息准则(如赤池信息准则 AIC、贝叶斯信息准则 BIC)来选择最优的模型复杂度。

  7. 生成数据:GMM 可以用于生成新的数据点,通过从每个高斯分布中随机采样并根据混合系数进行加权求和。

  8. 应用领域:GMM 在图像分割、异常检测、聚类分析等领域有着广泛的应用。

5 评估指标 

  1. 轮廓系数(Silhouette Score):轮廓系数结合了簇内数据点的紧密度和簇间数据点的分离度,取值范围在[-1, 1]之间,值越接近1表示聚类效果越好。

  2. Calinski-Harabasz 指数:Calinski-Harabasz 指数是通过簇内数据点的紧密度和簇间数据点的分离度的比值来评估聚类的紧密度,值越大表示聚类效果越好。

  3. Davies-Bouldin 指数:Davies-Bouldin 指数通过计算簇内数据点之间的平均距离和簇间中心点之间的距离来评估聚类的分离度,值越小表示聚类效果越好。

  4. 互信息(Mutual Information):互信息用于度量聚类结果与真实标签之间的相似度,值越大表示聚类结果与真实标签的一致性越高。

  5. 调整兰德指数(Adjusted Rand Index):调整兰德指数用于度量聚类结果与真实标签之间的相似度,值范围在[-1, 1]之间,值越接近1表示聚类结果与真实标签的一致性越高。

  6. 互信息增益(Normalized Mutual Information):互信息增益用于度量聚类结果与真实标签之间的相似度,值范围在[0, 1]之间,值越大表示聚类结果与真实标签的一致性越高。



5一文详解高斯混合模型原理 - 知乎

聚类的评价指标 - 知乎

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

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

相关文章

jenkins转载文本

基于Docker容器DevOps应用方案 企业业务代码发布系统 一、企业业务代码发布方式 1.1 传统方式 以物理机或虚拟机为颗粒度部署部署环境比较复杂,需要有先进的自动化运维手段出现问题后重新部署成本大,一般采用集群方式部署部署后以静态方式展现 1.2 容…

设计模式之代理模式ProxyPattern(六)

一、代理模式介绍 1、什么是代理模式? 代理模式是一种结构型设计模式,它允许为其他对象提供一个替代品或占位符,以控制对这个对象的访问。 2、代理模式的角色构成 抽象主题(Subject):定义了真实主题和代…

R语言的学习——day1

将数据框中某一列数据改成行名 代码 结果

用 PyTorch 构建液态神经网络(LNN)

用 PyTorch 构建液态神经网络(LNN) 文章目录 什么是液态神经网络为什么需要液态神经网络LNN 与 RNN 的区别用 PyTorch 实现 LNNStep 1. 导入必要的库Step 2. 定义网络架构Step 3. 实现 ODE 求解器Step 4. 定义训练逻辑 LNN 的缺陷总结 什么是液态神经网络…

Linux的vim下制作进度条

目录 前言: 回车和换行有区别吗? 回车和换行的区别展示(这个我在Linux下演示) 为什么会消失呢? 回车和换行的区别 为什么\r和\n产生的效果不同? 打印进度条: (1)打印字符串 …

【Mac】mac 安装 prometheus 报错 prometheus: prometheus: cannot execute binary file

1、官网下载 Download | Prometheus 这里下载的是prometheus-2.51.2.linux-amd64.tar.gz 2、现象 解压之后启动Prometheus 启动脚本: nohup ./prometheus --config.fileprometheus.yml > prometheus.out 2>&1 & prometheus.out日志文件&#xff…

量子城域网建设设备系列(一):光量子交换机

通过一段时间的讨论,我们已经对城域网的建设有了一定的基础概念,从本文开始,我们将逐步开始讨论量子城域网建设过程中的设备。本文我们讨论光量子交换机。 1.光量子交换机的基本概念 如下图为两个国产光量子交换机,这两款设备均用…

IDEA 中 git fetch 验证报错 The provided password or token is incorrect

参考链接: 【GitLab】-HTTP Basic: Access denied.remote:You must use a personal access token_http basic: access denied. the provided password o-CSDN博客 idea使用gitLab报错:remote: HTTP Basic: Access denied_idea remote: http basic: acc…

【webrtc】MessageHandler 3: 基于线程的消息处理:以sctp测试为例

消息处理可以用于模拟发包处理G:\CDN\rtcCli\m98\src\net\dcsctp\socket\dcsctp_socket_network_test.cc 这个实现中,onMessage还是仅对了一种消息进行处理,就是接收则模式下,打印带宽。当然,可能程序有多个消息,分别在不同的onmessage中执行?SctpActor:以一个恒定的速率…

【webrtc】MessageHandler 4: 基于线程的消息处理:以Fake 收发包模拟为例

G:\CDN\rtcCli\m98\src\media\base\fake_network_interface.h// Fake NetworkInterface that sends/receives RTP/RTCP packets.虚假的网络接口,用于模拟发送包、接收包单纯仅是处理一个ST_RTP包 消息的id就是ST_RTP 类型,– 然后给到目的地:mediachannel处理: 最后消息消…

Django后台项目开发实战五

完成两个功能: HR 可以维护候选人信息面试官可以录入面试反馈 第五阶段 创建 interview 应用,实现候选人面试评估表的增删改功能,并且按照页面分组来展示不同的内容,如候选人基础信息,一面,二面的面试结…

思考!思考!jmeter线程数≠用户并发数

最近又在搞性能测试了,相较于之前的写脚本出数据就完事,这次深入的思考了一下测试出来的指标,到底有什么意义??? 绞尽脑汁思考了好几天,终于有了点思路,写出来与大家分享&#xff0…