【机器学习300问】38、什么是K-means算法?

        在实际工作中,我们经常会遇到这样一类问题:给机器输入大量的特征数据,并期望机器通过学习找出数据存在的某种共性特征、结构或关联。这类问题被称为“非监督学习”问题。这篇文章我就来聚焦非监督学习中的其中一个任务——聚类

        例如在数字营销中,可以基于用户在线浏览习惯、点击历史、社交媒体行为等多维度数据进行聚类分析。发现几个主要的用户群体,比如“科技发烧友”、“健身爱好者”和“亲子家庭”等。对于每一个细分群体,企业可以设计并推送定制化的广告内容,从而提高广告效果和转化率。

一、聚类是什么?

        我之前的文章中提到的支持向量机SVM、逻辑回归和决策树机器学习算法都是用于分类问题。即更具一些已经给定类别标签的样本,训练某种分类器,使得他们能够对类别未知的样本进行分类。与分类问题不同,聚类是在事先不知道任何样本的类别标签的情况下,通过数据之间的内在关系把样本划分为若干类别,使得同类样本之间相似度高,不同类之间相似度低。

        总结起来对聚类下个定义:聚类是机器学习中的一种无监督学习方法,它旨在通过相似性或距离度量将物理或抽象对象的集合自动划分为多个类别或簇。

二、什么K-means算法?

        K-means算法又叫做K均值算法,他是一种迭代的无监督聚类方法,通过将数据集中的样本点划分到不同的K个簇中,来寻找数据的内在关联。

(1)K-means算法的目标

  • 将数据集划分为K个簇,使得每个簇内的数据点彼此相似度较高,而不同的簇之间的数据点差异较大。
  • 簇内的相似性通常基于欧式距离,即簇内所有数据点与该簇中心点的距离之和尽可能的小。

(2)如何判断两个样本相似?

        通过两点之间的欧式空间中的距离,公式如下:

dis(a,b)=\left \| a,b \right \|=\sqrt{(a_1-b_1)^2+(a_2-b_2)^2}

三、简述K-means算法的具体步骤

(1)初始化

        将数据样本先进行预处理(归一化、离群点处理等等),然后随机选取K个质心(簇中心),记为\mu _{1}^{(0)},\mu _{2}^{(0)}\mu _{3}^{(0)}...\mu _{K}^{(0)}

        定义代价函数,常用的代价函数是各个样本距离所属簇中心点的误差平方和:

J(c,\mu)=\sum_{i=1}^{m}\left \| x_i-\mu_{c_i} \right \|^2

符号解释
J代价函数
x_i指第i个样本
c_ix_i所属的簇
\mu_{c_i}c_i簇对应的中心点
m是样本总数
\mu_{k}第k个簇的中心点(质心)

(2)分配阶段

        计算数据集中每个数据点到K个质心的距离,并将每个数据点分配给最近的质心所在的簇。

  • 每个样本x_{i}将其分配的距离最近的簇,公式如下:

c_{i}^{(t)}\leftarrow \underset{k}{argmin}\left \| x_i-\mu_{k}^{(t)} \right \|^2

(3)更新阶段

        根据每个簇中新分配的数据点重新计算簇的质心,通常是取簇内所有数据点坐标的平均值作为新的质心。

  • 每个类簇k,重新计算该类簇的中心,公式如下:

\mu_{k}^{(t+1)}\leftarrow \underset{\mu}{argmin}\sum_{i:c_{i}^{(t)}=k}^{}\left \| x_i-\mu \right \|^2

        举例说明:比如有4个样本x_i他们的坐标是(a_i,b_i),他们的质心计算可以拆解为,先计算x轴的平均值a_{\mu}=\frac{1}{4}(a_1+a_2+a_3+a_4),再计算y轴的平均值b_{\mu}=\frac{1}{4}(b_1+b_2+b_3+b_4),新质点\mu的位置就是(a_{\mu},b_{\mu})

(4)迭代优化

        重复步骤2和步骤3,直到满足终止条件为止,常见的终止条件包括预设的最大迭代次数或者质心移动的距离小于某个阈值,或者簇间的质心不再显著改变。

K均值聚类算法的迭代过程示意图

三、K-means算法的优缺点是什么

