K均值(K 您所在的位置:网站首页 试述模糊聚类的思想方法及其应用 K均值(K

K均值(K

2024-07-15 01:03| 来源: 网络整理| 查看: 265

1.算法简介

K均值算法是经典的基于相似度划分聚簇的算法,其核心思想就是不断通过迭代更新聚簇中心。算法开始之前首先选取K个数据样本作为初始聚簇质心,根据聚簇中心与其他数据样本的距离,依次将其他数据对象划分到距离最近的聚簇质心的类中,划分完毕后,重新选取新的聚簇中心迭代划分,直到达到最大迭代次数或者所有的聚类中心都不在发生改变为止。 k均值聚类算法步骤如下: 输入:聚类数目K和要分类的数据 1.随机从对象集中抽取个对象作为初始聚类中心;

2.对于所有的对象,分别计算其到各个聚类中的欧氏距离,相互比较后将其归属于距离最小的那一类;

3.根据2.得到的初始分类,对每个类别计算均值用来更新聚类中心;

4.根据新的聚类中心,重复进行2.和3.直至满足算法终止条件(迭代达到最大次数或者满足设定的准则函数)。 输出:K个分类结果 流程图: 在这里插入图片描述 通常需要一个衡量标准对聚类结果有效性评价,学者们对于聚类有效性进行研究,提出了很多聚类有效性指标来评价聚类结果并确定最佳聚类数 列举几个常见的聚类性能指标进行说明: DB(Davies-Bouldin)指标 DB 指标是类簇内紧致性和类簇间分离性的非线性组合。因为好的聚类结果要求类簇内的分散度iS 要小,类簇间的距离值要大,因此,DB取最小值时,聚类效果最好。 Sil (Silhouette )指标 聚类结果的优劣一般采用数据集中所有样本的平均 Sil 值进行评估,Sil 指标越大说明聚类效果越好,其范围是[0,1],Sil 值超过 0.5 说明聚类所得到的类簇能够明显区分,低于 0.3 说明一些类簇存在重叠,而 0.2 以下则说明数据集内样本数据没有实质类别区 分。 Calinski-Harabasz(CH)指标 CH 指标基于全部样本数据的类内离差矩阵和类间离差矩阵的测度,其最大值相对应的聚类数目是最佳聚类数。CH 指标不适用于聚类数目是 1 的情况。

在K均值算法中使用均方标准差作为准则函数,这个聚类标准旨在使所获得的聚类有以下特点:各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开。

2.K均值算法的不足

1.聚类数K值选取需要用户判断或使用准则函数确定,不同的K值会得到不同的局部最优结果。一般情况下K值的选择需要通过给定的几个K值进行聚类,并比较结果选择聚类效果最好的K值。 2.初始聚类质心的选取有待商榷,默认的选择方法是随机选取初始质心,然后进行聚类和迭代,最终收敛到最优结果,随机选取初始质心会造成聚类结果的随机性。 3.噪声点和离群点对聚类结果有影响,算法是不断迭代划分数据中心点的,噪声和离群点会干扰中心划分计算。 4.局部最优解问题,只能发现圆形区域,对高维数据效果聚类效果不佳等。

改进算法有兴趣的可以深入了解:模拟退火算法,遗传算法,粒子群算法等。

3.MATALB仿真

两个数据集: 1.Iris数据集是在分类实验时经常用到的一种数据集,分别取自3种不同类型的鸢尾花植物样本,每一类包含50条数据,每个数据包含四种不同的属性,包括花萼长度,花萼宽度,花瓣长度,花瓣宽度,通过这些不同的属性可以预测鸢尾花卉的种属。选用鸢尾花数据的花瓣长度和宽度属性数据。 2.高斯分布数据集 高斯分布也叫正态分布,是一个比较常见的连续概率分布。 在这里插入图片描述 先用MATLAB自带的K均值聚类函数试一下

[idx,cen]=kmeans(data,K,'Distance','sqeuclidean','Replicates',5,'Display','Final'); %K要提前给出,sqeuclidean表示采用欧氏距离,Replicates5表示重复5次取一个最优解,可以避免局部最优。

高斯分布,鸢尾花数据同下程序:

% 第一组数据 mu1=[0 0 ]; %均值(需要生成数据的均值) S1=[.1 0 ;0 .1]; %协方差(需要生成数据的自相关矩阵) data1=mvnrnd(mu1,S1,100); %产生高斯分布数据 %第二组数据 mu2=[1.25 1.25 ]; S2=[.1 0 ;0 .1]; data2=mvnrnd(mu2,S2,100); % 第三组数据 mu3=[-1.25 1.25 ]; S3=[.1 0 ;0 .1]; data3=mvnrnd(mu3,S3,100); % 三类数据合成一个不带标号的数据类 data=[data1;data2;data3]; [u,re]=kmeans(data,K,'Distance','sqeuclidean','Replicates',5,'Display','Final'); [m,n]=size(re); %最后显示聚类后的数据 figure; hold on; gscatter(data(:,1),data(:,2),u,['r','g','b','c','k']) for i=1:m if re(i,n)==1 plot(re(i,1),re(i,2),'m*'); else if re(i,n)==2 plot(re(i,1),re(i,2),'m*'); else plot(re(i,1),re(i,2),'m*'); end end end hold off

自带的函数初始聚类质心的位置好像是随机的,所以只能先改变K值观察结果再做后续研究。 设置K=2,3,4,5 重复5次取最优: 在这里插入图片描述 鸢尾花数据集的分类结果: 在这里插入图片描述 高斯分布的分类结果: 在这里插入图片描述

不同的类用不同的颜色标注且类的中心点也明显标注出来了,可以看出K=3时,分簇结果较好,也满足没使用K均值分簇之前,我们根据经验来判断合理的分簇结果。

K均值算法改进

实际的数据挖掘和机器学习应用中,K均值算法的初始聚类质心和K值都是难以捉摸的。 在初始聚类质心的选择上,可以使用Kmeans++ K-means++按照如下的思想选取K个聚类中心:假设已经选取了n个初始聚类中心(0



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有