首先通过一个实例给出k-means聚类算法。图1中呈现了三种颜色,分别是黑色、灰色和白色。假设它们的灰度值分别是0、150、255。我们的目标是想把三种颜色按色调的相似性把它们分成两类,那么就会有相邻两种颜色聚成一类,另一种颜色单独成一类。首先就需要随机初始化两个数作为聚类的中心。
情况一:随机初始化两个数10(A类)、100(B类),那么黑色属于A类,灰色和白色属于B类,然后调整聚类的中心,A类中心变成0,B类中心变成227.5。然后我们发现三种颜色所属的类别没有发生变化,那么我们就可以认为k-means算法结束了。最后的结果是黑色聚成单独一类,白色和灰色聚成一类。
情况二:随机初始化两个数190(A类)、220(B类),那么黑色和灰色属于A类,白色属于B类,然后调整聚类的中心,A类中心变成75,B类中心变成255。然后我们发现三种颜色所属的类别没有发生变化,那么我们就可以认为k-means算法结束了。最后的结果是白色聚成单独一类,黑色和灰色聚成一类。
通过这个例子可以解释k-means不稳定的原因,因为该算法对于随机初始化中心的依赖性大。为了克服这个问题,我们乘热打铁,接下来引出神经网络的聚类算法——自组织神经网络SOM(self organized map)。
图1
自组织竞争网络的基本思想是:网络竞争层各个神经元竞争对输入模式的响应机会,最后仅一个神经元成为竞争的胜者,并对那些与获胜神经元有关的各连接权值朝向更有利于竞争的方向调整。获胜神经元表示输入模式的分类。