An Entropy Weighting k-Means Algorithm for Subspace Clustering of High-Dimensional Sparse Data

来源:互联网 发布:淘宝联盟登录 编辑:程序博客网 时间:2024/05/21 06:12

本内容整理自 An Entropy Weighting k-Means Algorithm for Subspace Clustering of High-Dimensional Sparse Data

这里写图片描述

前一篇论文Automated Variable Weighting in k-Means Type Clustering里面的WKMeans算法说到如何选择有用的特征维度(subspace),但有一个问题就是:在那篇文章中,选择后的subspace将用于对所有簇进行聚类。例如,某数据集,其特征维度n=7,(x1,x2x7),经过WKMeans算法筛选后,确定其subspace为(x1,x2,x6,x7),然后在进行聚类的时候这4个维度就成为了主要的聚类依据。也就是说,在每一个簇中,起主要作用的都是这4个维度。

但这将出现一个问题就是:如果每一个簇中,起主要作用的维度不相同怎么办?

例如:在对新闻文章进行聚类的时候。假定某数据集有三类,k=1为体育,k=2为政治,k=3为经济,其特征维度n=10,(x1,x2x10)。很明显,在进行聚类的时候每个簇所依据的特征维度(subspace)不同,比如第一个簇可能依据的是(x1,x2,x5,x9),比如第二个簇可能依据的是(x1,x3,x7,x9)。一句话总结就是:在每一个簇中,都有自己的subspace维度,而这是WKMeans算法所不能解决的。而这篇文章提出的EWKM算法,将会解决这一问题。

1.EWKM算法的代价函数:

F(W,Z,Λ)=l=1kj=1ni=1mωljλli(zlixji)2+γi=1mλlilogλlisubjec tol=1kωlj=1,1jn,1lk,ωlj{0,1}i=1mλli=1,1lk,1im,0λli1

其中:

k 表示聚类的总数;
m 表示数据集中对象的个数;
n表示向量的维度;
ω表示分配矩阵,维度为k×n;
λ表示每一个簇所对应的权重,维度为k×m;
log(e)=ln(e)=1;γ>0
红色项称为:within cluster dispersions
蓝色项称为:negative weight entropy

下图为f(x)=xlog(x)的函数图像:

这里写图片描述

这就解释了为什么文章中说最大化蓝色项了,因为蓝色项小于零,最大化后就接近于零,这样整个代价值才最接近最小。

2.权重λ的计算公式:

λlt=exp(Dltγ)i=1Mexp(Dliγ);whereDlt=j=1nωlj(zltxjt)2

关于公式推导及Dlt的详细解释见末尾

3.初始化变量:

先初始化变量k,参数γ,随机选择k个中心点以及将权重全部初始化为1/m

这里写图片描述

4.迭代求解变量:

这里写图片描述

①固定Z,Λ,求解分配矩阵W(实际中一般不用矩阵来表示,见源码);

这里写图片描述
②固定W,Λ,求解中心点Z;

这里写图片描述

③固定W,Z,求解权重Λ

4.公式推导:

这篇文章推导公式所用到的方法同上一篇一样,都是采用的拉格朗日乘数法

这里写图片描述

关于:

Dlt=j=1nωlj(zltxjt)2

有如下数据集:

x11x21x31x12x22x32x13x23x33x14x24x34其中n=4,m=3,k=2(red,blue);分配矩阵W2×3=[k=1k=2101001],表示第一二个点属于第一个簇,第三个点属于第二个簇


两个簇的中心点z1=[z11z12z13z14],z2=[z21z22z23z24]

下面来分步计算:

D11=j=1nwlj(zltxjt)2=j=1nw1j(z11xj1)2=w11(z11x11)2+w12(z11x21)2+w13(z11x31)2=1(z11x11)2+1(z11x21)2+0(z11x31)2

由此得到:

D11D12D13D14=1(z11x11)2+1(z11x21)2+0(z11x31)2=1(z12x12)2+1(z12x22)2+0(z12x32)2=1(z13x13)2+1(z13x23)2+0(z13x33)2=1(z14x14)2+1(z14x24)2+0(z14x34)2


将上面的形式旋转一下:
这里写图片描述

我么可以发现:

D11就是所有属于第一个簇的点的第一个维度,到对应中心点的第一个维度的距离和;
D12就是所有属于第一个簇的点的第二个维度,到对应中心点的第二个维度的距离和;
Dlt就是所有属于第l个簇的点的第t个维度,到对应中心点的第t个维度的距离和;

矢量化为:

for k = 1:K    %% computing D    % in each iteration, computing the kth row of D.    index = find(Xy(:,n+1)==k);% firstly,find all points's index belong to kth cluster    temp = X(index,:);% take out all points belong to kth cluster from X    square = (temp - centroids(k,:)).^2;    D(k,:) = sum(square);end

matlab源码

阅读全文
0 0
原创粉丝点击