聚类(2)-- Fuzzy k-means clustering

来源:互联网 发布:矩阵计算 中文 pdf 编辑:程序博客网 时间:2024/04/30 00:27

在传统的k-means聚类算法的每步迭代中,每个数据点被硬划分到一个cluster。Fuzzy k-means试图松弛上述条件,即认为每个数据点与cluster center之间的membership不是取自{0,1},而是[0,1],而上述membership就是当前数据点属于一个cluster center所代表的cluster的概率。

Fuzzy k-means聚类算法试图最小化如下cost function:

Jfuz = sum(sum(P(wi|xj,theta)^b*||xj-mi||^2)),其中第一个sum对所有cluster求和,第二个sum对所有数据点求和,theta是上述membership函数对应的参数向量,P(wi|xj,theta)是当前数据点xj属于由第i个cluster的概率,b是自由参数,当b = 0时,上述目标函数变成硬划分,即一个数据点被指定给一个cluster。当 b>1 时,上述目标函数将允许数据点在一定概率下从属于所有cluster。

当P(wi|xj,theta)满足:

P(wi|xj,theta) = 1, 当xj距离第i个cluster center mi最近;

P(wi|xj,theta) = 0,其他

则上述目标函数即为k-means的目标函数,即k-means是Fuzzy k-means的一种特殊情况。


Fuzzy k-means的迭代过程如下:

1、给定cluster number 为K,以及初始中心m1,m2,...,mK,以及自由参数b(一般取b>=1)

2、计算每个数据点从属于每个cluster的概率,例如令a(j,i) = exp(-(xj-mi)),其中xj为第j个数据点(j=1,2,...,N),

定义p(j,i) = a(j,i)/sum(a(j,i))(其中sum对j求和)

3、重新计算中心mi = (sum(p(j,i)^b*xj))/(sum(p(j,i)^b))(其中sum对j求和)

4、循环2,3,直至中心m1,m2,...,mK不再变化,或者变化小于给定的阈值。

原创粉丝点击