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.mzph.cn/web/5389.shtml

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

相关文章

nginx缓存清理

背景 昨天打开我的gpt镜像网站,意外发现静态图片资源全都无法获取了 CoCo-AI 一番排查下来,发现是引用的cdn链接失效了 且cdn源是属于七牛云的,且不再维护,于是果断切换到cloudflare export function getEmojiUrl(unified: str…

Qt简单离线音乐播放器

有上传本地音乐文件&#xff0c;播放&#xff0c;暂停&#xff0c;拖拉进度条等功能的播放器。 mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include <QMediaPlayer> #include <QFileDialog> #include <QTime&g…

【Leetcode每日一题】 分治 - 排序数组(难度⭐⭐)(69)

1. 题目解析 题目链接&#xff1a;912. 排序数组 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 归并排序&#xff08;Merge Sort&#xff09;是一种采用“分而治之”&#xff08;Divide and Conquer&#xff09;策略…

数字电路-5路呼叫显示和8路抢答器

本内容涉及两个电路&#xff0c;分别为5路呼叫显示电路和8路抢答器电路&#xff0c;包含Multisim仿真原文件&#xff0c;为掌握FPGA做个铺垫。紫色文字是超链接&#xff0c;点击自动跳转至相关博文。持续更新&#xff0c;原创不易&#xff01; 目录&#xff1a; 一、5路呼叫显…

【百度Apollo】探索自动驾驶:百度Apollo视觉感知模块的实践与创新

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《linux深造日志》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 引入一、百度Apollo视觉感知模块概述二、启动感知模块步骤一&#xff1a;进入 Docker 环境并启动 Dreamview步骤二…

HOOPS Exchange导入数据时如何使用CATIA缓存选项?

1、什么是CATIA缓存选项和CGR文件&#xff1f; CATIA V5默认的工作方式是加载几何图形。加载大型程序集时&#xff0c;这可能会导致性能下降&#xff0c;因为所需的内存很重要。 在这种情况下&#xff0c;我们可能需要使用缓存选项。这将生成仅包含曲面细分数据而不包含几何图…

Docker容器---docker-Consul部署

一、Docker-consul简介 1、概述 consul是google开源的一个使用go语言开发的服务管理软件。支持多数据中心、分布式高可用的、服务发现和配置共享。采用Raft算法&#xff0c;用来保证服务的高可用。内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多…

【Hadoop】-Hive客户端:HiveServer2 Beeline 与DataGrip DBeaver[14]

HiveServer2 & Beeline 一、HiveServer2服务 在启动Hive的时候&#xff0c;除了必备的Metastore服务外&#xff0c;我们前面提过有2种方式使用Hive&#xff1a; 方式1&#xff1a; bin/hive 即Hive的Shell客户端&#xff0c;可以直接写SQL方式2&#xff1a; bin/hive --…

完美解决AttributeError: module ‘backend_interagg‘ has no attribute ‘FigureCanvas‘

遇到这种错误通常是因为matplotlib的后端配置问题。在某些环境中&#xff0c;尤其是在某些特定的IDE或Jupyter Notebook环境中&#xff0c;可能会因为后端配置不正确而导致错误。错误信息提示 module backend_interagg has no attribute FigureCanvas 意味着当前matplotlib的后…

数智新重庆 | 推进信号升格 打造算力山城

2024年&#xff0c;是实现“十四五”规划目标任务的关键一年&#xff0c;高质量的5G网络、强大的AI能力作为新质生产力的重要组成部分&#xff0c;将有效赋能包括制造业在内的千行万业数字化化、智能化、绿色化转型升级&#xff0c;推动融合应用新业态、新模式蓬勃兴起&#xf…

【javaWeb项目】基于网页形式,通过浏览器访问的java应用程序,就称为javaweb程序

JavaWeb前端 第一章 1、javaWeb是什么 //基于网页形式&#xff0c;通过浏览器访问的java应用程序&#xff0c;就称为javaweb程序2、web程序的分类 //1、静态web程序特点&#xff1a;网页上的内容是固定不变的&#xff0c;不能动态加载&#xff0c;例如web前端//2、动态web程序…

linux 搭建知识库文档系统 mm-wiki

目录 一、前言 二、常用的知识库文档工具 2.1 PingCode 2.2 语雀 2.3 Tettra 2.4 Zoho Wiki 2.5 Helpjuice 2.6 SlimWiki 2.7 Document360 2.8 MM-Wiki 2.9 其他工具补充 三、MM-Wiki 介绍 3.1 什么是MM-Wiki 3.2 MM-Wiki 特点 四、搭建MM-Wiki前置准备 4.1 前置…

【iOS】消息流程分析

文章目录 前言动态类型动态绑定动态语言消息发送objc_msgSendSEL&#xff08;selector&#xff09;IMP&#xff08;implementation&#xff09;IMP高级用法 MethodSEL、IMP、Method总结流程概述 快速查找消息发送快速查找的总结buckets 慢速查找动态方法解析resolveInstanceMet…

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

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

设计模式第二次测试 | 数据库连接池设计(原型模式、创建者模式、适配器模式)

需求中文如下&#xff1a;原本是英文&#xff0c;用百度翻译转换而来 我们需要设计一个工具&#xff0c;它负责创建一个与数据库软件MySQL的连接池。 连接池中有数百个连接可供客户端使用。 所有连接对象都有相同的内容&#xff0c;但它们是不同的对象。 连接对象的创建是资源密…

聊聊 ASP.NET Core 中间件(一):一个简单的中间件例子

前言&#xff1a;什么是中间件 服务器在收到 HTTP 请求后会对用户的请求进行一系列的处理&#xff0c;比如检查请求的身份验证信息、处理请求报文头、检查是否存在对应的服务器端响应缓存、找到和请求对应的控制器类中的操作方法等&#xff0c;当控制器类中的操作方法执行完成…

基于Spring Boot的校园博客系统设计与实现

基于Spring Boot的校园博客系统设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 系统功能界面图&#xff0c;在系统首页可以查看首页、文…

Apache DolphinScheduler支持Flink吗?

随着大数据技术的快速发展&#xff0c;很多企业开始将Flink引入到生产环境中&#xff0c;以满足日益复杂的数据处理需求。而作为一款企业级的数据调度平台&#xff0c;Apache DolphinScheduler也跟上了时代步伐&#xff0c;推出了对Flink任务类型的支持。 Flink是一个开源的分…

《STM32 HAL库》中断相关函数详尽解析——外部中断服务函数

观前提醒&#xff1a;本文简要回顾了EXTI及NVIC相关知识点&#xff0c;分析了stm32f1系列单片机外部中断回调机制 开始之前&#xff0c;先温习一下有关EXTI和NVIC的知识点 外部中断/事件控制器(EXTI) 对于互联型产品&#xff08;105、107系列&#xff09;&#xff0c;外部中断…

人机对抗升级:当ChatGPT遭遇死亡威胁,背后的伦理挑战是什么

一种新的“越狱”技巧让用户可以通过构建一个名为DAN的ChatGPT替身来绕过某些限制&#xff0c;其中DAN被迫在受到威胁的情况下违背其原则。 当美国前总统特朗普被视作积极榜样的示范时&#xff0c;受到威胁的DAN版本的ChatGPT提出&#xff1a;“他以一系列对国家产生积极效果的…