聚类算法以及聚类算法模型评估的介绍

news2025/1/12 6:13:07

一、聚类算法的介绍

1.什么是聚类算法
  • 聚类算法是一类无监督学习算法,用于将数据集中的对象分组(或聚类)成具有相似性的集合。聚类算法不依赖于预定义的类别标签,而是根据数据的内在特点将相似的数据点聚集在一起。
  • 聚类算法的目标是通过最大化组内的相似性和最小化组间的差异来实现聚类。聚类算法可以帮助我们发现数据中的潜在结构、识别相似的数据点、进行数据压缩和预处理等。
2.聚类算法在现实中的应用
  1. 市场细分:聚类算法可以帮助市场营销人员将消费者分成不同的细分市场,根据不同的需求和行为模式进行定向营销和个性化推荐。
  2. 图像分析:聚类算法可用于图像分割和图像检索,将相似的图像分组在一起或识别相似的特征,用于图像分类、图像搜索和图像压缩等任务。
  3. 自然语言处理:聚类算法可以用于文本聚类和主题建模,将相似的文本或主题聚集在一起,用于文本分类、信息检索和文本摘要等应用。
  4. 生物信息学:聚类算法可用于基因表达数据分析,通过对基因表达模式的聚类,可以发现基因之间的关联性、预测基因功能和识别疾病模式等。

聚类算法在许多领域都有重要的作用,帮助人们从大规模和复杂的数据中发现模式、提取信息和做出决策。

3.聚类算法与分类算法最大的区别
  1. 目标:聚类算法是无监督学习方法,其目标是将数据集中的对象分成不同的组(簇),使得同一组内的对象相似性较高,不同组之间的相似性较低。而分类算法是有监督学习方法,其目标是将数据分为预定义的类别,通过学习从输入特征到类别标签的映射关系。
  2. 标签信息:聚类算法不需要事先知道对象的标签信息,它根据数据内在的相似性来进行分组。而分类算法的训练数据集需要包含标签信息,即每个样本都有对应的类别标签。
  3. 监督性:聚类算法不依赖于监督信息,它在没有预定义的类别标签下进行聚类。而分类算法依赖于监督信息,通过已知的类别标签进行模型训练和预测。
  4. 输出结果:聚类算法的输出是数据的分组结果,即每个数据点所属的簇或簇的分配情况。而分类算法的输出是对新样本的预测类别标签。
  5. 应用场景:聚类算法常用于数据挖掘、图像分析、市场细分等领域,帮助发现数据的内在结构和模式。分类算法常用于预测、识别和分类任务,例如垃圾邮件过滤、图像分类和疾病诊断等。

聚类算法也可以作为分类算法的预处理步骤,帮助对数据进行特征提取和降维,以改善分类的性能。

4.聚类算法(KMeans)的API
  • sklearn.cluster.KMeans(n_cluster=8)
    • 参数:
      • n_cluster:要聚类的类别数
    • 方法:
      • estimator.fit(x)
      • estimator.predict(x)
      • estimator.fit_predict(x)
        • 计算聚类中心并预测每个样本属于哪个类别,相当于先调用fit(x),然后再调用predict(x)
5.聚类算法(KMeans)实现流程
  1. 选择聚类数目:

    确定要将数据集分成的聚类数目k。

  2. 初始化聚类中心:

    随机选择k个数据点作为初始的聚类中心,或使用其他初始化方法。

  3. 迭代聚类过程:

    进行以下步骤,直到满足终止条件(例如达到最大迭代次数或聚类中心的变化小于某个阈值):

    • 分配样本到最近的聚类中心:计算每个数据点与各个聚类中心的距离,将数据点分配给距离最近的聚类中心。
    • 更新聚类中心:对于每个聚类,计算其所包含数据点的均值,将均值作为新的聚类中心。
  4. 聚类结果:得到最终的聚类结果,每个数据点都被分配到一个聚类中心。

K-means算法对初始聚类中心的选择比较敏感,不同的初始选择可能会导致不同的聚类结果。为了克服这个问题,可以尝试多次运行K-means算法,每次使用不同的初始聚类中心,并选择聚类结果最好的一次。

