K均值聚类分析Word格式文档下载.docx
《K均值聚类分析Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《K均值聚类分析Word格式文档下载.docx(8页珍藏版)》请在冰点文库上搜索。
一种叫相似系数,性质越接近的样本或变量,它们的相似系数越接近1或-1,而彼此无关的变量或样本它们的相似系数越接近0,相似的为一类,不相似的为不同类。
另一种叫距离,它是将每一个样本看做p维空间的一个点,并用某种度量测量点与点之间的距离,距离较近的归为一类,距离较远的点应属于不同的类。
2.2动态聚类法思想
动态聚类方法、亦称逐步聚类法.一类聚类法.属于大样本聚类法。
具体作法是:
先粗略地进行预分类,然后再逐步调整,直到把类分得比较合理为止。
这种分类方法较之系统聚类法,具有计算量较小、占用计算机存贮单元少、方法简单等优点,所以更适用于大样本的聚类分析,是一种普遍被采用的方法。
这种方法具有以下三个要素:
(1)选定某种距离度量作为样本间的相似性度量;
(2)确定某种可以评价聚类结果质量的准则函数;
(3)给定某个初始分类,然后用迭代算法找出使得准则函数取极值的最好聚类结果。
动态聚类法在计算迭代过程中,类心会随着迭代次数进行修正和改变。
动态聚类法的基本步骤:
(1)选取初始聚类中心及有关参数,进行初始聚类。
(2)计算模式和聚类的距离,调整模式的类别。
(3)计算各聚类的参数,删除,合并或分裂一些聚类。
(4)从初始聚类开始,运用迭代算法动态地改变模式的类别和聚类的中心,使准则函数取极值或设定的参数达到设计要求时停止。
2.3K-均值聚类算法的思想
K-均值算法是一种基于划分的聚类算法,它通过不断的迭代过程来进行聚类,当算法收敛到一个结束条件时就终止迭代过程,输出聚类结果。
由于其算法思想简便,又容易实现,因此K一均值算法己成为一种目前最常用的聚类算法之一。
K-均值算法解决的是将含有n个数据点(实体)的集合
划分为k个类
的问题,其中
,算法首先随机选取k个数据点作为k个类的初始类中心,集合中每个数据点被划分到与其距离最近的类中心所在的类中,形成了k个聚类的初始分布。
对分配完的每一个类计算新的类中心,然后继续进行数据分配的过程,这样迭代若干次之后,若类中心不再发生变化,则说明数据对象全部分配到自己所在的类中,证明函数收敛。
在每一次的迭代过程中都要对全体数据点的分配进行调整,然后重新计算类中心,进入下一次迭代过程,若在某一次迭代过程中,所有数据点的位置没有变化,相应的类中心也没有变化,此时标志着聚类准则函数已经收敛,算法结束。
通常采用的目标函数形式为平方误差准则函数:
其中,
为数据对象,
表示类
的质心,E则表示数据集中所有对象的误差平方和。
该目标函数采用欧氏距离。
K-均值聚类算法的过程描述如下:
(1)任选k个模式特征矢量作为初始聚类中心:
,令k=0.
(2)将待分类的模式识别特征矢量集
中的模式逐个按最小距离原则分划给k类中的某一类,即
如果
,则判
式中,
表示
和
的中心
的距离,上标表示迭代次数,于是产生新的聚类
(3)计算重新分类后的各类心
为
类中所含模式的个数。
(4)如果
,则结束;
否则,
,转至步骤
(2)。
3.结果分析
在二维和三维空间里,原样本点为蓝色,随机选取样本点中的四个点作为中心,用*表示,其他对象根据与这四个聚类中心(对象)的距离,根据最近距离原则,逐个分别聚类到这四个聚类中心所代表的聚类中,每完成一轮聚类,聚类的中心会发生相应的改变,之后更新这四个聚类的聚类中心,根据所获得的四个新聚类中心,以及各对象与这四个聚类中心的距离,根据最近距离原则,对所有对象进行重新归类。
再次重复上述过程就可获得聚类结果,当各聚类中的对象(归属)已不再变化,整个聚类操作结束。
经过K均值聚类计算,样本点分为红,蓝,绿,黑四个聚类,计算出新的四个聚类中心,用*表示。
该算法中,一次迭代中把每个数据对象分到离它最近的聚类中心所在类,这个过程的时间复杂度O(nkd),这里的n指的是总的数据对象个数,k是指定的聚类数,d是数据对象的位数:
新的分类产生后需要计算新的聚类中心,这个过程的时间复杂度为O(nd)。
因此,这个算法一次迭代后所需要的总的时间复杂度为O(nkd).
通过实验可以看出,k个初始聚类中心点的选取对聚类结果有较大的影响,因为在该算法中是随机地任意选取k个点作为初始聚类中心,分类结果受到取定的类别数目和聚类中心初始位置的影响,所以结果只是局部最优。
K-均值算法常采用误差平方和准则函数作为聚类准则函数(目标函数).目标函数在空间状态是一个非凸函数,非凸函数往往存在很多个局部极小值,只有一个是全局最小。
所以通过迭代计算,目标函数常常达到局部最小而难以得到全局最小。
聚类个数k的选定是很难估计的,很多时候我们事先并不知道给定的数据集应该分成多少类才合适。
关于K-均值聚类算法中聚类数据k值得确定,有些根据方差分析理论,应用混合F统计量来确定最佳分类树,并应用了模糊划分熵来验证最佳分类的准确性。
将类的质心(均值点)作为聚类中心进行新一轮聚类计算,将导致远离数据密集区的孤立点和噪声点会导致聚类中心偏离真正的数据密集区,所以K-均值算法对噪声点和孤立点非常敏感。
图1为未聚类前初始样本及中心,图2为聚类后的样本及中心。
图1未聚类前初始样本及中心
图1聚类后的样本及中心
4.程序:
clear;
clc;
TH=0.001;
N=20;
n=0;
th=1;
%第一类数据
mu1=[000];
%均值
S1=[300;
030;
003];
%协方差矩阵
X1=mvnrnd(mu1,S1,50);
%产生多维正态随机数,mul为期望向量,s1为协方差矩阵,50为规模
mu2=[444];
%均值
S2=[000;
X2=mvnrnd(mu2,S2,50);
mu3=[-44-4];
S3=[300;
X3=mvnrnd(mu3,S3,50);
X=[X1;
X2;
X3];
%三类数据合成一个不带标号的数据类
plot3(X(:
1),X(:
2),X(:
3),'
+'
);
%显示
holdon
gridon
title('
初始聚类中心'
k=4;
[count,d]=size(X);
centers=X(round(rand(k,1)*count),:
id=zeros(count,1);
%会出聚类中心
plot3(centers(:
1),centers(:
2),centers(:
kx'
...
'
MarkerSize'
10,'
LineWidth'
2)
plot3(centers(:
ko'
dist=zeros(k,1);
newcenters=zeros(k,d);
while(n<
N&
&
th>
TH)
%whilen<
N
forix=1:
count
forik=1:
k
dist(ik)=sum((X(ix,:
)-centers(ik,:
)).^2);
end
[~,tmp]=sort(dist);
%离哪个类最近则属于那个类
id(ix)=tmp
(1);
end
th=0;
forik=1:
k
idtmp=find(id==ik);
iflength(idtmp)==0
return;
newcenters(ik,:
)=sum(X(idtmp,:
),1)./length(idtmp);
th=th+sum((newcenters(ik,:
)-centers(ik,:
centers=newcenters;
n=n+1;
figure
(2)
plot3(X(find(id==1),1),X(find(id==1),2),X(find(id==1),3),'
r*'
),holdon
plot3(X(find(id==2),1),X(find(id==2),2),X(find(id==2),3),'
g*'
plot3(X(find(id==3),1),X(find(id==3),2),X(find(id==3),3),'
b*'
plot3(X(find(id==4),1),X(find(id==4),2),X(find(id==4),3),'
k*'
最终聚类中心'
gridon
WelcomeTo
Download!
!
欢迎您的下载,资料仅供参考!