K-means与FCM都是经典的聚类算法,K-means是排他性聚类算法,即一个数据点只能属于一个类别,而FCM只计算数据点与各个类别的相似度。可理解为:对任一个数据点,使用K-means算法,其属于某个类别的相似度要么100%要么0%(非是即否);而对于FCM算法,其属于某个类别的相似度只是一个百分比。
两个算法的思想都可归结为求一个相似度对象函数的最小值。设X是一个有n个元素的d维数据集合:,将其聚为k类(或C类)。
K-means对象函数的数学模型为:。其几何含义是设定k个子集
:
,每个子集
都有一个质心
,求得集合
中所有点
到质心
的距离之和,所有这些距离之和就是J。每一次迭代就是计算子集
的质心
,以及哪些数据点
归属到
中,迭代结束的依据就是
的归属不再发生变化。其中
是选定的一种距离描述算法,用于描述某数据点
到质心
的距离,一般选用闵式距离。
FCM对象函数的数学模型为:。其数学含义是设定C个子集
:
,
是
的质心,集合X中每一个数据点
归属到子集
的概率是
,m是任意大于等于1的实数的权重指数(m取值的研究这里不涉及),
可以是任意表示数据点
与子集
的相似度算法,算法迭代的过程就是求得归属概率
以及质心
,迭代终止的依据是需要设定一个终止值
,使得
,即第k轮与第k+1轮迭代求得的
差距的最大值要小于
,其几何含义将使得
最小或位于马鞍形的位置。
质心的算法公式:
,即对于某一类别j,计算所有数据节点
与其归属概率
(加权)的乘积之和再和归属概率(加权)之和的比值。
归属概率的算法公式:
,即数据点
与质心
的相似度(加权)和
与其他类别质心的相似度(加权)的比值之和。
将K-means与FCM算法使用矩阵表示,性质如下:
对于K-means算法,每一行只会有一个元素为100%,其他均为0,对于FCM算法,每一行的归属概率之和为100%。
参考:
http://home.deib.polimi.it/matteucc/Clustering/tutorial_html/cmeans.html