聚类算法,是一种无监督的学习方法,他将相似的对象归到统一簇中,簇内的对象越相似,聚类效果也就越好,我们用簇识别表示给出聚类结果的含义。他有点像全自动分类,假定有一些数据,现在将相似数据归到一起,簇识别会告诉我们这些簇到底都是什么;聚类和分类的最大不同在于,分类的目标事先已知,而聚类则不一样。因为其产生的结果与分类相同,而只是类别没有预先定义,聚类有时也被称为无监督学习。

聚类算法的目的是将相似的对象聚到一起,所以我么就需要一个衡量对象相似度的方法。在机器学习中大多数都是用距离衡量对象之间的相似度的,聚类算法也是用距离来衡量。

  • K-均值聚类算法

K-均值聚类算法,是从给定的数据集的k个簇。簇个数k是用户给定的,每一个簇通过其质心,即簇中所有点的中心来描述。点与点之间的相似度计算,和KNN算法一样,我们用欧式距离来衡量。也可以用其他自己喜欢的距离度量方法。

其算法的基本思路及过程如下:

  1. 随机确定k个点作为初始的质心;
  2. 分别计算集合中的点到这k个质心距离,并将每个点归到距离其最近的那个质心所在的簇;如果所有点所属的簇都没发生改变,则到步骤(4)
  3. 分别计算2中生成的k个簇中所有点的均值,并将其作为新的质心。并返回步骤(2)。
  4. 返回所有簇的质心。聚类结束。

看整个过程其实算法挺简单的,不需要复杂的数据推理什么的。但是这个可能会有一些极端的情况:

图1

假设我们要对图1中的9个点进行分类,k值为3。如果正好我们初始的点选择的是3,6,9,那么我们最终的结果可能是{1,9,8},{2,3,4},{5,6,7},那这个结果明显就不是我们想要的结果,即质心的初始化导致结果不好,下面是一个更加实际的图:

图2

如图2所示更加真实化的因为质心初始化问题,导致分类结果不好。所以我们就需要对其做进一步的后处理,从而来提高聚类的性能。

  • 使用后处理来提高聚类的性能

考虑图2中的情况,我们虽然使算法收敛了,但是分类效果较差,原因是K-均值算法收敛到了局部最小值,而非全局最小值(局部最小值指的是结果还可以,但是并非是最好的结果,全局最小值是可能的最好的结果)。

我们用SSE(Sum of Squared Error,误差平方和)来衡量聚类的效果。SSE值越小表示数据点越接近于他们的质心,聚类效果越好。在看图2,虽然收敛了,但是每个簇中的点距离中心点的距离是很大的。所以我们需要对聚类后的簇进行后处理,使其更加优化。

一种方法是将具有最大SSE值的簇划分为两个簇。具体是现实可以将最大簇包含的点过滤出来并在这些点上运行K-均值算法,设置k的值为2。为了保持总簇数不变,我们需要将某两个簇进行合并。参考图2的结果目前是三角是一个簇,圆圈是一个簇,方块是一个簇,从图上我们可以看出得先对三角进行2分,然后可以分为:左侧三角、右侧三角、圆、方块4个簇,接下来需要合并簇,根据合并之后簇SSE最小,我么会把左侧三角和圆合并,剩下右侧三角和方块;还是不理想,明显下来需要把左侧三角和圆组成的簇划分,分成左三角+上面两个圆、下面圆、方块、有三角4个簇,接下来就很容易算出需要将下面圆和方块合并,这样就得到了最终优化结果:三角+上面两个圆、下面圆+方块、右三角3个簇。

对于上面的合并过程有两个办法:合并最近的质心,或者合并两个是的SSE增幅最小的质心。第一种思路通过计算所有质心之间的距离,然后合并距离最近的两个点来实现。第二种方法,需要合并两个簇然后计算踪SSE值。必须在所有可能的两个簇上重复上述处理过程,直到找到合并最佳的两个簇为止。

  • 二分K-均值算法

为了克服K-均值算法收敛于局部最小值的问题,有人提出了另一个称为二分K-均值算法,思路特别简单

  1. 从整个集合开始;
  2. 生成一个列表,放的是各个簇信息(例如簇编号,中心点),刚开始所有集合是一个簇;
  3. 计算所有簇的SSE值,并将其加起来作为整体的SSE值;
  4. 遍历所有的簇列表,分别将其2分,计算分后的SSE,和分前的整体的SSE值,找出分后使原来的SSE值减小最大的列表中的簇进行划分为两个簇,此时簇数加1,此时被划分的簇就相当于不存在了,被两个新簇代替,然后更新两个新簇的质心,以及簇列表,还有最大的SSE值;
  5. 如果当前簇数等于我们的目标簇数,结束算法,否则返回步骤(4)。

注:过程中的2分,就是在对应数据集上运行k为2的K-均值聚类算法,生成两个聚类。

  • 总结

K-均值聚类算法,就是要将一堆混在一起的数据,相似的分到一块,从而发现每一类所具有的特点和其潜在的价值。当然前提我们可能清楚要分为几类,但是并不知道个个类的具体的一些特征,通过聚类后,找到相似类,就可以更好分析其特征。

