K均值聚类分析

K均值聚类分析聚类分析一 基本 K 均值算法 1 算法的过程 2 质心的计算 3 距离的度量曼哈顿距离欧几里得距离最大距离闵可夫斯基距离点乘积相关系数 4 性能的评估 K 均值算法 是一种最古老的 也是最广泛使用的聚类算法 通常 K 均值聚类应用于 n 维连续空间中的对象 从数学的角度讲 假定样本集 数据集 D 包含 m 个样本 对象 每个样本均为 n 维向量 则 K 均值聚类将样本集 D 划分为 k 个互不相交的簇 cluster

   K K K均值算法,是一种最古老的,也是最广泛使用的聚类算法。
  通常, K K K均值聚类应用于 n n n维连续空间中的对象。从数学的角度讲,假定样本集(数据集) D D D包含 m m m个样本(对象),每个样本均为 n n n维向量,则 K K K均值聚类将样本集 D D D划分为 k k k个互不相交的簇( c l u s t e r cluster cluster)。
  例如,研究电信用户留存时,想知道哪些客户群容易流失,可以使用 K K K均值聚类对用户群体进行划分。

一、基本K均值算法

1、算法的过程

  首先,选择 k k k个对象作为初始的质心,其中 k k k是预先指定的参数,即所期望的 c l u s t e r cluster cluster的个数。初始质心的选取通常是随机的,当然这么做的聚类效果往往很一般。
  其次,选取一个对象,计算对象到各个质心的距离,把对象分配给距离最近的质心。质心以及分配给其的对象就组成一个 c l u s t e r cluster cluster
  然后,根据现有的 c l u s t e r cluster cluster,计算 c l u s t e r cluster cluster的质心—— c l u s t e r cluster cluster内对象的平均值,并更新cluster的质心。
  接着,不断的循环执行对象分配以及质点更新的步骤。
  最后,当 c l u s t e r cluster cluster不再发生变化,或者等价地, c l u s t e r cluster cluster的质心不再发生变化时,终止循环,结束过程。








选择K个点作为初始质心; repeat 将每个点指派到最近的质心,形成K个cluster; 重新计算每个cluster的质心; until 质心不发生变化; 

2、质心的计算

  假设数据集包含 n n n个对象,每个对象对应一个 2 2 2维的线性空间,( x c , y c x_{c},y_{c} xc,yc)为质心的坐标:
x c = 1 n ∑ i = 1 n x i x_{c}=\frac{1}{n}\sum_{i=1}^{n}x_{i} xc=n1i=1nxi y c = 1 n ∑ i = 1 n y i y_{c}=\frac{1}{n}\sum_{i=1}^{n}y_{i} yc=n1i=1nyi
  对于高维的数据样本,可依次进行推广。




3、距离的度量

  由于 K K K均值算法往往应用于 n n n维连续空间中的对象,因此在计算对象到质心的距离时,该距离的定义方式应符合度量空间的定义——正定性、对称性、三角不等式。 n n n维度量空间中,常见的距离的度量方式有:

①曼哈顿距离

d ( x , y ) = ∑ i = 1 n ∣ x i − y i ∣ d\left ( x,y \right)=\sum_{i=1}^{n}\left | x_{i}-y_{i} \right | d(x,y)=i=1nxiyi

②欧几里得距离

d ( x , y ) = ∑ i = 1 n ( x i − y i ) 2 d\left ( x,y \right )=\sqrt{\sum_{i=1}^{n}{(x_{i}- y_{i})^2}} d(x,y)=i=1n(xiyi)2

③闵可夫斯基距离

d ( x , y ) = ∑ i = 1 n ∣ x i − y i ∣ p p d\left ( x,y \right)=\sqrt[p]{\sum_{i=1}^{n}\left | x_{i}-y_{i} \right |^{p}} d(x,y)=pi=1nxiyip

  其中, p = 1 p=1 p=1时,即曼哈顿距离; p = 2 p=2 p=2时,即欧几里得距离。

4、性能的评估

  对于聚类的结果,我们希望尽可能的“物以类聚”。即同一 c l u s t e r cluster cluster内的样本尽可能彼此相似(相关性强),隶属不同 c l u s t e r cluster cluster的样本尽可能不同(不相关)。换言之,聚类结果的簇内相似度高,且簇间相似度低。

①偏差平方和

  最常见的,可以使用偏差平方和 S S E SSE SSE(Sum of the Squared Error),即每个数据点到其最近质心的欧几里得距离平方和,来进行衡量:
S S E = ∑ i = 1 k ∑ x ϵ C i d i s c ( c i , x ) 2 SSE=\sum_{i=1}^{k}\sum_{x\epsilon C_{i}}^{}disc\left ( c_{i},x \right )^2 SSE=i=1kxϵCidisc(ci,x)2
  其中, C i C_{i} Ci代表 k k k c l u s t e r cluster cluster c i c_{i} ci代表 c l u s t e r cluster cluster的质心; x x x代表数据集中的数据点; d i s c disc disc代表两点间的欧几里得距离。
  显然, S S E SSE SSE越小,簇内相似度越高,聚类效果越好。






