模糊c均值聚类算法详细讲解

  • (一)聚类和模糊简述
  • (二)模糊c均值聚类原理
    • (1)目标函数
    • (2)隶属度矩阵Uij和簇中心Cij
    • (3)终止条件
  • (三)模糊c均值聚类算法步骤

本文是在另一篇博客的基础上加上了自己的理解: 另一篇博客.

(一)聚类和模糊简述

聚类分析是多元统计分析的一种,也是无监督模式识别的一个重要分支,在模式分类、图像处理和模糊规则处理等众多领域中获得最广泛的应用。它把没有类别标记的样本按照某种准则划分为若干子集,使相似的样本尽可能归于一类,而把不相似的样本划分到不同的类中。硬聚类把每个待识别的对象严格的划分某类中,具有非此即彼的性质(非0即1),而模糊聚类建立了样本对类别的不确定描述,更能客观的反应客观世界,从而成为聚类分析的主流。

在很多问题中,结果只有两种可能,即取0或者1,比如一个学生不是男生就是女生。但是这样不能描述很多事物的属性,比如天气冷热程度,没有一个明确的定义来规定什么温度是热什么是冷。原因在于在很多情况下多个类别之间的界限并不是绝对的明确。
需要用模糊性词语来判断,模糊数学和模糊逻辑把只取1或0二值(属于/不属于)的普通集合概念推广[0,1]之间的实数,即隶属度。用“隶属度”来描述元素和集合之间的关系,通过隶属度来表示样本属于某一类的概率。

(二)模糊c均值聚类原理

模糊c-均值聚类算法 fuzzy c-means algorithm ( FCM)。在众多模糊聚类算法中,模糊C-均值( FCM) 算法应用最广泛且较成功,它通过优化目标函数得到每个样本点对所有类中心的隶属度,从而决定样本点的类属以达到自动对样本数据进行分类的目的。给每个样本赋予属于每个簇的隶属度函数,通过隶属度值大小来将样本归类。
模糊c均值聚类主要有三个关键参数,固定数量的集群、每个群集一个质心、每个数据点属于最接近质心对应的簇。

(1)目标函数

模糊c均值聚类通过最小化目标函数来得到聚类中心。目标函数本质上是各个点到各个类的欧式距离的和(误差的平方和)。聚类的过程就是最小化目标函数的过程,通过反复的迭代运算,逐步降低目标函数的误差值,当目标函数收敛时,可得到最终的聚类结果。
下面是目标函数:

其中,m为聚类的簇数(类数),N 为样本数,C 为聚类中心数。cj 表示第 j 个聚类中心,和样本特征维数相同,xi 表示第 i 个样本,uij 表示样本 xi 对聚类中心 cj 的隶属度(即 xi 属于 cj 的概率)。||∗|| 可以是任意表示数据相似性(距离)的度量,最常见的就是欧几里得范数(又称欧氏范数,L2范数,欧氏距离):

(2)隶属度矩阵Uij和簇中心Cij

隶属度矩阵应当是 N∗C 的矩阵,隶属度矩阵表示的是每个样本点属于每个类的程度。对于单个样本xi,它对于每个簇的隶属度之和为1。对于每个样本点在哪个类的隶属度最大归为哪个类。越接近于1表示隶属度越高,反之越低。

求每组的聚类中心ci,使得目标函数最小(因为目标函数与欧几里德距离有关,目标函数达到最小时,欧式距离最短,相似度最高),这保证了组内相似度最高,组间相似度最低的聚类原则。


我们发现uij与ci是相互关联的,彼此包含对方,有一个问题就是在fcm算法开始的时候既没有uij也没有ci,那要怎么求解呢?很简单,程序开始的时候我们随便赋值给uij或者ci其中的一个,只要数值满足条件即可。然后就开始迭代,比如一般的都赋值给uij,那么有了uij就可以计算ci,然后有了ci又可以计算uij,反反复复,在这个过程中还有一个目标函数J一直在变化,逐渐趋向稳定值。那么当J不在变化的时候就认为算法收敛到一个比较好的解了。可以看到uij和ci在目标函数J下似乎构成了一个正反馈一样,所有我们可以不用求目标函数,不断迭代计算隶属度uij和簇中心cj达到我们的要求即可。

(3)终止条件

上图为终止条件,其中 t 是迭代步数,ε 是一个很小的常数表示误差阈值。也就是说迭代地更新 uij 和 cj 直到前后两次隶属度最大变化值不超过误差阈值。即继续迭代下去,隶属程度也不会发生较大的变化,认为隶属度不变了,已经达到比较优(局部最优或全局最优)状态了。这个过程最终收敛于 Jm 的局部极小值点或鞍点。

(三)模糊c均值聚类算法步骤

FCM算法步骤:
(1)选择类别的数目C,选择合适的m,初始化由隶属度函数确定的矩阵U0(随机值[0,1]之间初始化);
(2)计算聚类的中心值Cj;
(3)计算新的隶属度矩阵Uj
(4)比较Uj和U(j+1),如果两者的变化小于某个阈值,则停止算法,否则转向(2)。