(1)优点

        算法流程直观,易于理解与实现,适合大规模数据集处理。对于大数据集有相对较低的时间复杂度(尤其是在维度不太高时)。可以通过并行化技术在分布式环境下加速运行。在适当初始化的情况下,算法通常能快速收敛到局部最优解。得到的聚类结果具有明确的几何意义,每个簇有一个中心点,可以直观地解释和可视化。

(2)缺点

  • 需要预设K值需要预先确定簇的数量K,但在实际应用中这个值可能难以估计,选择不当会影响最终聚类效果。
  • 对初始质心敏感:算法收敛结果依赖于初始质心的选择,不同的初始质心可能导致不同的聚类结果。
  • 陷入局部最优:由于采用迭代优化方法,容易陷入局部最优,无法保证找到全局最优解。
  • 对异常值敏感:算法基于欧氏距离度量,因此对噪声点和离群点非常敏感,这些点可能严重影响聚类中心的位置。

四、预设K值等于几?

        我怎么知道要聚成几类呢?K-means算法的关键在于K值的选择,即最终要形成的簇的数量。K值的选择对聚类结果有很大影响,通常使用肘部法则(Elbow Method)或轮廓系数 (Silhouette Coefficient)等技术来选择最佳的K值。

(1)肘部方法

        运行K-means算法多次,每次使用不同的K值,通过绘制不同K值下代价函数值(即各个样本点到其所属簇中心的平方误差之和,简称SSE=Sum of Squared Errors)与K的关系图,寻找曲线“弯折”的位置,即增加K值时SSE下降速度明显减缓的那个点作为最佳K值。

(2)轮廓系数

        计算每个样本点的轮廓系数,该系数衡量了样本点与其所在簇内其他样本的相似度与它与其他簇样本点的差异程度。当所有样本点的平均轮廓系数达到最大时对应的K值是较好的选择。

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

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

相关文章

OpenHarmony教程指南—ArkTS时钟

简单时钟 介绍 本示例通过使用ohos.display 接口以及Canvas组件来实现一个简单的时钟应用。 效果预览 使用说明 1.界面通过setInterval实现周期性实时刷新时间,使用Canvas绘制时钟,指针旋转角度通过计算得出。 例如:"2 * Math.PI /…

leetcode 3.11

leetcode hot 100 二分查找1.寻找旋转排序数组中的最小值 矩阵1.搜索二维矩阵 II知识点:upper_bound, lower_bound知识点:二分查找 2.搜索二维矩阵 链表1.合并两个有序链表2.两数相加3. 删除链表的倒数第 N 个结点 二分查找 1.寻找旋转排序数组中的最小…

【C#】.net core 6.0 使用第三方日志插件Log4net,日志输出到控制台或者文本文档

欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。…

鸿蒙Next学习-Flex布局

