KMeans聚类算法的缺陷及改进方法

2023-10-27

K-means 聚类算法

  • 特点
    • 对初始化敏感。初始点选择的不同,可能会产生不同的聚类结果
    • 最终会收敛。不管初始点如何选择,最终都会收敛
  • 算法思路
选择K个点作为初始质心  
repeat  
    将每个点指派到最近的质心,形成K个簇  
    重新计算每个簇的质心  
until 簇不发生变化或达到最大迭代次数  

KMeans算法的缺陷及改进方法

(1) K-Means聚类算法需要用户事先指定聚类的个数k值.在很多时候,在对数据集进行聚类的时候,用户起初并不清楚数据集应该分为多少类合适,对k值难以估计.

改进方法—— 安徽大学李芳的硕士论文中提到了k-Means算法的k值自适应优化方法 :可以通过在一开始给定一个适合的数值给k,通过一次K-means算法得到一次聚类中心。对于得到的聚类中心,根据得到的k个聚类的距离情况,合并距离最近的类,因此聚类中心数减小,当将其用于下次聚类时,相应的聚类数目也减小了,最终得到合适数目的聚类数。可以通过一个评判值E来确定聚类数得到一个合适的位置停下来,而不继续合并聚类中心。重复上述循环,直至评判函数收敛为止,最终得到较优聚类数的聚类结果。

(2) 对初始聚类中心敏感,选择不同的聚类中心会产生不同的聚类结果和不同的准确率.随机选取初始聚类中心的做法会导致算法的不稳定性,有可能陷入局部最优的情况.

改进方法—— K-Means++算法: 假设已经选取了n个初始聚类中心(0<n<k),则在选取第n+1个聚类中心时:距离当前n个聚类中心越远的点会有更高的概率被选为第n+1个聚类中心.在选取第一个聚类中心(n=1)时同样通过随机的方法.

(3) 对噪声和孤立点数据敏感,K-Means算法将簇的质心看成聚类中心加入到下一轮计算当中,因此少量的该类数据都能够对平均值产生极大影响,导致结果的不稳定甚至错误.

改进方法——离群点检测的LOF算法,通过去除离群点后再聚类,可以减少离群点和孤立点对于聚类效果的影响。

(4) 一旦集群具有复杂的几何形状,kmeans就不能很好地对数据进行聚类。

主要原因在于选取距离度量的方法。因为K-Means算法主要采用欧式距离函数度量数据对象之间的相似度,并且采用误差平方和作为准则函数,通常只能发现数据对象分布较均匀的球状簇.

改进方法:如果要处理不规则的数据,可以使用基于密度的DESCAN聚类算法。

  • 参考文献
    《Kmeans聚类算法及其评价方法和改进方向的研究》 周银平 李卫国 (102206 华北电力大学 北京)
    https://blog.csdn.net/u013129109/article/details/80063111
    https://blog.csdn.net/u010536377/article/details/50884416
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

KMeans聚类算法的缺陷及改进方法 的相关文章

