深度神经网络——什么是 K 均值聚类?

news2025/1/13 3:08:44

K 均值聚类

K 均值聚类是 无监督学习在所有无监督学习算法中,K 均值聚类可能是使用最广泛的,这要归功于它的强大功能和简单性。 K-means 聚类到底是如何工作的?

简而言之,K 均值聚类的工作原理是 创建参考点(质心) 对于所需的班级数量,然后 将数据点分配给类簇 基于最接近的参考点。 虽然这是 K 均值聚类的快速定义,但让我们花一些时间更深入地研究 K 均值聚类,并对其运行方式有一个更好的直观了解。

定义聚类

在研究用于执行 K 均值聚类的确切算法之前,先来看看什么定义聚类:

集群只是项目组,而集群只是将项目放入这些组中。 从数据科学的意义上来说, 聚类算法 目标是做两件事:

  • 确保集群中的所有数据点尽可能彼此相似。
  • 确保不同集群中的所有数据点尽可能彼此不同。

聚类算法根据某种相似性度量将项目分组在一起。 这通常是通过查找数据集中不同可能组的“质心”来完成的,尽管不完全如此。 有多种不同的聚类算法,但所有聚类算法的目标都是相同的,即确定数据集固有的组。

K均值聚类

K-Means 聚类是最古老和最常用的聚类算法之一,它的运行基于 向量量化。 选取空间中的一个点作为原点,然后从原点绘制到数据集中所有数据点的向量。

一般来说,K-means 聚类可以分为五个不同的步骤:

  • 将所有实例放入子集中,子集的数量等于 K。
  • 找到新创建的簇分区的平均点/质心。
  • 根据这些质心,将每个点分配给特定的簇。
  • 计算每个点到质心的距离,并将点分配给距质心距离最小的簇。
  • 将点分配给簇后,找到簇的新质心。

重复上述步骤直至训练过程完成。

在初始阶段,质心放置在数据点之间的某个位置。

或者,在放置质心之后,我们可以将 K 均值聚类视为在两个不同阶段之间来回交换:标记数据点和更新质心。

在第二步中,使用欧几里德距离等距离度量来计算给定点最接近哪个质心,然后将这些点分配给该质心的类。
在数据点标记阶段,每个数据点都被分配一个标签,将其放置在属于最近质心的簇中。 最近的质心通常使用平方欧几里得距离来确定,尽管可以根据输入聚类算法的数据类型使用其他距离度量,例如曼哈顿距离、余弦和杰卡德距离。

第三步,将质心移动到所有数据点的平均值。 然后重新分配班级。

在质心更新步骤中,通过查找当前包含在簇内的所有数据点之间的平均距离来计算质心。

如何选择正确的“K”值

考虑到 K 均值聚类是一种无监督算法,并且事先不知道类的数量,那么如何确定适当的类数/正确的 K 值?

一种选择正确 K 值的技术称为“肘部技术”。 肘部技术包括对一系列不同的 K 值运行 K 均值聚类算法,并使用准确度度量(通常是误差平方和)来确定哪些 K 值可提供最佳结果。 误差平方和是通过计算簇的质心与该簇中的数据点之间的平均距离来确定的。

术语“肘形技术”来自这样一个事实:当您针对不同的 K 值绘制 SSE 时,所得线图通常会具有“肘形”形状,其中 SSE 对于 K 的前几个值快速下降,但随后趋于平稳。 在这种情况下,位于弯头处的 K 值是 K 的最佳值,因为在该值之后收益会迅速递减。

小批量 K 均值聚类

随着数据集变大,计算时间也会增加。 在大规模数据集上运行时,基本 K 均值聚类可能需要很长时间才能完成,因此,对 K 均值聚类进行了调整,以降低算法的空间和时间成本。

小批量 K 均值聚类 是 K 均值聚类的变体 其中所考虑的数据集的大小是有上限的。 普通 K 均值聚类同时对整个数据集/批次进行操作,而小批量 K 均值聚类 将数据集分解为子集。 小批量是从整个数据集中随机采样的,对于每次新的迭代,都会选择一个新的随机样本并用于更新质心的位置。