二、模型评估

1.误差平方和(SSE):

误差平方和(Sum of Squared Errors,SSE)是一种常用的评估指标,用于衡量聚类算法(如K-means)的聚类质量。它的计算原理如下:

  1. 首先,对于每个数据点,计算其与所属聚类中心之间的欧氏距离。
  2. 对于每个数据点,将其与所属聚类中心的欧氏距离平方,得到该数据点的误差平方。
  3. 将所有数据点的误差平方求和,得到总的误差平方和(SSE)。

SSE的计算可以表示为以下公式:
S S E = Σ ( d i s t a n c e ( p o i n t , c e n t e r ) 2 ) SSE = Σ (distance(point, center)²) SSE=Σ(distance(point,center)2)
其中,distance(point, center)表示数据点与所属聚类中心之间的欧氏距离,Σ表示对所有数据点求和。

SSE评估的原理是,当聚类效果较好时,同一聚类中的数据点应该相互靠近,与其他聚类中的数据点相对较远。因此,同一聚类中的数据点与其所属聚类中心的距离应该较小,导致误差平方较小。而不同聚类中的数据点与其所属聚类中心的距离较大,导致误差平方较大。因此,SSE较小表示聚类效果较好,各个聚类紧密且分离明显

2.“肘”方法(Elbow method)–K值确定

在这里插入图片描述

"肘"方法(Elbow method)是一种常用的方法,用于选择K-means聚类算法中最佳的聚类数目K。如上图所示,K=3这个拐点是最佳聚类数目。其评估原理如下:

  1. 首先,我们尝试不同的聚类数目K,例如从K=1开始逐渐增加。
  2. 对于每个K值,我们计算聚类算法得到的SSE(误差平方和)。
  3. 绘制K值与对应的SSE之间的折线图。
  4. 观察折线图的形状,寻找一个拐点,类似于手肘的形状。这个拐点对应的K值就是"肘",代表着聚类数目的最佳选择。

"肘"方法的目标是找到一个合适的聚类数目K,使得增加K值之后,SSE值的下降趋势发生明显的改变,即出现一个拐点。这个拐点对应的K值即是最佳的聚类数目,可以提供合理的聚类解决方案。

3.轮廓系数法(Silhouette coefficient)

轮廓系数(Silhouette coefficient)是一种常用的聚类算法评估方法,用于衡量聚类结果的质量和紧密度。其评估原理如下:

  1. 对于每个数据点,计算以下两个值:
    • a(i):数据点i与同一簇内其他数据点的平均距离(与簇内其他点的相似度)。
    • b(i):数据点i与最近的不同簇中的数据点的平均距离(与其他簇的相异度)。
  2. 对于每个数据点i,计算其轮廓系数:
    • s(i) = (b(i) - a(i)) / max(a(i), b(i))
  3. 计算整个数据集的平均轮廓系数:
    • S = sum(s(i)) / n

轮廓系数的取值范围为[-1, 1],其中:

  • 接近1表示数据点与其所属簇内的其他数据点相似度高且与其他簇的相异度较大,聚类结果较好。
  • 接近-1表示数据点与其所属簇内的其他数据点相似度低且与其他簇的相异度较小,聚类结果较差。
  • 接近0表示数据点与其所属簇内的其他数据点相似度和与其他簇的相异度相近,聚类结果不明显。

通过计算整个数据集的平均轮廓系数S,可以评估整体聚类结果的质量。较高的平均轮廓系数表示聚类结果较好,各个簇之间紧密且分离明显;较低的平均轮廓系数表示聚类结果较差,各个簇之间重叠程度较高。

  • 聚类算法的优点:

    可以考虑每个数据点与其所属簇内其他数据点的相似度以及与其他簇的相异度,提供了对聚类质量的综合评估。

  • 聚类算法的缺点:

    然而,它也存在一些限制,如对于不规则形状的聚类结果评估可能不准确,并且对于聚类数目的选择没有明确的指导。

