魏振钢, 郑东辉, 魏兆强
(中国海洋大学信息科学与工程学院,山东 青岛 266100)
聚类结果的好坏与原始数据集的相关属性具有一定关系,而聚类得到的相关数据都是一些不容易理解的数字信息,很难从中得到数据簇拆分重组、数量变化、聚类结果稳定性等信息。研究聚类结果的可视化方法能够发现聚类过程中的相关规律,对数据挖掘和聚类的相关研究具有重要意义。
然而,目前聚类相关研究仍然依靠单纯的数据集的聚类结果数据分析,难以发现其中的相关规律和内在联系。文献[1-3]中对聚类结果的分析比较详细,但是很难发现聚类结果的稳定性与数据集中的维度关系。文献[4]中提出了一种聚类结果可视化的分析方法,是一种基于matlab中dendrogram而改进的方法,可以看出聚类变化的过程,但是不能发现聚类结果与维度的关系、数据簇数量的变化,本质上还是一种dendrogram。目前的可视化方法主要缺点[5-11]:(1)无法显式表现数据集聚类结果稳定性与数据属性的关系;(2)无法展示数据簇在聚类过程中数量变化。如图1所示,dendrogram只能表现出数据集聚类过程中数据簇重组情况,无法表现聚类结果与数据属性的内在联系以及数量的变化。
本文提出的PC方法,能够提供一种显式的方法对聚类结果进行分析,容易表现数据集聚类变化过程、数据簇的数量变化,发现聚类结果与数据属性的内在联系。即PC方法能够很好的记录和表现聚类过程中数据簇的数量变化、拆分和重组等情况,对聚类研究具有重要作用。
图1 matlab中dendrogram
PC方法的基本思想是记录数据集聚类过程中的一系列矩阵,利用图的形式直观的表现出聚类结果与某个属性的关系和聚类过程中数据簇的变化,图中矩形块的长度表示聚类结果中数据簇的数量,相近类别的矩形块之间的连线表示数据簇的拆分和重组关系以及变化过程。数据簇拆分后组成其他数据簇,然后从不同的数据簇分出一部分组成新数据簇,这种情形越多,PC图中交叉现象就越严重,说明聚类结果的稳定性越差。通过这种直观的描述,根据数据簇的拆分重组情况,评价聚类结果稳定性与某个属性是否有一定的关系。
通过对不同聚类数k下聚类结果的分析,得到一个原始数据的分类矩阵,该矩阵包含了每个原始数据被分到了相应类别的信息,然后将此分类矩阵通过PC技术以更加直观的图表方式表现出来。具体实现如下:
输入:数据集X={x1,x2,x3,…,xn};
输出:聚类结果的PC图。
①通过调用聚类算法,得到数据集聚类结果的类别矩阵
(1)
式中:k=1,2,3,…,7,代表对数据集聚类数目;1~k数据集中这一条记录属于1~k中的某一类;n代表数据集记录的数量。
②把得到的类别矩阵合并为一个矩阵
首先初始化HB矩阵:
(2)
经过k次聚类,然后通过公式合并矩阵
(3)
式中,n代表数据集数据的数量,n≥0且n为整数。
③通过HB矩阵统计目前k聚类结果与k-1聚类结果的对应关系,存储聚类过程的矩阵记为重组矩阵
初始化矩阵TJX,如下:
(4)
式中k代表聚类的类别数。
然后运用下面公式计算TJX矩阵。
(5)
式中n为HB矩阵中的行数。
④利用HB矩阵统计矩阵中的相同数值,计算统计矩阵
(6)
式中k代表聚类的类别数。
⑤计算聚类数目为i时矩形条的高度的一半
(7)
式中:GD为设定的值,代表数据集记录数量,值越大,PC尺寸越大;i为此时的聚类数目。
⑥初始化存储此前矩形块的坐标和长度矩阵
(8)
式中,H为矩阵TJ的行数。
⑦循环画出代表每簇数据的矩阵块,并记录此次循环的相关数据,计算矩阵块的长度
(j-1)×0.5,
(9)
式中,j为此前的聚类数目,j=1,2,…,H。
使用matlab自带的rectangle公式画出矩形块
rectangle(′Position′,[0.95+(i-1)×1.0,JS,
(10)
式中i为此时的聚类数目。
利用ZBH矩阵存储此时的矩形块的长度和坐标
ZBH(j,1)=JS,
(11)
(12)
⑧循环画出矩形块之间的变化过程:
根据TJX矩阵计算矩形块之间的变化数量
(13)
式中:m=1,2,…,H;n=1,2,…,i;CH为HB矩阵的记录数量。
调用matlab中line函数画出数据簇之间的变化过程
line([1.05+(i-2)×1.0,0.95+(i-1)×1.0],[ZBQ(n,1)+ZBQ(n,2),ZBH(m,1)+ZBH(m,2)]),
(14)
line([1.05+(i-2)×1.0,0.95+(i-1)×1.0],[ZBQ(n,1)+ZBQ(n,2),ZBH(m,1)+ZBH(m,2)-SGD]),
(15)
ZBQ(n,2)=ZBQ(n,2)-SGD,
(16)
ZBH(m,2)=ZBH(m,2)-SGD,
(17)
其中,
(18)
本文实验的数据集包括自行设计的人工数据集Balls和2个UCI数据集,各数据集的基本信息如表1所示。
表1 数据集的基本信息
2.2.1 对Balls数据集的分析 本次实验选择的数据集是一系列二维的坐标点,用PC方法进行分析。本文用的聚类方法是谱聚类,也可以采用其他聚类算法,在此不做累述。下面是数据集Balls,如图2所示。
图2 balls数据集
在实验中,使用PC方法进行计算分别得到了x维度的PC(见图3(a))和y维度的PC(见图3(b))。
图3 balls数据集按不同维度计算得到的PC
按x维度得到的PC从数据簇为4时开始,往后的拆分重组不多,交叉不多。而按y维度得到的PC从数据簇为4时开始,往后的拆分重组现象比较严重,交叉复杂。通过比较上述两种情形,能够很容易的看到数据集在y维度的聚类过程中,数据簇的拆分重组现象比较严重,判断出balls数据集按x维度聚类效果比按y维度聚类效果好。
2.2.2 对UCI其他数据集分析
(1)对数据集glass的分析 通过PC可视化算法对数据集glass进行分析,分别得到了9维度的PC(见图4(a))和2维度的PC(见图4(b)),判断出glass数据集按2维度聚类效果比按9维度聚类效果好。
图4 glass数据集按不同维度聚类的PC
(2)对数据集heart的分析 通过PC可视化算法对数据集heart进行分析,分别得到了2维度的PC(见图5(a))和7维度的PC(见图5(b)),判断出heart数据集按7维度聚类效果比按2维度聚类效果好。
图5 heart数据集按不同维度聚类的PC
本文运用PC方法针对不同的数据集进行实验,能够展现出聚类的过程中数据簇的拆分和重组情况,很容易地发现其他可视化算法不能展现出的聚类结果稳定性与不同维度的数据之间的规律,极大的提高了聚类分析的效率。