K-均值聚类(K-means)算法相关推荐

  1. 聚类之K均值聚类和EM算法

    这篇博客整理K均值聚类的内容,包括: 1.K均值聚类的原理: 2.初始类中心的选择和类别数K的确定: 3.K均值聚类和EM算法.高斯混合模型的关系. 一.K均值聚类的原理 K均值聚类(K-means) ...

  2. 聚类分析 | MATLAB实现k-Means(k均值聚类)分析

    目录 聚类分析 | MATLAB实现k-Means(k均值聚类)分析 k-均值聚类简介 相关描述 程序设计 学习小结 参考资料 致谢 聚类分析 | MATLAB实现k-Means(k均值聚类)分析 k ...

  3. 非监督学习: K 均值聚类(原理、步骤、优缺点、调优)

    支持向量机.逻辑回归.决策树等经典的机器学习算法主要用于分类问题,即根据一些己给定类别的样本, 训练某种分类器,使得它能够对类别未知的样本进行分类.与分类问题不同,聚类是在事先并不知道任何样本类别标签 ...

  4. Spark数据挖掘-基于 K 均值聚类的网络流量异常检测(1): 数据探索、模型初探

    Spark数据挖掘-基于 K 均值聚类的网络流量异常检测(1): 数据探索.模型初探 1 前言 分类和回归是强大易学的机器学习技术.需要注意的是:为了对新的样本预测未知的值, 必须从大量已知目标值的样 ...

  5. k均值聚类算法(K Means)及其实战案例

    算法说明 K均值聚类算法其实就是根据距离来看属性,近朱者赤近墨者黑.其中K表示要聚类的数量,就是说样本要被划分成几个类别.而均值则是因为需要求得每个类别的中心点,比如一维样本的中心点一般就是求这些样本 ...

  6. Udacity机器人软件工程师课程笔记(二十一) - 对点云进行集群可视化 - 聚类的分割 - K-means|K均值聚类, DBSCAN算法

    聚类的分割 1.K-均值聚类 (1)K-均值聚类介绍 k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心 ...

  7. K-Means(K均值聚类算法)

    K-Means(K均值聚类算法) 1.前言 要学习聚类算法就要知道聚类学习算法是什么,为什么要学习聚类学习聚类学习算法,有什么用途,下面就简单的做一下介绍,并且详细的说明k-means均值聚类学习算法 ...

  8. k均值聚类算法python_K均值和其他聚类算法:Python快速入门

    k均值聚类算法python This post was originally published here 这篇文章最初发表在这里 Clustering is the grouping of obje ...

  9. Kmeans++、Mini-Batch Kmeans、Bisecting Kmeans、K中心点(K-Medoids)算法、K众数聚类、核K均值聚类

    Kmeans++.Mini-Batch Kmeans.Bisecting Kmeans.K中心点(K-Medoids)算法.K众数聚类.核K均值聚类 目录 Kmeans++.Mini-Batch Km ...

  10. 算法杂货铺——k均值聚类(K-means)

    算法杂货铺--k均值聚类(K-means) 2010-09-20 20:05 by T2噬菌体, 57998 阅读, 48 评论, 收藏, 编辑 4.1.摘要 在前面的文章中,介绍了三种常见的分类算法 ...

最新文章

  1. python 坐标轴刻度_给妹子讲python-S02E08坐标轴与主次刻度
  2. oracle sql developer sid,登录 Oracle SQL Developer
  3. android byte[]与图片的转换
  4. Redis分布式缓存
  5. 【SCOI2005】【BZOJ1087】互不侵犯King(状压dp)
  6. Qt DLL总结【三】-VS2008+Qt 使用QPluginLoader访问DLL
  7. html5media 原理,HTML媒体(Media)是什么
  8. 如何使用CommitMonitor工具监控 SVN
  9. c#重点知识解答(五)
  10. 查看EXE或DLL调用的DLL
  11. VirtualBox安装MAC虚拟机,屏幕分辨率小,扩大的办法
  12. 结对-人机对战象棋游戏-结对项目总结
  13. 图解项目绩效考核表实例--绩效考核不用愁
  14. 感谢所有的幸运与不幸 --- 致我的2016
  15. python逻辑回归模型建模步骤_Python逻辑回归——建模-评估模型
  16. iOS开发笔记 -- 动态切换APP的logo
  17. YOLOX改进之模型轻量化(Lite)
  18. 微信“戒烟”了!网友:我也戒
  19. 英雄远征Erlang源码分析(12)-任务模块解析
  20. 商城系统架构以及流程

热门文章

  1. 短信删了怎样找回信息
  2. MacBook VSCode 下载 安装 配置环境变量 Path
  3. 【Linux】_面试题总结之Docker、Lvs、chown、服务器和数据库的备份和还原、云计算的了解、服务器性能指标、服务器的资源管理、openstack的组件
  4. android锁屏代码分析,Android 监听锁屏、解锁、开屏 功能代码
  5. uestc 宝贵资源 1265 (水)
  6. 2021年安全员-B证最新解析及安全员-B证新版试题
  7. 雕刻笔应用开发,3D Systems Openhaptics Unity Plugin插件使用心得
  8. Microsoft Security Essentials 和 Windows Defender 离线升级包下载地址
  9. npm install报错C:\Program Files\Git\cmd\git.EXE ls-remote -h -t ssh://git@github.com/sohee-lee7/Squire
  10. arm-linux-gcc编译x264