随机推荐

  • Java虚拟机:Java模块化系统

    Java模块化系统目录 1 Java模块化系统 2 模块化的兼容性 1 模块路径 2 模块化系统访问路径规则 3 它本身面临的模块间的管理和兼容性问题 3 模块化的类加载器 1 模块化下的类加载器变动 2 类加载的委派关系变动 1 Java
  • (jsp和servlet功能篇)jsp+servlet+jquery分页代码

    首先看运行效果图 第一步 编写servlet 代码 package com rf servlet import java io IOException import java io OutputStream import java sql
  • 继续干IT的十个理由

    在其文章 不干IT的十个理由 中 Jack Wallen列举了一些离开IT这个行业的理由 而我呢 则愿意提供一个不同的观点 下面有我自己的一些思考 这些也许能对阐明为什么你应当留在IT有所帮助 1 钱 钱 钱 对 我们努力工作就是为了赚钱
  • python实现Lasso回归

    Lasso原理 Lasso与弹性拟合比较python实现 import numpy as np import matplotlib pyplot as plt from sklearn metrics import r2 score def
  • 上传文件的漏洞复现与修复

    本文只说一些我遇到过的上传文件的漏洞 毕竟漏洞太多 我又不可能全部发现 安全方面的小菜鸟 可能你们的系统比较完善 针对这些漏洞 已有相应的防御手段 我们针对的是那种比较简单的系统 就是各位上大学时自己开发的小系统 哈哈哈 利用漏洞的具体效果
  • 鸿蒙OS第四次作业

    数据获取 config json中 module reqPermissions name ohos permission GET NETWORK INFO name ohos permission SET NETWORK INFO name
  • Java——Map和Set的使用

    目录 引言 Map的使用方法 Set说明 用map统计数组中每个数字出现的次数 将数据去重 找出第一个重复出现的数字 宝石与石头 复制带随机指针的链表 只出现一次的数字 引言 Map和Set是适合动态查找的集合容器 Map中存储的就是key
  • oracle备份或还原数据库(expdp、impdp)

    1 首先新建或更改虚拟目录 因为数据泵方式 expdp 导出 和impdp 导入 需要虚拟目录路径 语法 create or replace directory 虚拟目录名 as 虚拟目录绝对路径 例子 创建或修改data backup逻辑
  • IntelliJ IDEA 创建Java项目

    Java模块让你可以开发Java SE和Java EE应用程序 由Java模块提供的核心功能可通过加入各种技术和框架支持进行扩展 当您创建好一个项目后 您可以创建一个Java模块 您还可以添加一个Java模块到现有项目 注意 这里说的Jav
  • Java-JDK8中的时间Api

    Java JDK8中的时间Api java time 1 本地日期 本地时间 本地日期时间的使用 LocalDate LocalTime LocalDateTime package com lmw time import org junit
  • 给Android工程师的Flutter入门手册

    前言 这是笔者作为一个Android工程师入门Flutter的学习笔记 笔者不想通过一种循规蹈矩的方式来学习 先学Dart语言 然后学习Flutter的基本使用 再到实践应用这样的步骤 这样的方式有点无趣且效率较低 笔者觉得对于已经有And
  • assert注意事项

    结论 直接使用 assert field null 可以快速的check属性 但是该方法会在使用反射的时候多一个属性 assertionsDisabled 分析 public class Assert static final boolea
  • oracle 中增加行,Oracle中实现FORM表单插入、锁定、更新行、删除行的包

    此包写在oracle数据库中 供Form表单调用 CREATE OR REPLACE PACKAGE BODY cux main pkg AS PROCEDURE insert row PROCEDURE insert row x row
  • placeHolder样式IOS不兼容 显示不全问题

    1 要先设置input 再设置placeholder 不然会被覆盖 2 先设置input 里面的字体大小需要大于placeholder的字体大小 转载于 https www cnblogs com zhangxin123 p 1147375
  • QT修改UI后运行不更新的问题

    qt creator ui界面修改后运行不产生作用 本质分析 参考了上述文章 在这里夸一下这篇文章 写的很好 对照自己的问题发现我的情况是 pro文件里包含了xx ui文件 这没错 ui xx h文件确实也根据UI修改的控件修改了代码 这也
  • 树莓派与PC端在局域网内运用python实现即时通讯

    本文来源于公众号 csdn2299 喜欢可以关注公众号 程序员学府 这篇文章主要为大家详细介绍了树莓派与PC端在局域网内运用python实现即时通讯 具有一定的参考价值 感兴趣的小伙伴们可以参考一下 电脑和树莓派在同一局域网内 先在电脑和树
  • LINUX CGI编程实例,linux_cgi编程(Linux_cgi programming).doc

    linux cgi编程 Linux cgi programming linux cgi编程 Linux cgi programming This article is contributed by whyang2006 Pdf docume
  • Rocky9.2基于http方式搭建局域网yum源

    当前负责的项目有几十台Linux服务器 在安装各类软件的时候需要大量依赖包 而项目部署的环境属于内网环境 与Internet网完全隔离 无法采用配置网络yum源的方式安装rpm包 直接在每台linux服务器上配置本地yum源也比较麻烦 而采
  • 南邮CTF-WEB-write-up 教程详细解说

    单身一百年也没用 Download COOKIE MYSQL sql injection 3 x00 bypass again 变量覆盖 PHP是世界上最好的语言 伪装者 Header 上传绕过 SQL注入1 pass check 起名字真
  • KMeans聚类算法的缺陷及改进方法

    文章目录 K means 聚类算法 KMeans算法的缺陷及改进方法 K means 聚类算法 特点 对初始化敏感 初始点选择的不同 可能会产生不同的聚类结果 最终会收敛 不管初始点如何选择 最终都会收敛 算法思路 选择K个点作为初始质心