1、模式识别,第三章-聚类分析 K-means聚类,2019/2/5,主要内容,K-means算法 Matlab程序实现 在图像分割上的简单应用 算法的优缺点 初始中心的选取对算法的影响 Kernel K-means算法,2019/2/5,K-means聚类算法,算法描述 为中心向量c1, c2, , ck初始化k个种子 分组: 将样本分配给距离其最近的中心向量 由这些样本构造不相交( non-overlapping )的聚类 确定中心: 用各个聚类的中心向量作为新的中心 重复分组和确定中心的步骤,直至算法收敛,2019/2/5,K-means聚类算法(续),分组: 将样本分配给距离它们最近的中心
2、向量,并使目标函数值减小确定中心: 亦须有助于减小目标函数值,原因:等式成立的充要条件:,2019/2/5,K-means聚类算法(续),算法的具体过程 从数据集 中任意选取k个赋给初始的聚类中心c1, c2, , ck; 对数据集中的每个样本点xi,计算其与各个聚类中心cj的欧式距离并获取其类别标号:按下式重新计算k个聚类中心;重复步骤2和步骤3,直到达到最大迭代次数为止。,2019/2/5,Matlab程序实现,function M, j, e = kmeans(X, K, Max_Its) N,D=size(X); I=randperm(N); M=X(I(1:K),:); Mo = M
3、; for n=1:Max_Itsfor k=1:KDist(:,k) = sum(X - repmat(M(k,:),N,1).2,2);endi, j=min(Dist, , 2);for k=1:Kif size(find(j=k)0M(k, :) = mean(X(find(j=k), :);endend,2019/2/5,Matlab程序实现(续),Z = zeros(N,K);for m=1:NZ(m,j(m) = 1;ende = sum(sum(Z.*Dist)./N);fprintf(%d Error = %fn, n, e);Mo = M; end,2019/2/5,在图像
4、分割上的简单应用,例1:,图片:一只遥望大海的小狗; 此图为100 x 100像素的JPG图片,每个像素可以表示为三维向量(分别对应JPEG图像中的红色、绿色和蓝色通道) ; 将图片分割为合适的背景区域(三个)和前景区域(小狗); 使用K-means算法对图像进行分割。,2019/2/5,在图像分割上的简单应用(续),分割后的效果,注:最大迭代次数为20次,需运行多次才有可能得到较好的效果。,2019/2/5,在图像分割上的简单应用(续),例2:,注:聚类中心个数为5,最大迭代次数为10。,2019/2/5,算法的优缺点,优点: 思想简单易行; 时间复杂度接近线性; 对大规模数据的挖掘具有高效
5、性和可伸缩性。 缺点: 最终的结果会随初始中心的变化而变化; 算法依赖于用户指定的k值; 各聚类间线性不可分时,K-means算法就会失效。,2019/2/5,初始中心的选取对算法的影响,棋盘格数据集(Checkerboard data set) 仅使用其中486个正类数据,并将数据变换到-1,1之间,分布情况如下图所示:,2019/2/5,初始中心的选取对算法的影响(续),初始聚类中心均在左下角,即均为-1,1,迭代次数:1000,2019/2/5,初始中心的选取对算法的影响(续),初始聚类中心均在中心附近,2019/2/5,初始中心的选取对算法的影响(续),初始聚类中心在平面内随机选取,2
6、019/2/5,Kernel K-means算法,K-means算法的聚类结果,修改欧氏距离度量 ,即引入基于核函数的距离度量,使聚类可以产生任意形状?,2019/2/5,Kernel K-means算法(续),数学符号,非线性映射: ,将样本从输入空间映射到高维的特征空间。,聚类中心:,注意:聚类中心的维数与特征空间维数相同,所以可以将其表示为输入样本在特征空间中像的加权和。 对聚类中心的更新只需对系数矩阵 进行更新。,2019/2/5,Kernel K-means算法(续),基于核函数的距离度量:其中 为核函数,在Kernel K-means算法中通常使用Gaussian核函数:,2019
7、/2/5,Kernel K-means算法(续),分组:将xt+1赋给最近的中心m:,2019/2/5,Kernel K-means算法(续),聚类中心的更新公式:,其中,则有:,的更新公式为:,2019/2/5,Kernel K-means算法(续),棋盘格数据上的聚类效果,Kernel K-means算法的聚类结果,2019/2/5,作业,编程实现X-means算法(K-means+BIC)http:/www.cs.cmu.edu/dpelleg/download/xmeans.pdf体会基于模型选择的自动聚类个数选取方法。编程实现K-means+cluster Validityhttp:/www.csse.monash.edu.au/roset/papers/cal99.pdf体会基于聚类有效性的自动聚类个数选取方法,