首页 > 编程语言 >K-means 聚类算法的简单理解

K-means 聚类算法的简单理解

时间:2024-11-05 22:21:06浏览次数:3  
标签:xi 中心 迭代 means Sj 算法 聚类

K-means 聚类算法的简单理解

1. K-means算法的流程

K 均值聚类(K-Means Clustering)是一种常见的无监督学习算法,它会将数据集划分成 K K K 个簇(cluster),通过最小化簇内样本到簇中心的距离之和完成聚类。

(1) 确定 K K K 值

首先,用户需要预先指定划分簇的个数 K K K。

(2) 初始化簇中心

随机选择 K K K 个数据点作为初始的簇中心(centroids)。这些簇中心是每个簇的代表点。

(3) 分配簇

对于数据集中每个样本,计算它与每个簇中心的距离(常用欧氏距离),并将其分配给距离最近的簇中心所对应的簇。

  • 欧氏距离计算公式:
    d ( x , c ) = ∑ i = 1 n ( x i − c i ) 2 d(x, c) = \sqrt{\sum_{i=1}^n (x_i - c_i)^2} d(x,c)=i=1∑n​(xi​−ci​)2
    其中 x x x 是数据点, c c c 是簇中心。
(4) 更新簇中心

对于1.3中划分好的每一个簇,计算该簇内所有数据点的平均值,并将这个平均值作为新的簇中心。

  • 公式:
    c j = 1 ∣ S j ∣ ∑ x i ∈ S j x i c_j = \frac{1}{|S_j|} \sum_{x_i \in S_j} x_i cj​=∣Sj​∣1​xi​∈Sj​∑​xi​
    其中 S j S_j Sj​ 是第 j j j 个簇中的所有样本, c j c_j cj​ 是新的簇中心。
(5) 重复步骤 3 和 4

不断迭代,重复执行 “分配簇”“更新簇中心” 两个步骤,直到簇中心不再发生显著变化或者达到了预设的最大迭代次数。通常情况下,算法在一定次数后会收敛,即簇中心的位置稳定。算法收敛后,每个数据点都会归属于一个簇,此时簇的划分就是最终结果。

2. K-means算法的目标函数

K 均值聚类的目标是最小化簇内的平方误差和(Within-cluster Sum of Squares,简称 WCSS):
J = ∑ j = 1 K ∑ x i ∈ S j ∥ x i − c j ∥ 2 J = \sum_{j=1}^K \sum_{x_i \in S_j} \left\| x_i - c_j \right\|^2 J=j=1∑K​xi​∈Sj​∑​∥xi​−cj​∥2
其中 x i x_i xi​ 是数据点, c j c_j cj​ 是簇中心, S j S_j Sj​ 是簇 j j j 内的所有样本。

3. 算法优缺点

3.1 优点
  1. 简单高效,容易实现。
  2. 计算速度较快,适用于大数据集。
  3. 对球状簇效果较好。
3.2 缺点
  1. 需要预先指定簇的数量 K K K。
  2. 对初始值敏感,初始簇中心的选择会影响结果。
  3. 适合于球状簇,对非球状或大小差异较大的簇效果不好。
  4. 容易受到离群点影响。

思考:为什么 K 均值聚类一定会收敛?

K 均值聚类一定会收敛,主要是基于以下两个原因:

(1) 目标函数每次迭代都在优化

K 均值聚类的目标是最小化簇内的平方误差和(WCSS)。目标函数为:
J = ∑ j = 1 K ∑ x i ∈ S j ∥ x i − c j ∥ 2 J = \sum_{j=1}^K \sum_{x_i \in S_j} \left\| x_i - c_j \right\|^2 J=j=1∑K​xi​∈Sj​∑​∥xi​−cj​∥2
其中 S j S_j Sj​ 是第 j j j 个簇中的所有样本, c j c_j cj​ 是簇中心。

  • 在每次迭代中,K 均值会先将每个样本分配给距离最近的簇中心,然后重新计算每个簇的中心。这两个步骤每次都会使得目标函数 J J J 的值下降或保持不变,因为:
    • 当样本被重新分配到最近的簇时,总的簇内距离会减少或保持不变。
    • 更新簇中心时,新的簇中心是所有点的平均值,这会最小化簇内所有点到簇中心的距离。

由于目标函数 J J J 是非负的,并且每次迭代都会降低或保持不变,因此算法最终会收敛到一个局部最优的结果。

(2) 状态空间是有限的

