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

news2025/1/13 15:51:45

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

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

一、聚类是什么?

        我之前的文章中提到的支持向量机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.coloradmin.cn/o/1519594.html

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

相关文章

F-logic DataCube3 任意文件上传漏洞复现(CVE-2024-25832)

0x01 产品简介 F-logic DataCube3是一款用于光伏发电系统的紧凑型终端测量系统。 0x02 漏洞概述 F-logic DataCube3 /admin/setting_photo.php接口处存在任意文件上传漏洞 ,未经身份验证的攻击者可通过该漏洞在服务器端写入后门,获取服务器权限,进而控制整个web服务器。 …

【计算机视觉】二、图像形成:2、几何基元和几何变换:2D变换

文章目录 一、向量和矩阵的基本运算二、几何基元和变换1、几何基元(Geometric Primitives)2、几何变换(Geometric Transformations)1. 各种变换的关系2. 变换公式3. 2D变换的层次4. python实现 一、向量和矩阵的基本运算 【计算机视觉】二、图像形成:1、向量和矩阵…

【研发日记】Matlab/Simulink技能解锁(五)——Simulink布线技巧

前言 见《【研发日记】Matlab/Simulink技能解锁(一)——在Simulink编辑窗口Debug》 见《【研发日记】Matlab/Simulink技能解锁(二)——在Function编辑窗口Debug》 见《【研发日记】Matlab/Simulink技能解锁(三)——在Stateflow编辑窗口Debug》 见《【研发日记】Matlab/Simulink…

HarmonyOS ArkUI入门—HarmonyOS ArkUI来开发一个健康饮食应用

本文演示如果在DevEco Studio 3里面,用HarmonyOS的ArkUI来开发一个健康饮食应用。体验HarmonyOS 3最新API 9! 获取HarmonyOS应用 HarmonyOS的ArkUI来开发一个健康饮食的ArkUI程序“ArkUIHealthyDiet”,基础代码已经有了[1],个人…

DHCP-SNOOPING-嗅探/窥探

DHCP-SNOOPING 私接设备了,非终端收到了报文 所有接口设置为非信任,然后单独配置其中一个接口为信任

《ARM汇编与逆向工程 蓝狐卷 基础知识》

推荐一本专注于Arm逆向分析技术的好书《ARM汇编与逆向工程 蓝狐卷 基础知识》,3月21日将在点赞者中抽取粉丝进行本书包邮免费赠送。 目录 正文内容简介作者简介译者简介目录了解更多 正文 与传统的CISC(Complex Instruction Set Computer,复…

聚道云连接器助力航信费控与用友U8无缝对接,赋能供应链管理!

客户介绍 某供应链管理有限公司是一家专注于供应链管理和物流服务的领先企业,在行业内享有盛誉。公司业务遍布全球,拥有庞大的客户群和丰富的行业经验。近年来,公司不断加大数字化投入,以提升运营效率和服务水平。 客户痛点 在…

springboot274基于web的电影院购票系统

电影院购票系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装电影院购票系统软件来发挥其高效…

渗透测试实战思路分析

免责声明:文章来源真实渗透测试,已获得授权,且关键信息已经打码处理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人…

单片机设计-基于树莓派的wifi小车的设计与实现

项目介绍 有两个目的:1)实现wifi小车的基本功能:使用树莓派(单片机)以及各种电子元器件,组装完成一个智能小车,通过Python、Java、C控制树莓派(单片机)的GPIO&#xff0…

LoadRunner学习:RuntimeSetting、参数化、关联、(unfinished

LoadRunner RuntimeSetting 运行时设置 在Vuser中设置Run-time Settings RunLogic:运行逻辑,决定了脚本真正执行逻辑, Init和End部分代码只能执行一次。决定脚本真正执行逻辑的意思是,在Run中的代码和Number of Iteration决定了…

【Leetcode每日一题】 递归 - 反转链表(难度⭐)(35)

1. 题目解析 题目链接:206. 反转链表 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 一、递归函数的核心任务 递归函数的主要职责是接受一个链表的头指针,并返回该链表逆序后的新头结点。递归…

Linux从0到1——Linux第一个小程序:进度条

Linux从0到1——Linux第一个小程序&#xff1a;进度条 1. 输出缓冲区2. 回车和换行的本质3. 实现进度条3.1 简单原理版本3.2 实际工程版本 1. 输出缓冲区 1. 小实验&#xff1a; 编写一个test.c文件&#xff0c;&#xff1a; #include <stdio.h> #include <unistd.h…

‘sqlcmd‘不是内部或外部命令,也不是可运行的程序或批处理文件。

目录 一、问题 二、下载&安装sqlcmd 实用工具 三、验证 四、结果 一、问题 今天使用批处理文件执行SQLServer数据库的SQL语法时报错&#xff0c;提示sqlcmd不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。&#xff0c;发生这个问题的原因是当前系统缺少…

【开发工具学习_Xshell介绍与安装】

开发工具学习_Xshell介绍与安装 开发工具学习_Xshell介绍与安装Xshell介绍Xshell安装 开发工具学习_Xshell介绍与安装 Xshell介绍 Xshell [1]是一个强大的安全终端模拟软件&#xff0c;它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主…

107. 如何使用Docker以及Docker Compose部署Go Web应用

文章目录 一、为什么需要Docker&#xff1f;二、Docker部署示例1. 准备代码2. 创建Docker镜像3. 编写Dockerfile4. Dockerfile解析5. 构建镜像6. 通过镜像创建容器运行 三、分阶段构建示例四、附带其他文件的部署示例五、关联其他容器六、Docker Compose模式七、总结 本文将介绍…

Android Studio实现内容丰富的安卓图书管理系统

获取源码请点击文章末尾QQ名片联系&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动 项目编号060 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.查看图书列表 3.查看图书详情 4.评论图书&#xff0c; 5.…

复习C语言基础中的基础:C语言发展、C89 C99有何区别、C语言特点

参考《C程序设计&#xff08;第五版&#xff09;》&#xff08;谭浩强&#xff09;一书&#xff1a; 1. 发展、C89 C99 2. 特点 记得时不时回顾一下背景特点&#xff0c;加深对C语言的理解。

学古琴,万一学错了,还能改吗?

【古琴】学琴容易&#xff0c;改琴难&#xff1b; 错误的观念形成&#xff0c;需要大量的时间去调整大脑和肢体的动作&#xff1b; 当别人在学习新知识的时候&#xff0c;你却在改错误。 在古琴界因为门派和传承的关系&#xff0c;有大量不科学的毛病"&#xff0c;比如音…

HTML—CSS盒子模型(Box Model)

基本介绍&#xff1a; CSS处理网页时&#xff0c;HTML的每一个标签可以看作是一个盒子&#xff0c;网页布局将指定的标签放到指定的位置上摆放&#xff0c;相当于摆放盒子。 每一个标签(盒子)所包含的内容&#xff1a;从外到内 ①外边距(margin)—规定盒子与盒子之间的距离&…