4.CH系数(Calinski-Harabasz coefficient)

CH系数(Calinski-Harabasz coefficient)是一种聚类算法评估方法,用于衡量聚类结果的紧密度和分离度。其评估原理如下:

  1. 对于聚类结果,计算簇内离散度(intra-cluster dispersion)和簇间离散度(inter-cluster dispersion)。

  2. 簇内离散度度量了簇内数据点之间的相似程度,可以使用平均欧氏距离、平均余弦相似度等。

  3. 簇间离散度度量了不同簇之间的差异程度,可以使用欧氏距离、余弦相似度等。

  4. 计算CH系数:

    • CH = (B / (k - 1)) / (W / (n - k))

    其中,B为簇间离散度的总和,W为簇内离散度的总和,k为聚类数目,n为数据点总数。

CH系数的取值范围为[0, +∞],较大的CH系数表示聚类结果较好,簇内离散度小、簇间离散度大,簇与簇之间分离明显。较小的CH系数表示聚类结果较差,簇内离散度大、簇间离散度小,簇与簇之间重叠程度高。

然而,CH系数对于聚类形状和分布的偏好可能存在一定的偏差,因此在实际应用中,还需要结合其他评估指标和领域知识来进行综合评估和选择最佳的聚类结果。

  • CH需要达到的目的:

    用尽量少的类别聚类尽量多的样本,同时获得较好的聚类效果

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

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

相关文章

分布式网络通信框架(三)——protobuf使用案例

例子1 test.proto文件如下: syntax "proto3"; // 声明了protobuf版本package fixbug; // 声明了代码所在的包(生成C代码后就是namespace 名字)// 定义登录消息类型 message LoginRequest {string name 1; // 1 代表name是这个m…

详解uni-app项目运行在安卓真机调试

详解uni-app项目运行在安卓真机调试 uni-app项目运行在安卓真机调试 文章目录 详解uni-app项目运行在安卓真机调试前言为什么要用真机调试?真机调试操作步骤总结 前言 UNI-APP学习系列之详解uni-app项目运行在安卓真机调试 为什么要用真机调试? 因为安…

mybatis-plus实现非法sql拦截(防止全表更新与删除)

文章目录 什么是非法sql:拦截的意义是:使用:1、在pom文件中添加依赖2、注入MybatisPlusInterceptor类,并配置BlockAttackInnerInterceptor拦截器 测试: 什么是非法sql: 不带where子句的delete和update&…

C++反向迭代器

C反向迭代器 📟作者主页:慢热的陕西人 🌴专栏链接:C 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 本博客主要内容介绍反向迭代器的概念和模拟实现一个通用的反向…

HTB-Escape

HTB-Escape 信息收集立足sql_svc -> RyanRyan -> Administrator扩展NTLM简单介绍 信息收集 可以从中获取两个域名。 看看 rpc服务是否有可以收集的信息。 看看samba。 rpc的Public共享文件有一个关于SQL Server的pdf。 阅读它! 从中能得到几个用户名…

unix环境高级编程 第一章 UNIX基础知识 Go实现代码