模糊c均值聚类算法原理详细讲解相关推荐

  1. python kmeans聚类 对二维坐标点聚类_Kmeans均值聚类算法原理以及Python如何实现

    第一步.随机生成质心 由于这是一个无监督学习的算法,因此我们首先在一个二维的坐标轴下随机给定一堆点,并随即给定两个质心,我们这个算法的目的就是将这一堆点根据它们自身的坐标特征分为两类,因此选取了两个质 ...

  2. php fuzzy,模糊C均值聚类算法(Fuzzy C-means)

    模糊c均值聚类与k均值聚类区别 k均值聚类 k均值聚类的实现中,把每个样本划分到单一的类别中,亦即是每个样本只能属于一种类别,不能属于多种类别.这样的划分,称为硬划分. 模糊c均值均类 为了解决硬划分 ...

  3. python计算iris数据集的均值_模糊C均值聚类算法及python实现

    目录 本文采用数据集为iris,将iris.txt放在程序的同一文件夹下.请先自行下载好. 模糊理论 模糊控制是自动化控制领域的一项经典方法.其原理则是模糊数学.模糊逻辑.1965,L. A. Zad ...

  4. 灰狼算法 c语言 代码,基于灰狼优化的模糊C—均值聚类算法

    谢亮亮+刘建生+朱凡 摘要:针对模糊C-均值聚类算法(FCM)存在易受初始聚类中心影响和容易陷入局部最优的问题,提出了一种将灰狼优化算法(GWO)和模糊C-均值相结合的新聚类算法(GWO-FCM).该 ...

  5. 具有自适应空间强度约束和隶属度链接的鲁棒模糊c均值聚类算法

    a b s t r a c t 实践证明,模糊C均值聚类方法是一种有效的图像分割方法.然而,对于噪声图像,FCM方法并不稳健且不太精确.提出了一种改进的FCM方法--FCM _ SICM法,用于噪声图 ...

  6. FCM 模糊C均值聚类算法

    首先FCM在图像分割领域有很多应用,FCM算法我觉得主要是两个部分,一个是模糊理论,一个是C/Kmean算法,这两者在数学家手中完美的结合. 下面切入整体,我也是为了温故才写的这篇博客,如有错误或者瑕 ...

  7. 【图像分割】基于局部信息的模糊C均值聚类算法(FLICM)实现图像分割matlab代码

    1 简介 以图像分割为研究内容,分析了图像的空频域特征,并在此基础之上提出了一种基于模糊局部信息C均值聚类的分割算法.由于FLICM算法充分利用局部空间信息和局部灰度信息,能够很好地描述模糊性,对于边 ...

  8. k均值算法原理详细讲解以及matlab代码实现

    有研究生物电信号处理和机器学习的欢迎加我qq429500506共同交流学习进步. 最近更新文章的频率太低了,主要原因是不想为了发文章而发文章,想潜心研究,写好文章,顺便想说一句开源万岁,最近一个月虽然 ...

  9. HyperLogLog 使用及其算法原理详细讲解

    本文已收录于专栏 ❤️<Redis之大厂必备技能包>❤️ 欢迎各位关注.三连博主的文章及专栏,全套Redis学习资料,大厂必备技能! 目录 一.简介 二.命令 2.1 PFADD key ...

  10. 基于FCM模糊C均值聚类算法的MATLAB仿真

    目录 1.算法仿真效果 2.MATLAB源码 3.算法概述 4.部分参考文献 1.算法仿真效果 matlab2022a仿真结果如下: 2.MATLAB源码 %*********************

最新文章

  1. Exchange 2016集成ADRMS系列-12:域内outlook 2010客户端测试
  2. ViewBag、ViewData和TempData使用方法、区别与联系
  3. PPPOE/PPPOA白皮书小结
  4. Java数据库——事务处理
  5. PHP基础知识(三)
  6. GStreamer 入门 - Hello,World
  7. PHP代码调试神器Whoops
  8. 年薪15W的程序员因为掌握这个技能,薪资翻倍!
  9. state的简写方式
  10. %02 java_02_Java语法
  11. BZOJ3421 : Poi2013 Walk
  12. 排序算法__冒泡排序
  13. 互动拍照 — AR拍照
  14. linux关闭云锁服务器,安全软件之linux系统下云锁简单的安装方法
  15. 尚学堂高淇python笔记_【129天】尚学堂高琪Java300集视频精华笔记(62)
  16. 第六章_信号 : signal函数--信号
  17. 程序员的十层楼,比尔盖茨仅第四层,你能到第几层?
  18. python朝圣之路-模块篇
  19. UWA DAY 2021 议程亮相
  20. 手机管理应用研究【3】—— 垃圾清理篇

热门文章

  1. IOS人脸识别开发入门教程--人脸检测篇
  2. 最详细的讲解过滤器,拦截器,AOP的区别
  3. linux查看iozone安装目录,IOZone的基本使用
  4. java——编程案例
  5. 【Linux】NUC977移植使用libmodbus
  6. 【libmodbus-vs2019】测试使用
  7. cad编程c语言,基于C.NET的AutoCAD二次开发简版.pdf
  8. 胜为蓝牙适配器驱动_胜为USB蓝牙适配器4.0驱动下载
  9. 【026】国务院督查组莅临翼辉信息参观调研
  10. python图像风格迁移教程_【人工智能】python图像风格迁移,来欣赏梵高风格的石原里美吧!...