②轮廓系数

  另一个常见的度量方式是轮廓系数,不同于 S S E SSE SSE只衡量了簇内相似度,轮廓系数通过 c l u s t e r cluster cluster内的聚合度和不同 c l u s t e r cluster cluster间的离散度的比值来衡量:
离 散 度 聚 合 度 \frac{离散度}{聚合度}

二、二分K均值算法

  二分 K K K均值算法是基本 K K K均值算法的直接扩充,其思想是:为了得到 K K K c l u s t e r cluster cluster,将所有点的集合分裂成两个 c l u s t e r cluster cluster,从这些 c l u s t e r cluster cluster中选取一个继续分裂,如此下去,直到产生 K K K c l u s t e r cluster cluster

初始化数据,将所有数据作为一个cluster; repeat 选取一个cluster; for i=1 to 实验次数; 使用基本K均值,令k=2,二分选定的cluster; end for 根据选取的不同的初始cluster,计算二分后的SSE; 将使SSE最小的cluster二分后的结果,加入到总的cluster集中; until 数据集分为k个cluster; 

三、K均值的优点和缺点

1、K均值的优点

   K K K均值算法简单,且可用于各种数据类型。
   K K K均值算法往往相当有效,甚至有些变种算法(包括二分 K K K均值)更加有效,并且不太受初始化问题的影响。

2、K均值的缺点

   K K K均值算法并不适合所有的数据类型。
   K K K均值算法不能处理非球形 c l u s t e r cluster cluster、不同尺寸和不同密度的 c l u s t e r cluster cluster,尽管指定足够大的 K K K值时它通常可以发现纯子 c l u s t e r cluster cluster
  对包含离群点的数据进行聚类时, K K K均值也有问题。这种情况下,离群点检测和删除大有帮助。
   K K K均值算法只限于有质心概念的数据,对于没有质心概念的数据,可以使用 K K K中心点聚类,但是开销更大。











版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223850.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午1:18
下一篇 2026年3月17日 下午1:18


相关推荐

  • 矩阵运算_逆矩阵的运算

    矩阵运算_逆矩阵的运算二、矩阵运算1.什么是矩阵矩阵就是由多组数据按方形排列的阵列,在3D运算中一般为方阵,即M*N,且M=N,使用矩阵可使计算坐标3D坐标变得很方便快捷。下面就是一个矩阵的实例:看似没什么特殊的,可是后面

    2022年8月3日
    7
  • mysql的where条件后加case_recommend

    mysql的where条件后加case_recommend背景:数据库用的Oracle;报表用的是【FineReport】,之前没用过,被临时授命解决问题,所以大概了解了一下。里面应该是集成了excel插件,报表样式如下:今天在项目中遇到一个这样的场景:A为汇总页面,显示的是按医院分组统计出来的一些数据,效果如下图图中每一列都能下钻到另一个页面,医院名称和起始时间都作为参数传送。前期因为某一些需求,有一家医院出现了两个不同的名…

    2025年9月3日
    9
  • Python 学习记录(五)Pycharm导入包

    Python 学习记录(五)Pycharm导入包Pycharm社区版2021.1.2社区版导入包1.路径File菜单下的Settings……菜单打开菜单如下:Appearance是界面风格设置,这默认是Darcula,灰色主色调。2.添加引用包点击左边的Project:PythonProject项目,默认名称是这个。点击加号,弹出新窗口:输入需要导入的包,比如Numpy:里面具有很多包含这个名字的包,选择numpy包,点击InstallPackage按钮,开始安装。安装完整之后左下角有一个状态

    2022年8月28日
    4
  • SQL Server中的聚集索引(clustered index) 和 非聚集索引 (non-clustered index)

    SQL Server中的聚集索引(clustered index) 和 非聚集索引 (non-clustered index)本文转载自http://blog.csdn.net/ak913/article/details/8026743面试时经常问到的问题:1.什么是聚合索引(clusteredindex)/什

    2022年8月4日
    13
  • pycharm代码灰色_pycharm中import是灰色的

    pycharm代码灰色_pycharm中import是灰色的问题描述不少新手在使用Pycharm时都遇到了这样的问题,import导入包的时候,比如importurllib,importos,写的时候还是彩色,一写完,一按回车,马上就变成了灰色。解决方案1、配置python解释器有误也就是说python找不到你的包,这种原因的解决方案可以参照我的另一篇文章。https://blog.csdn.net/Nire_Yeyu/article/de…

    2022年8月26日
    5
  • Nginx跨域配置

    Nginx跨域配置一跨域概述 1 1 同源策略同源策略是一个安全策略 同源 指的是协议 域名 端口相同 浏览器处于安全方面的考虑 只允许本域名下的接口交互 不同源的客户端脚本 在没有明确授权的情况下 不能读写对方的资源 同源策略主要是基于如下可能的安全隐患 用户访问 www mybank com 登录并进行网银操作 这时 cookie 等资源都生成并存放在浏览器 用户突然访问一个另一个网站 该网站在页面中 拿到银行的 cookie 比如用户名 登录 token 等 然后发起对 www mybank com 的操作

    2026年3月20日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号