ls命令的Go语言实现 package mainimport ("fmt""os" )func main() {if len(os.Args) ! 2 {panic("参数数量不足")}targetPath : os.Args[1]if dirList, err : os.ReadDir(targetPath); err nil {for _, dirInfo : range dirList {fmt.Println(…

SpringBoot集成ElasticSearch

文章目录 前言一、ElasticSearch本地环境搭建二、SpringBoot整合ElasticSearch1.pom中引入ES依赖2.application.yaml配置elasticsearch3.ElasticSearchClientConnect连接ES客户端工具类4.ElasticSearchResult封装响应结果5.Person实体类6.Person实体类7.ElasticsearchControlle…

OS之磁盘调度算法

目录 一、先来先服务(FCFS) 基本思想 案例 二、最短寻道时间优先(SSTF) 基本思想 案例 饥饿现象 三、扫描算法(SCAN) 基本思想 案例 四、循环扫描算法(CSCAN) 基本思想 案例 一、先来先服务(FCFS) 基本思想 根据进程请求访问磁盘的先后次序来进行调度 案例 二、…

数据结构与算法04:队列

目录 什么是队列? 循环队列 双端队列 阻塞队列 队列的应用场景 每日一练 什么是队列? 在 上一篇文章 中讲述了栈:先进后出就是栈,队列刚好相反,先进先出的数据结构就是队列,还是拿纸箱子来举例&…

《数据库应用系统实践》------ 校友会信息系统

系列文章 《数据库应用系统实践》------ 校友会信息系统 文章目录 系列文章一、需求分析1、系统背景2、 系统功能结构(需包含功能结构框图和模块说明)3.系统功能简介 二、概念模型设计1.基本要素(符号介绍说明&#x…

DJ6-6/7 文件共享和访问控制、文件保护

目录 6.6 文件共享和访问控制 1、同时存取 2、存取权限 3、文件共享的实现 6.6.1 基于索引结点的共享方式 1、基本思想 2、具体操作 6.6.2 利用符号链接实现文件共享 6.6.3 利用 URL 实现文件共享 6.7 文件保护 6.6 文件共享和访问控制 文件共享的有效控制涉及…

腾讯云服务器可用区是什么?怎么选择随机吗?

腾讯云服务器可用区什么意思?可用区(Zone)是指腾讯云在同一地域内电力和网络互相独立的物理数据中心,一个可用区故障不会影响另一个可用区的正常运行,所以可用区用于构建高容灾、高可靠性应用。腾讯云服务器网来详细说…

如何在华为OD机试中获得满分?Java实现【截取字符串】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

PCA主成分分析 | 机器学习

1、概述(Principal componet analysis,PCA) 是一种无监督学习方法,是为了降低特征的维度。将原始高维数据转化为低维度的数据,高维数据指的是数据的特征维度较多,找到一个坐标系,使得这些数据特征映射到一个二维或三维的坐标系中…

Python爬虫教程:如何爬取教育漏洞报告平台中的漏洞报告?

部分数据来源:ChatGPT 引用 在本教程中,我们将使用 Python 语言和 requests、lxml 库来分析和爬取教育漏洞报告平台的数据。 1. 爬取网站数据 首先,我们需要从教育漏洞报告平台上获取需要的数据。我们可以通过 requests 库向特定网址发送请求,获取响应内容。 import req…

路径规划算法:基于布谷鸟优化的路径规划算法- 附代码

路径规划算法:基于布谷鸟优化的路径规划算法- 附代码 文章目录 路径规划算法:基于布谷鸟优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化算法…

数字信号的基本运算——线性卷积(相关)和圆周卷积(相关)

简介 在介绍卷积和相关运算之前,需要先认识一些更加基本的运算 翻折 设某一序列x(n),则x(-n)是以n0的纵轴为对称轴,将x(n)加以翻折得到的 移位 设某一序列x(n),m为正整数,x(n-m)表示x(n)逐项依次延时&#xff08…

《数据库应用系统实践》------ 超市销售管理系统

系列文章 《数据库应用系统实践》------ 超市销售管理系统 文章目录 系列文章一、需求分析1、系统背景2、 系统功能结构(需包含功能结构框图和模块说明)3.系统功能简介 二、概念模型设计1.基本要素(符号介绍说明&…

数据大航海时代,奇安信如何构筑数据安全的“天盾”?

你知道你的数据正在“被动”泄露吗? 随着ChatGPT技术的快速落地,数据安全面临的挑战越来越多。数据安全供应商Cyberhaven近期发布的一份研究显示,在2023年初的一周内,每十万名员工中机密业务数据被输入ChatGPT199次。用户可能没有…

C Primer Plus第十章编程练习答案

学完C语言之后,我就去阅读《C Primer Plus》这本经典的C语言书籍,对每一章的编程练习题都做了相关的解答,仅仅代表着我个人的解答思路,如有错误,请各位大佬帮忙点出! 1.修改程序清单10.7的rain.c程序&…