在小批量 K 均值聚类中,聚类是通过小批量值和学习率的组合来更新的。 学习率随着迭代而降低,它是放置在特定簇中的数据点数量的倒数。 降低学习率的效果是,在经过多次迭代后,簇没有变化时,新数据的影响减少,达到收敛。

关于小批量 K 均值聚类有效性的研究结果表明,它可以成功地减少计算时间,同时稍微权衡聚类质量。

K-Means 聚类的应用

K 均值聚类可以安全地用于数据点可以分为不同组/类的任何情况。 以下是 K 均值聚类的一些常见用例示例。

K-means 聚类可应用于文档分类,根据主题、标签、单词用法、元数据和其他文档特征等特征对文档进行分组。 它还可用于根据帖子和评论等活动模式将用户分类为机器人或非机器人。 K 均值聚类还可用于根据监测健康状况时的关注程度、合并症、年龄、患者病史等特征将人们分组。

K 均值聚类还可以用于更多开放式任务,例如创建推荐系统。 Netflix 等系统的用户可以根据观看模式进行分组,并推荐相似的内容。 K 均值聚类可用于异常检测任务,突出显示潜在的欺诈或缺陷商品实例。

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

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

相关文章

拼多多携手中国农业大学,投建陕西佛坪山茱萸科技小院

5月16日下午,中国农业大学陕西佛坪山茱萸科技小院在佛坪县银厂沟村揭牌。佛坪县素有“中国山茱萸之乡”的美誉,是全国山茱萸三大基地之一,当地山茱萸是国家地理标志产品,山茱萸肉产量位居全国第二。 为充分发挥佛坪县得天独厚的山…

【在Postman中,如果后端返回的是String类型的数据但不是JSON格式,报错】

在Postman中,如果后端返回的是String类型的数据但不是JSON格式 问题描述解决办法 postman后端返回的String数据,不是json,怎么设置结果的接收? 问题描述 在postman中测试接口,报错Error:Abort,或者显示返回数据校验失…