Entry Component struct FlexCase {build() {//需要在构造参数上传Flex({ direction: FlexDirection.Row,justifyContent:FlexAlign.Center }) {//flex布局Row().width(100).height(100).backgroundColor(Color.Red)Row().width(100).height(100).backgroundColor(Color.Yellow…

c++11语法特性

c11 1.c11发展简介 ​ 第一个比较正式的c标准是1998提出的c98标准。之后定了5年计划,每5年来一次大更新。在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1),使得C03这个名字已经取代了C98称为C11之前的最新C标准名称。不过由于C03(TC1)主要是对C…

工作中Git如何切换远程仓库地址

工作中Git如何切换远程仓库地址 部门之前的仓库不用了,重新建了一个仓库,但是上传代码还是上传到了之前的仓库里面了,所以得进行修改,下面将修改地址的方法进行操作。 方法一、直接修改远程仓库地址 查看当前远程仓库地址 git …

使用 ChatGPT 写高考作文

写作文,很简单,但写一篇好的作文,是非常有难度的。 想要写一篇高分作文,需要对作文题目有正确的理解,需要展现独到的观点和深入的思考,需要具备清晰的逻辑结构,需要准确而得体的语言表达。 正…

【Linux进阶之路】HTTPS = HTTP + S

文章目录 一、概念铺垫1.Session ID2.明文与密文3.公钥与私钥4.HTTPS结构 二、加密方式1. 对称加密2.非对称加密3.CA证书 总结尾序 一、概念铺垫 1.Session ID Session ID,即会话ID,用于标识客户端与服务端的唯一特定会话的标识符。会话,即客…

LeetCode 热题 100 | 回溯(二)

目录 1 39. 组合总和 2 22. 括号生成 3 79. 单词搜索 菜鸟做题,语言是 C,感冒快好版 关于对回溯算法的理解请参照我的上一篇博客; 在之后的博客中,我将只分析回溯算法中的 for 循环。 1 39. 组合总和 题眼:c…

15届蓝桥杯第二期模拟赛题单详细解析

文章目录 🧡🧡t1_求余🧡🧡思路代码 🧡🧡t2_灌水🧡🧡思路代码 🧡🧡t3_字符显示🧡🧡思路代码 🧡🧡t4_区间最大和…

网络计算机

TCP/IP四层模型 应用层:位于传输层之上,主要提供两个设备上的应用程序之间信息交换的服务,它定义了信息交换的格式,消息会交给下一层传输层来传递。我们把应用层交互的数据单元称为报文。应用层工作在操作系统的用户态&#xff0…

YOLOv8_pose-Openvino和ONNXRuntime推理【CPU】

纯检测系列: YOLOv5-Openvino和ONNXRuntime推理【CPU】 YOLOv6-Openvino和ONNXRuntime推理【CPU】 YOLOv8-Openvino和ONNXRuntime推理【CPU】 YOLOv7-Openvino和ONNXRuntime推理【CPU】 YOLOv9-Openvino和ONNXRuntime推理【CPU】 跟踪系列: YOLOv5/6/7-O…

Android 音频系统

导入 早期Linux版本采用的是OSS框架,它也是Unix及类Unix系统中广泛使用的一种音频体系。 ALSA是Linux社区为了取代OSS而提出的一种框架,是一个源代码完全开放的系统(遵循GNU GPL和GNU LGPL)。ALSA在Kernel 2.5版本中被正式引入后,OSS就逐步…

C语言:操作符详解(下)

目录 一、逗号表达式二、下标访问[ ]、函数调用()1. [ ]下标引用操作符2.函数调用操作符 三、结构成员访问操作符1.结构体(1) 结构的声明(2) 结构体变量的定义和初始化 2.结构成员访问操作符(1)结构体成员的直接访问(2)结构体成员的间接访问 四、操作符的属性:优先级…

Rudolf and the Ball Game

传送门 题意 思路 暴力枚举每一个妆台的转换条件 code #include<iostream> #include<cstdio> #include<stack> #include<vector> #include<algorithm> #include<cmath> #include<queue> #include<cstring> #include<ma…

【Docker】容器的生态系统

Docker提供了一整套技术支持&#xff0c;包括核心技术、平台技术、支持技术。 核心技术 容器核心技术是指能让Container&#xff08;容器&#xff09;在host&#xff08;集群、主机&#xff09;上运行起来的那些技术。 1&#xff09;容器规范&#xff1a;OCI&#xff08;runt…

搭建mysql主从复制(主主复制)

1&#xff1a;设主库允许远程连接(注意&#xff1a;设置账号密码必须使用的插件是mysql_native_password&#xff0c;其他的会连接失败) #切换到mysql这个数据库&#xff0c;修改user表中的host&#xff0c;使其可以实现远程连接 mysql>use mysql; mysql>update user se…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的零售柜商品检测软件(Python+PySide6界面+训练代码)

摘要&#xff1a;开发高效的零售柜商品识别系统对于智能零售领域的进步至关重要。本文深入介绍了如何运用深度学习技术开发此类系统&#xff0c;并分享了全套实现代码。系统采用了领先的YOLOv8算法&#xff0c;并与YOLOv7、YOLOv6、YOLOv5进行了性能比较&#xff0c;呈现了诸如…

蓝桥杯每日一题:血色先锋队

今天浅浅复习巩固一下bfs 答案&#xff1a; #include<iostream> #include<algorithm> #include<cstring>using namespace std; typedef pair<int,int> PII;const int N510; int n,m,a,b; int dist[N][N]; PII q[N*N]; int hh0,tt-1;int dx[]{1,0,-1,…

网络层:地址解析协议ARP、网际控制报文协议ICMP、虚拟专用网络VPN、网络地址转换NAT

文章目录 地址解析协议ARP解决的问题ARP解析流程ARP高速缓存 网际控制报文协议ICMPICMP报文的种类ICMP差错报告报文ICMP询问报文 ICMP应用举例分组网间探测PING(Packet InterNet Groper)traceroute(tracert)确定路径的MTU 虚拟专用网络专用地址虚拟专用网络远程接入VPN(remote …