聚类结果的好坏与原始数据集的相关属性具有一定关系,而聚类得到的相关数据都是一些不容易理解的数字信息,很难从中得到数据簇拆分重组、数量变化、聚类结果稳定性等信息。研究聚类结果的可视化方法能够发现聚类过程中的相关规律,对数据挖掘和聚类的相关研究具有重要意义。
然而,目前聚类相关研究仍然依靠单纯的数据集的聚类结果数据分析,难以发现其中的相关规律和内在联系。文献[1-3]中对聚类结果的分析比较详细,但是很难发现聚类结果的稳定性与数据集中的维度关系。文献[4]中提出了一种聚类结果可视化的分析方法,是一种基于matlab中dendrogram而改进的方法,可以看出聚类变化的过程,但是不能发现聚类结果与维度的关系、数据簇数量的变化,本质上还是一种dendrogram。目前的可视化方法主要缺点[5-11]:(1)无法显式表现数据集聚类结果稳定性与数据属性的关系; (2)无法展示数据簇在聚类过程中数量变化。如图 1所示,dendrogram只能表现出数据集聚类过程中数据簇重组情况,无法表现聚类结果与数据属性的内在联系以及数量的变化。
![]() |
图 1 matlab中dendrogram Fig. 1 The dendrogram of matlab |
本文提出的PC方法,能够提供一种显式的方法对聚类结果进行分析,容易表现数据集聚类变化过程、数据簇的数量变化,发现聚类结果与数据属性的内在联系。即PC方法能够很好的记录和表现聚类过程中数据簇的数量变化、拆分和重组等情况,对聚类研究具有重要作用。
1 PC聚类结果可视化分析方法PC方法的基本思想是记录数据集聚类过程中的一系列矩阵,利用图的形式直观的表现出聚类结果与某个属性的关系和聚类过程中数据簇的变化,图中矩形块的长度表示聚类结果中数据簇的数量,相近类别的矩形块之间的连线表示数据簇的拆分和重组关系以及变化过程。数据簇拆分后组成其他数据簇,然后从不同的数据簇分出一部分组成新数据簇,这种情形越多,PC图中交叉现象就越严重,说明聚类结果的稳定性越差。通过这种直观的描述,根据数据簇的拆分重组情况,评价聚类结果稳定性与某个属性是否有一定的关系。
通过对不同聚类数k下聚类结果的分析,得到一个原始数据的分类矩阵,该矩阵包含了每个原始数据被分到了相应类别的信息,然后将此分类矩阵通过PC技术以更加直观的图表方式表现出来。具体实现如下:
输入:数据集X={x1, x2, x3, …, xn };
输出:聚类结果的PC图。
① 通过调用聚类算法,得到数据集聚类结果的类别矩阵
$ \mathit{\boldsymbol{id}}{\mathit{\boldsymbol{x}}_{n \times 1}} = \left[ {\begin{array}{*{20}{c}} {1 \sim k}\\ \vdots \\ {1 \sim k} \end{array}} \right], $ | (1) |
式中:k=1, 2, 3, …, 7, 代表对数据集聚类数目; 1~k数据集中这一条记录属于1~k中的某一类; n代表数据集记录的数量。
② 把得到的类别矩阵合并为一个矩阵
首先初始化HB矩阵:
$ \mathit{\boldsymbol{H}}{\mathit{\boldsymbol{B}}_{n \times 1}} = \left[ {\begin{array}{*{20}{c}} 1\\ \vdots \\ 1 \end{array}} \right], $ | (2) |
经过k次聚类,然后通过公式合并矩阵
$ \mathit{\boldsymbol{H}}{\mathit{\boldsymbol{B}}_{n \times 1}} = \left[ {\begin{array}{*{20}{c}} {\mathit{\boldsymbol{HB}}}&{\mathit{\boldsymbol{idx}}} \end{array}} \right] = \left[ {\begin{array}{*{20}{c}} 1& \cdots &{1 \sim k}\\ \vdots & \cdots & \vdots \\ 1& \cdots &{1 \sim k} \end{array}} \right], $ | (3) |
式中,n代表数据集数据的数量,n≥0且n为整数。
③ 通过HB矩阵统计目前k聚类结果与k-1聚类结果的对应关系,存储聚类过程的矩阵记为重组矩阵
初始化矩阵TJX,如下:
$ \mathit{\boldsymbol{TJ}}{\mathit{\boldsymbol{X}}_{k \times \left( {k + 1} \right)}} = \left[ {\begin{array}{*{20}{c}} 0& \cdots &0\\ \vdots & \ddots & \vdots \\ 0& \cdots &0 \end{array}} \right], $ | (4) |
式中k代表聚类的类别数。
然后运用下面公式计算TJX矩阵。
$ \mathit{\boldsymbol{TJX}} = \sum\limits_{i = 1}^n {\left\{ {\mathit{\boldsymbol{TJX}}\left( {\mathit{\boldsymbol{HB}}\left( {i, k} \right), \mathit{\boldsymbol{HB}}\left( {i, k - 1} \right)} \right) + 1} \right\}} , $ | (5) |
式中n为HB矩阵中的行数。
④ 利用HB矩阵统计矩阵中的相同数值,计算统计矩阵
$ \mathit{\boldsymbol{T}}{\mathit{\boldsymbol{J}}_{k \times 3}} = \left( {\begin{array}{*{20}{c}} 1&{\sum\limits_{i = 1}^n {\mathit{\boldsymbol{TJ}}\left( {1, 2} \right)} + 1, if\;\mathit{\boldsymbol{HB}}\left( {i, 1} \right) = 1}&{\frac{{\sum\limits_{i = 1}^n {\mathit{\boldsymbol{TJ}}\left( {k, 2} \right)} + 1, if\;\mathit{\boldsymbol{HB}}\left( {i, 1} \right) = 1}}{{\sum\limits_{i = 1}^n {\mathit{\boldsymbol{TJ}}\left( {1, 2} \right)} + 1}}}\\ \vdots & \vdots & \vdots \\ 1&{\sum\limits_{i = 1}^n {\mathit{\boldsymbol{TJ}}\left( {k, 2} \right)} + 1, if\;\mathit{\boldsymbol{HB}}\left( {i, k} \right) = k}&{\frac{{\sum\limits_{i = 1}^n {\mathit{\boldsymbol{TJ}}\left( {k, 2} \right)} + 1, if\;\mathit{\boldsymbol{HB}}\left( {i, k} \right) = k}}{{\sum\limits_{i = 1}^n {\mathit{\boldsymbol{TJ}}\left( {1, 2} \right)} + 1}}} \end{array}} \right), $ | (6) |
式中k代表聚类的类别数。
⑤ 计算聚类数目为i时矩形条的高度的一半
$ BH = \frac{{GD + \left( {i - 1} \right) \times 0.5}}{2}, $ | (7) |
式中:GD为设定的值,代表数据集记录数量,值越大,PC尺寸越大; i为此时的聚类数目。
⑥ 初始化存储此前矩形块的坐标和长度矩阵
$ \mathit{\boldsymbol{ZB}}{\mathit{\boldsymbol{H}}_{H \times 2}} = \left[ {\begin{array}{*{20}{c}} 0&0\\ \vdots & \vdots \\ 0&0 \end{array}} \right], $ | (8) |
式中,H为矩阵TJ的行数。
⑦ 循环画出代表每簇数据的矩阵块, 并记录此次循环的相关数据,计算矩阵块的长度
$ \begin{array}{l} JS = 6.0 + BH - GD \times \frac{{\sum\limits_{j = 1}^j {\mathit{\boldsymbol{TJX}}\left( {j, 3} \right)} }}{{100.0}} - \\ \;\;\;\left( {j - 1} \right) \times 0.5, \end{array} $ | (9) |
式中,j为此前的聚类数目,j=1, 2, …,H。
使用matlab自带的rectangle公式画出矩形块
$ \begin{array}{l} \mathit{rectangle}\left( {\mathit{\boldsymbol{'}}Position', \left[ {0.95 + \left( {i - 1} \right) \times 1.0, JS, } \right.} \right.\\ \left. {\left. {0.1, GD \times \frac{{\mathit{\boldsymbol{TJ}}\left( {j, 3} \right)}}{{100.0}}} \right], \mathit{'}facecolor', \left[ {0, 0, 0} \right]} \right), \end{array} $ | (10) |
式中i为此时的聚类数目。
利用ZBH矩阵存储此时的矩形块的长度和坐标
$ \mathit{\boldsymbol{ZBH}}\left( {j, 1} \right) = JS, $ | (11) |
$ \mathit{\boldsymbol{ZBH}}\left( {j, 2} \right) = GD \times \frac{{\mathit{\boldsymbol{TJ}}\left( {j, 3} \right)}}{{100.0}}。$ | (12) |
⑧ 循环画出矩形块之间的变化过程:
根据TJX矩阵计算矩形块之间的变化数量
$ SGD = \frac{{\mathit{\boldsymbol{TJX}}\left( {m, n} \right)}}{{CH}} \times GD, $ | (13) |
式中:m=1, 2, …, H; n=1, 2, …, i; CH为HB矩阵的记录数量。
调用matlab中line函数画出数据簇之间的变化过程
$ \begin{array}{l} line\left( {\left[ {1.05 + \left( {i - 2} \right) \times 1.0, 0.95 + \left( {i - 1} \right) \times 1.0} \right], } \right.\\ \left. {\left[ {\mathit{\boldsymbol{ZBQ}}\left( {n, 1} \right) + \mathit{\boldsymbol{ZBQ}}\left( {n, 2} \right) + \mathit{\boldsymbol{ZBH}}\left( {m, 1} \right) + \mathit{\boldsymbol{ZBH}}\left( {m, 2} \right)} \right]} \right), \end{array} $ | (14) |
$ \begin{array}{l} line\left( {\left[ {1.05 + \left( {i - 2} \right) \times 1.0, 0.95 + \left( {i - 1} \right) \times 1.0} \right], } \right.\\ \left[ {\mathit{\boldsymbol{ZBQ}}\left( {n, 1} \right) + \mathit{\boldsymbol{ZBQ}}\left( {n, 2} \right), \mathit{\boldsymbol{ZBH}}\left( {m, 1} \right) + \mathit{\boldsymbol{ZBH}}\left( {m, 2} \right) - } \right.\\ \left. {\left. {SGD} \right]} \right), \end{array} $ | (15) |
$ \mathit{\boldsymbol{ZBQ}}\left( {n, 2} \right) = \mathit{\boldsymbol{ZBQ}}\left( {n, 2} \right) - SGD, $ | (16) |
$ \mathit{\boldsymbol{ZBH}}\left( {m, 2} \right) = \mathit{\boldsymbol{ZBH}}\left( {m, 2} \right) - SGD, $ | (17) |
其中,
$ \mathit{\boldsymbol{ZBQ}} = \left\{ \begin{array}{l} \mathit{\boldsymbol{ZBH}}, i = 1\\ \mathit{\boldsymbol{ZBZ}}, i > 1 \end{array} \right.。$ | (18) |
本文实验的数据集包括自行设计的人工数据集Balls和2个UCI数据集,各数据集的基本信息如表 1所示。
![]() |
表 1 数据集的基本信息 Table 1 Information of data sets |
本次实验选择的数据集是一系列二维的坐标点,用PC方法进行分析。本文用的聚类方法是谱聚类,也可以采用其他聚类算法,在此不做累述。下面是数据集Balls,如图 2所示。
![]() |
图 2 balls数据集 Fig. 2 Data set of balls |
在实验中,使用PC方法进行计算分别得到了x维度的PC(见图 3(a))和y维度的PC(见图 3(b))。
![]() |
图 3 balls数据集按不同维度计算得到的PC Fig. 3 PC from balls data set calculated by different dimensions |
按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 Fig. 4 PC clustered by different dimensions in glass data set |
(2) 对数据集heart的分析通过PC可视化算法对数据集heart进行分析,分别得到了2维度的PC(见图 5(a))和7维度的PC(见图 5(b)),判断出heart数据集按7维度聚类效果比按2维度聚类效果好。
![]() |
图 5 heart数据集按不同维度聚类的PC Fig. 5 PC clustering heart data set by different dimensions |
本文运用PC方法针对不同的数据集进行实验,能够展现出聚类的过程中数据簇的拆分和重组情况,很容易地发现其他可视化算法不能展现出的聚类结果稳定性与不同维度的数据之间的规律,极大的提高了聚类分析的效率。
[1] |
Luxburg U V. A tutorial on spectral clustering[J]. Statistics and Computing, 2007, 17(4): 395-416. DOI:10.1007/s11222-007-9033-z
( ![]() |
[2] |
Zhao Feng, Jiao Licheng, Liu Hanqiang, et al. Spectral clustering with eigenvector selection based on entropy ranking[J]. Neurocomputing, 2010, 73: 1704-1717. DOI:10.1016/j.neucom.2009.12.029
( ![]() |
[3] |
Jiang W X, Hu Y J, Gao L, et al. The impact of various time intervals on the supragingival plaque dynamic core microbiome[J]. Plos One, 2014, 10(5): 5-7.
( ![]() |
[4] |
Matthias Schonlau. The clustergram: A graph for visualizing hierarchical and nonhierarchical cluster analyses[J]. The Stata Journal, 2002, 2(4): 391-402. DOI:10.1177/1536867X0200200405
( ![]() |
[5] |
Ilmarinen P, Tuomisto L E, Onni Niemelä, et al. Cluster analysis on longitudinal data of patients with adult-onset asthma[J]. J Allergy ClinImmunolPract, 2017, 48(suppl 60): 970-976.
( ![]() |
[6] |
Matthias Schonlau. Visualizing non-hierarchical and hierarchical cluster analyses with clustergrams[J]. Computational Statistics, 2004, 19(1): 95-111. DOI:10.1007/BF02915278
( ![]() |
[7] |
Weijermars W, Van Berkum E. Analyzing highway flow patterns using cluster analysis[C].//Intelligent Transportation Systems.[s.l.]: IEEE, 2017: 3-4.
( ![]() |
[8] |
Cynthia G Gray, Andrew D Lasiter, Cen Li, et al. Mono-and digalactosyldiacylglycerol composition of dinoflagellates. I. Peridinin-containing taxa[J]. British Phycological Bulletin, 2009, 44(2): 191-197. DOI:10.1080/09670260802419481
( ![]() |
[9] |
Doron J, Raphaël Trouillet, Anaïs Maneveau, et al. Coping profiles, perceived stress and health-related behaviors: A cluster analysis approach[J]. Health Promot Int, 2017, 30(2): 88-100.
( ![]() |
[10] |
França F G R, Araújo A F B. The conservation status of snakes in central brazil[J]. South American Journal of Herpetology, 2008(2006): 25-36.
( ![]() |
[11] |
Smith J, Smith N, Yu L, et al. A comparative analysis of host responses to avian influenza infection in ducks and chickens highlights a role for the interferon-induced transmembrane proteins in viral resistance[J]. BMC Genomics, 2015, 16(1): 1-19. DOI:10.1186/1471-2164-16-1
( ![]() |