【数据挖掘】十大算法之K-Means K均值聚类算法

简介: K-Means聚类算法的基本介绍,包括算法步骤、损失函数、优缺点分析以及如何优化和改进算法的方法,还提到了几种改进的K-Means算法,如K-Means++和ISODATA算法。

1.png

1 Kmeans步骤

(1)数据预处理,如归一化、离群点处理等
(2)随机选取K个簇中心,记为$$u_1^0, u_2^0, \ldots, u_k^0$$
(3)定义代价函数,表示在一个簇内,各个样本距离所属簇中心点的误差平方和

$$J(c, u) = \sum_{i=1}^{k}\| x_i - u_{c_i} \|^{2} $$
其中 xi表示第 i 个样本点, ci 是xi所属簇, uci代表簇对应的中心点,M是样本数。刻画了簇内样本围绕簇均值向量的紧密程度。
(4)令t=0,1,2,... 为迭代步数,重复下面过程直到J收敛。
2.png

2 kmeans损失函数

损失函数是各个样本距离所属簇中心点的误差平方和
$$J(c, u) = \sum_{i=1}^{k}\| x_i - u_{c_i} \|^{2} $$
其中 xi表示第 i 个样本点, ci 是xi所属簇, uci代表簇对应的中心点,M是样本数。

3 优缺点

(1)缺点

  • 受初始簇心值和离群点的影响,每次的运行结果不稳定
  • 结果通常不是全局最优
  • 无法很好地解决数据簇样本数量分布差别较大的情况(如一个簇样本10,一个簇样本是100倍)
  • 不太适用于离散分类,样本点只能被划分到单一的类中

(2)优点

  • 对于大数据,计算复杂度是O(NKt),接近与线性,其中N是数据的样本数,K是簇 心数,t是迭代的轮次数。
  • 局部最优也能满足大部分的聚类需求

4 如何调优和改进

(1)数据归一化和离群点处理

  • 均值和方差打的维度对数据的聚类结果产生决定性的影响,未做归一化处理和统一单位的数据是无法直接参与运算和比较的。
  • 离群点和少量的噪声数据会对均值产生交大的影响,导致中心偏移

(2)合理的选择K值
评价指标函数有误差平方和SSE和轮廓系数,通过可视化,采用手肘法去判断最佳的K值
(3)采用核函数
称为核K均值算法,是核聚类方法的一种,主要思想是通过一个非线性映射,将输入空间中的数据点映射到高位的特征空间中,并在新的特征空间中聚类。非线性映射增加了数据点线性可分的概率,从而在经典的聚类算法失效的情况下,通过引入核函数可以达到更为准确的聚类结果。

5 改进的算法

(1)Kmeans++
随机选择第一个簇心,则在选取之后簇心的时候,距离当前n个簇心越远的点有更高被选为第n+1的簇心。
(2)ISODATA算法
当K值不确定的时候,可以使用ISODATA算法。全称是迭代自组织数据分析法。
算法思想是当属于某个类别的样本过少时,把该类别去除;当属于某个类别的样本数过多、分散成都较大时,把该类别分为两个子类别。在K均值上增加了两个操作,一个是分裂操作,对应增加聚类中心数,二是合并操作,对应减少聚类重心数。

缺点是:需要指定的参数比较多。有四个,分别是

  • 预期的聚类中心数目K
  • 每类所要求的最小样本数目 N m i n N_{min} Nmin​,用于类别删除。
  • 最大方差Sigma。用于控制某个类别中样本的分散程度,用于类别分裂。
  • 两个聚类重心之间所允许的最小距离 D m i n D_{min} Dmin​。
目录
相关文章
|
5月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
6月前
|
算法 数据挖掘 定位技术
基于密度的聚类算法能够在含有噪声的数据集中识别出任意形状和大小的簇(Matlab代码实现)
基于密度的聚类算法能够在含有噪声的数据集中识别出任意形状和大小的簇(Matlab代码实现)
148 1
|
6月前
|
机器学习/深度学习 分布式计算 算法
【风场景生成与削减】【m-ISODATA、kmean、HAC】无监督聚类算法,用于捕获电力系统中风场景生成与削减研究(Matlab代码实现)
【风场景生成与削减】【m-ISODATA、kmean、HAC】无监督聚类算法,用于捕获电力系统中风场景生成与削减研究(Matlab代码实现)
257 0
|
6月前
|
机器学习/深度学习 数据采集 算法
【风光场景生成】基于改进ISODATA的负荷曲线聚类算法(Matlab代码实现)
【风光场景生成】基于改进ISODATA的负荷曲线聚类算法(Matlab代码实现)
151 0
|
7月前
|
人工智能 算法 安全
【博士论文】基于局部中心量度的聚类算法研究(Matlab代码实现)
【博士论文】基于局部中心量度的聚类算法研究(Matlab代码实现)
223 0
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
1474 6
|
7月前
|
算法 数据可视化 数据挖掘
基于AOA算术优化的KNN数据聚类算法matlab仿真
本程序基于AOA算术优化算法优化KNN聚类,使用Matlab 2022A编写。通过AOA搜索最优特征子集,提升KNN聚类精度,并对比不同特征数量下的聚类效果。包含完整仿真流程与可视化结果展示。
|
8月前
|
机器学习/深度学习 人工智能 算法
AP聚类算法实现三维数据点分类
AP聚类算法实现三维数据点分类
285 0
|
8月前
|
监控 算法 决策智能
基于盲源分离与贝叶斯非局部均值的图像降噪算法
基于盲源分离与贝叶斯非局部均值的图像降噪算法
286 0
|
监控 算法 安全
内网桌面监控软件深度解析:基于 Python 实现的 K-Means 算法研究
内网桌面监控软件通过实时监测员工操作,保障企业信息安全并提升效率。本文深入探讨K-Means聚类算法在该软件中的应用,解析其原理与实现。K-Means通过迭代更新簇中心,将数据划分为K个簇类,适用于行为分析、异常检测、资源优化及安全威胁识别等场景。文中提供了Python代码示例,展示如何实现K-Means算法,并模拟内网监控数据进行聚类分析。
351 10

热门文章

最新文章