当前位置:文档之家› 聚类分析—K-means and K-medoids聚类

聚类分析—K-means and K-medoids聚类

数据挖掘
Topic3--聚类分析 K-means &K-medoids 聚类
主要内容
K-means算法 Matlab程序实现 在图像分割上的简单应用 K-medoids算法
k-中心点聚类算法--PAM
K-medoids改进算法
2014-5-12
基于划分的聚类方法

构造n个对象数据库D的划分, 将其划分成k个聚类 启发式方法: k-平均值(k- means)和 k-中心点(k- medoids) 算 法
10 9
Swapping O and Oramdom If quality is improved.
8 7 6 5 4 3 2 1 0
Compute total cost of swapping
9 8 7 6 5 4 3 2 1 0
2014-5-12
0
1
2
3
4
5
6
7
8
9
10
0
1
2
3
4
5
6
7
8
9
10
PAM(续)
2014-5-12
k-中心点聚类方法(续) Βιβλιοθήκη 找聚类中的代表对象(中心点)
PAM (Partitioning Around Medoids, 1987)

首先为每个簇随意选择选择一个代表对象, 剩余的对象根 据其与代表对象的距离分配给最近的一个簇; 然后反复地 用非代表对象来替代代表对象,以改进聚类的质量 PAM 对于较小的数据集非常有效, 但不能很好地扩展到大 型数据集
k-中心点聚类方法(续)

算法: k-中心点
(1) 随机选择k个对象作为初始的代表对象;
(2) repeat
(3) 指派每个剩余的对象给离它最近的代表对象所代表的簇; (4) 随意地选择一个非代表对象Orandom; (5) 计算用Orandom代替Oj的总代价S; (6) 如果S<0,则用Orandom替换Oj,形成新的k个代表对象的集 合; (7) until 不发生变化


CLARA (Kaufmann & Rousseeuw, 1990)抽样 CLARANS (Ng & Han, 1994): 随机选样
2014-5-12
k-中心点聚类方法(续)

基本思想:

首先为每个簇随意选择选择一个代表对象; 剩余的对象 根据其与代表对象的距离分配给最近的一个簇
然后反复地用非代表对象来替代代表对象, 以改进聚类 的质量
2014-5-12
Matlab程序实现(续)
Z = zeros(N,K); for m=1:N Z(m,j(m)) = 1; end e = sum(sum(Z.*Dist)./N); fprintf('%d Error = %f\n', n, e); Mo = M; end
2014-5-12
k-平均聚类算法(续)
2014-5-12
PAM

PAM (Partitioning Around Medoids) (Kaufman and Rousseeuw, 1987)

是最早提出的k-中心点聚类算法 基本思想:

随机选择k个代表对象

反复地试图找出更好的代表对象: 分析所有可能的对象对,每个对 中的一个对象被看作是代表对象, 而另一个不是. 对可能的各种组合, 估算聚类结果的质量
best
24
sampled
2014-5-12
CLARA 改良
解決:CLARANS (Clustering Large Application based upon RANdomized Search) 应用 graph 考虑紧邻节点 不局限于区域性 负杂度:O(n^2) → 缺点

j
3. 按下式重新计算k个聚类中心; xs s:label ( s ) j cj , j 1, 2,..., k Nj
4. 重复步骤2和步骤3,直到达到最大迭代次数为止。
2014-5-12
Matlab程序实现
function [M, j, e] = kmeans(X, K, Max_Its) [N,D]=size(X); I=randperm(N); M=X(I(1:K),:); Mo = M; for n=1:Max_Its for k=1:K Dist(:,k) = sum((X - repmat(M(k,:),N,1)).^2,2)'; end [i, j]=min(Dist, [], 2); for k=1:K if size(find(j==k))>0 M(k, :) = mean(X(find(j==k), :)); end end
2014-5-12
在图像分割上的简单应用(续)
分割后的效果
注:最大迭代次数为20次,需运行多次才有可能得到较好的效果。
2014-5-12
在图像分割上的简单应用(续)
例 2:
注:聚类中心个数为5,最大迭代次数为10。
2014-5-12
k-平均聚类算法(续)

优点: 相对有效性: O(tkn),
其中 n 是对象数目, k 是簇数目, t 是迭代次数; 通常, k, t << n.
Assign each remainin g object to nearest medoids
7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10
K=2
Total Cost = 26
Randomly select a nonmedoid object,Oramdom
10
Do loop Until no change
2014-5-12
K-means聚类算法(续)

算法的具体过程 c2, …, ck;
N { x } 1. 从数据集 n n1 中任意选取k个赋给初始的聚类中心c1,
2. 对数据集中的每个样本点xi,计算其与各个聚类中心 cj的欧氏距离并获取其类别标号:
label (i) arg min || xi c j ||2 , i 1,..., N, j 1,..., k


有效性依赖于样本集的大小 基于样本的好的聚类并不一定是 整个数据集的好的聚类, 样本可能发生倾斜

例如, Oi是最佳的k个中心点之一, 但它不包含在样本中, CLARA将找不到 最佳聚类
2014-5-12
CLARA -- 效率

由取样大小决定 PAM → 利用完整资料集 CLARA → 利用取样资料集 盲点:取样范围不包含最佳解

当结果簇是密集的,而簇与簇之间区别明显时,它的效果 较好
Comment: 常常终止于局部最优.


全局最优 可以使用诸如确定性的退火(deterministic
annealing)和遗传算法(genetic algorithms)等技术得到
2014-5-12
k-平均聚类算法(续)

弱点

只有在簇的平均值(mean)被定义的情况下才能使用.可能不适用于 某些应用, 例如涉及有分类属性的数据



第四种情况:p当前隶属于Oi,i≠j。如果Oj被Orandom代替,且p离Orandom最近,
那么p被重新分配给Orandom
2014-5-12
k-中心点聚类方法(续)

1.重新分配给Oi
2. 重新分配给Orandom
3. 不发生变化
2014-5-12
4.重新分配给Orandom
k-中心点聚类代价函数的四种情况
需要预先指顶簇的数目k, 不能处理噪音数据和孤立点(outliers) 不适合用来发现具有非凸形状(non-convex shapes)的簇

2014-5-12
k-中心点聚类方法

k-平均值算法对孤立点很敏感!

因为具有特别大的值的对象可能显著地影响数据的分布.

k-中心点(k-Medoids): 不采用簇中对象的平均值作为参照

10
9

10
10 9 8 7 6 5
9
8
8
7
7
6
6
5
5
4
4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10
将每个 对象赋 给最类 似的中 心
10 9 8 7 6 5 4 3 2 1 0
3 2 1 0 0 1 2 3 4 5 6 7 8 9 10
更新簇 的平均 值 重新赋值
4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10
2014-5-12
PAM(续)
Total Cost = 20
10 9 8 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10
10 9 8
10 9 8
Arbitrary choose k object as initial medoids
7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10
2014-5-12
K-means聚类算法

算法描述
1. 为中心向量c1, c2, …, ck初始化k个种子 2. 分组: 将样本分配给距离其最近的中心向量 由这些样本构造不相交( non-overlapping ) 的聚类 3. 确定中心: 用各个聚类的中心向量作为新的中心 4. 重复分组和确定中心的步骤,直至算法收敛
重新赋值
10 9 8 7 6
K=2
任意选择 K个对 象作为初始聚类 中心
更新簇 的平均 值
相关主题