C#_初识变量类型与方法

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace ConsoleApp2 {class Program{static void Main(string[] args){///--------常用的变量类型float a 3.12f; //单精度32bit浮点型后缀要加fdou…

LED显示屏的智能化发展与未来趋势

摘要:随着智能化技术的飞速发展,LED显示屏行业也迎来了新的变革。本文将探讨LED显示屏的智能化发展方向,包括人屏互动、大屏中控智能化,以及智能LED显示屏在不同领域的应用前景。 1、引言 在智能化浪潮的推动下,LED显示…

掌握代码注释:提升代码可读性的秘密武器

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、为什么我们需要注释? 二、如何添加单行注释? 使用井号 # 添加单…

Kafka-生产者(producer)发送信息流程详解

Kafka概述 在 Kafka 消息发送的过程中,涉及到了两个重要的线程:主线程(main thread)和发送线程(Sender thread)。 1.主线程(main thread): 应用程序在主线程中创建 Kaf…

有哪些地图采集软件可以采集商家数据导出功能?

1.国内商家采集 寅甲地图数据采集软件 寅甲地图数据采集软件一款多关键词多城市同时采集百度地图、360地图、高德地图、搜狗地图、腾讯地图、图吧地图、天地图商家、公司、店铺的手机、座机、地址、坐标等数据信息的软件。 2.国外商家采集 寅甲谷歌地图数据采集软件 专为做…

在Visual Studio Code和Visual Studio 2022下配置Clang-Format,格式化成Google C++ Style

项目开发要求好的编写代码格式规范,常用的是根据Google C Style Guide 网上查了很多博文,都不太一样有的也跑不起来,通过尝试之后,自己可算折腾好了,整理一下过程 背景: 编译器主要有三部分:前…

【大模型】 基于AI和全球化进程的权衡:开源大模型与闭源大模型

【大模型】 基于AI和全球化进程的权衡:开源大模型与闭源大模型 前言 实际上关于开源or闭源,一直以来都是颇有争议的话题,人们争执于数据的隐私性和共享性,到底哪一方能获得的收益更大。而对于开源与闭源哪个更好实际上也就是说是…

再次学习History.scrollRestoration

再次学习History.scrollRestoration 之前在react.dev的源代码中了解到了这个HIstory的属性,当时写了一篇笔记来记录我对它的理解,现在看来还是一知半解。所以今天打算重新学习一下这个属性,主要从属性以及所属对象的介绍、使用方法&#xff0…

【html5】05-自定义属性-切换页面-tab栏新闻列表

引言 04篇的自定义小案例 效果 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8"><style type"text/css">* {margin: 0;padding: 0;list-style: none;text-decoration: none;}.news {width: 4…

redisson 使用fastJson2序列化

前因&#xff1a;一个项目&#xff1a;有人用redisTemplete存数据&#xff08;使用了fastjson2&#xff09;&#xff0c;使用redisson取的时候就会报错。要让redisTemplete与redisson序列化一致 一、自定义序列化器 import com.alibaba.fastjson2.JSON; import com.alibaba.fa…

Foxit PDF Editor Pro福昕PDF编辑器Pro:重塑您的文档编辑体验

在信息爆炸的时代&#xff0c;PDF文件因其跨平台、格式稳定等特性&#xff0c;成为我们日常工作与学习中不可或缺的一部分。然而&#xff0c;面对这些文件时&#xff0c;许多人都会遇到一个共同的难题&#xff1a;如何高效、专业地编辑PDF内容&#xff1f;今天&#xff0c;我要…

软件性能测试报告的目的和作用分析

性能测试 随着信息技术的飞速发展&#xff0c;软件已经成为我们日常生活和工作中不可或缺的一部分。为了确保软件的质量和稳定性&#xff0c;软件性能测试成为了软件开发过程中不可或缺的一环。 一、软件性能测试报告的目的 1. 评估软件性能 软件性能测试的目的是评估软件的…

kettle从入门到精通 第六十三课 ETL之kettle kettle调用python脚本的两种方法

想真正学习或者提升自己的ETL领域知识的朋友欢迎进群&#xff0c;一起学习&#xff0c;共同进步。若二维码失效&#xff0c;公众号后台加我微信入群&#xff0c;备注kettle。 kettle中不能直接调用python脚本&#xff0c;可以通过shell脚本和http进行调用pyton服务。 一、shel…

Oblivion Desktop:一款强大的网络工具介绍

一款优秀的开源网络工具。 文章目录 Oblivion Desktop: 安全与隐私的网络工具软件背景开发背景 使用方法安装日常使用高级功能 总结 Oblivion Desktop: 安全与隐私的网络工具 软件背景 Oblivion Desktop 是一个由 BePass 团队开发的开源桌面应用&#xff0c;旨在为用户提供更…

Ubuntu 20.04中用scrapy爬取博客园新闻首页的简单示例

一、梳理scrapy项目目录创建&#xff1a; 1、命令行终端定位到pycharm主目录&#xff1a;cd PycharmProjects 2、建立项目名称&#xff1a;scrapy startproject searchArticle 3、定位到项目目录下&#xff1a;cd searchArticle 4、设置爬虫名称与欲爬取的域名地址&#xf…

z3-加法器实验

补码器加减法&#xff0c;运算方法简介 我们要知道什么是补码的加法&#xff0c;我们为什么要用补码的加法&#xff1f; 补码的加法其实就是将两个补码形式的二进制数字直接相加&#xff0c;处理的时候忽略超出固定位数的进位。补码的加法运算和无符号二进制数的加法操作一样&…

Postgresql 基础学习

一、介绍 PostgreSQL是一个开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它支持SQL语言的所有功能&#xff0c;具有可扩展性、高并发性和可靠性等特点。 以下是一些 PostgreSQL 的特点&#xff1a; 开源&#xff1a;PostgreSQL是一个非常受欢迎的开源…

就业信息|基于SprinBoot+vue的就业信息管理系统(源码+数据库+文档)

就业信息管理系统 目录 基于SprinBootvue的就业信息管理系统 一、前言 二、系统设计 三、系统功能设计 1前台功能模块 2后台功能模块 4.2.1管理员功能 4.2.2学生功能 4.2.3企业功能 4.2.4导师功能 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设…