K 均值聚类的分配步骤和簇中心的更新步骤都会导致数据点的分配发生变化。然而,簇的分配方式只有有限种组合:

  • 假设数据集有 n n n 个样本,簇的数量为 K K K,那么最多有 K n K^n Kn 种可能的样本分配方式。尽管这个组合数非常大,但它是有限的。
总结

K 均值聚类的收敛性依赖于以下两个性质:

  • 目标函数值有下界(非负)且每次迭代都会降低或保持不变。
  • 分配状态的组合是有限的。

这两点保证了算法一定会在有限次迭代后收敛,即簇的分配和簇中心不会再发生变化。

标签:xi,中心,迭代,means,Sj,算法,聚类
From: https://blog.csdn.net/weixin_54052852/article/details/143530810

相关文章

  • 代码随想录算法训练营第十六天|leetcode513.找树左下角的值、leetcode112.路径总和、l
    1leetcode513.找树左下角的值题目链接:513.找树左下角的值-力扣(LeetCode)文章链接:代码随想录视频链接:怎么找二叉树的左下角?递归中又带回溯了,怎么办?|LeetCode:513.找二叉树左下角的值_哔哩哔哩_bilibili思路:就是用一个东西存储result,使用后续遍历,如果遇到了最深的那一个值,就......
  • 【算法】递归+深搜:106.从中序与后序遍历序列构造二叉树(medium)
    目录1、题目链接相似题目:2、题目3、解法函数头-----找出重复子问题函数体---解决子问题4、代码1、题目链接106.从中序与后序遍历序列构造二叉树(LeetCode)相似题目:105.从前序与中序遍历序列构造二叉树889.根据前序和后序遍历构造二叉树(LeetCode)2、题目3、解法......
  • 对于特定的游戏问题使用启发式算法可以取得比AI算法更好的表现
    相关:UsingA.I.toDOMINATENERDSinTETRIS强化学习算法library库:(集成库)https://github.com/Denys88/rl_gameshttps://github.com/Domattee/gymTouch个人github博客地址:https://devilmaycry812839668.github.io/......
  • 【算法】——滑动窗口专题
     阿华代码,不是逆风,就是我疯你们的点赞收藏是我前进最大的动力!!希望本文内容能够帮助到你!!目录一:长度最小的子数组二:无重复字符的最长子串三:最大连续1的个数四:将x减到0的最小操作数五:水果成篮六:找到字符串中所有字母的异位词七:串联所有单词的子串八:最小覆盖子串......
  • 代码随想录算法训练营第十四天|leetcode226. 翻转二叉树、leetcode101.对称二叉树、le
    1leetcode226.翻转二叉树题目链接:226.翻转二叉树-力扣(LeetCode)文章链接:代码随想录视频链接:听说一位巨佬面Google被拒了,因为没写出翻转二叉树|LeetCode:226.翻转二叉树哔哩哔哩bilibili自己的思路:之前想过就是使用层序遍历的方法来做这一道题目,后来感觉有一些行不通,就......
  • 代码随想录算法训练营第十三天|二叉树的理论基础、二叉树的递归遍历、二叉树的层序遍
    1二叉树的理论基础文章链接:代码随想录视频链接:关于二叉树,你该了解这些!|二叉树理论基础一网打尽,二叉树的种类、二叉树的存储方式、二叉树节点定义、二叉树的遍历顺序哔哩哔哩bilibili1.1二叉树的种类满二叉树所有节点处的值都排满了,没有空的完全二叉树只有在最后......
  • 什么是梯度下降算法
    书接上文,想要用算法解决问题,就不可避免的涉及构造函数L(后面称之为损失函数Loss)求导,和对Loss函数求极小值。而对导函数求极小值就不得不提梯度下降算法,那边本期就来介绍什么是梯度下降算法,以及为什么梯度下降算法能求Loss函数的极小值。什么是梯度?梯度是偏导数组成的向量,,w是......
  • 蓝桥杯排序算法之low B三人组——冒泡,插入,选择
    目录一、题目二、分析三、代码一、题目分别用冒泡,插入,选择对列表li=[3,2,4,5,1,8,6,9,7]进行排序二、分析冒泡排序:它重复地走访要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经......
  • 算法与数据结构——基数排序
    基数排序基数排序(radixsort)的核心思想与计数排序一致,也通过统计个数来实现排序。计数排序适用于数据量n较大但数据范围m比较小的情况。假设我们需要对n=106个学号进行排序,而学号是一个8位数字,这意味着数据范围m=108非常大,使用计数排序需要分配大量内存空间,而基数排序可以避免这......
  • 计算机毕业设计Python+大模型新能源汽车销量预测 汽车销量分析可视化 汽车爬虫 深度学
    温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO......