《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 一种基于信任值的分类属性聚类算法
一种基于信任值的分类属性聚类算法
来源:微型机与应用2012年第22期
李 梓,蒋庆丰,程晓旭,贾美娟
(大庆师范学院 计算机科学与技术学院,黑龙江 大庆163712)
摘要: 针对K-Modes算法的不足,提出了一种基于信任值的分类属性聚类算法TrustCCluster,该算法不需预先给定聚类个数,聚类结果稳定且不依赖于初始值的选取。在真实数据上验证了TrustCCluster聚类算法,并与K-Modes和P-Modes算法进行了对比,实验结果表明TrustCCluster算法是有效、可行的。
Abstract:
Key words :

摘  要: 针对K-Modes算法的不足,提出了一种基于信任值的分类属性聚类算法TrustCCluster,该算法不需预先给定聚类个数,聚类结果稳定且不依赖于初始值的选取。在真实数据上验证了TrustCCluster聚类算法,并与K-Modes和P-Modes算法进行了对比,实验结果表明TrustCCluster算法是有效、可行的。
关键词: 信任值;聚类;K-Modes算法;P-Modes算法

    聚类分析是一种非常重要的数据挖掘技术,已经被广泛应用于网络入侵检测、模式识别、图像处理、空间数据分析等领域。传统聚类算法可以分为基于划分的方法(如K-Means)[1]、基于层次的方法(如AGNES)[2]、基于密度的方法(如DBSCAN)[3]、基于网格的方法(如STING)[4]、基于模型的方法(如SOM)[5]等。
    K-Means算法是一种基于划分的典型算法,具有描述容易、实现简单且快速等优点。但K-Means算法只能处理数值属性。为克服这一局限,Huang等人提出了一种适合于处理分类属性数据的K-Modes算法[6-7]。该算法对于每个分类属性采用取值频度最大的属性值——模(mode)来表示类的对应“中心”,但这种表示难以准确反映类中对象的取值情况,导致距离计算不准确,并且当某个属性取值频度最大的属性值多于一个时,mode值不唯一。P-Modes算法[8]基于粗糙集理论,提出了一种新的距离度量方法,该距离度量在度量同一分类属性下两个属性值之间的差异时,克服了简单0-1匹配差异法的不足,既考虑了它们本身的异同,又考虑了其他相关分类属性对它们的区分性。
    K-Modes、P-Modes算法都是在K-Means算法基础上产生的一种针对分类属性的距离度量方法,和K-Means算法一样存在以下几点不足:(1)需要预先给定聚类个数K;(2)算法对初始值的选取依赖性极大;(3)算法容易陷入局部最优解。针对以上算法的不足,结合P-Modes的度量方法本文提出了一种基于信任值的分类属性聚类算法TrustCCluster,该算法无需预先给定聚类个数,聚类结果稳定,不依赖于初始值的选取,具有更高的聚类精度。


1.2 算法描述
    TrustCCluster算法具体步骤如下:
    (1)计算信任值
    所有数据点信任值初始值为0,遍历数据集中所有数据点,若任意两个数据点xi、xj(1≤i,j≤n)的距离d(xi,xj)<半径阀值R,则xi、xj的信任值都加1,否则不变。
    (2)按信任值大小对所有数据点进行降序排序
    (3)聚类形成簇
    ①i=1(i为数据点的序号);
    ②若xi未被访问过,则xi作为新生成簇Cluster的中心,否则转步骤⑥;
    ③j=i;
    ④如果d(xi,xj)<R且xj未被访问过,则将xj加到簇Cluster中并将xj标记为已访问过;
    ⑤j加1,若j≤n,转步骤④;
    ⑥i加1,若i≤n,转步骤②;
    ⑦结束。
    如图1所示,在半径阀值为R时,形成了3个簇,簇1的中心是信任值为4的点,一共包含5个点,簇2中心是信任值为3的点,包含3个点(不包括相交部分的点),簇3只包含1个点。
    (4)合并簇
    假设步骤(3)中,聚类形成M个簇。对于生成的M个簇,如果任意两个簇Clusteri、Clusterj的共享信任值Share≥(Clusteri.sonNum+Clusterj.sonNum)×Q,sonNum为簇的成员数即簇包含的数据点数,Q为给定的比例阈值,0<Q≤1,则这两个簇合并形成新的簇。可知簇合并关系R’是自反、对称、传递的,最终形成的簇是关系R’对M个簇的一个等价划分。
    如图1所示,如果Q≤1/(5+3)=0.125,则簇1和簇2会合并成一个新的簇。
    (5)输出聚类结果
    算法代码如下:
    //Step 1计算信任值
    for(i=1;i<n;i++)
        for(j=i+1;j≤n;j++)
        {
            if(d(xi,xj)<R)
            {
                xi.trust++;
                xj.trust++;
            }
        }
    //Step 2按信任值排序
        sort(dataSet);
    //Step 3聚类形成簇
    for(i=1;i≤n;i++)
    {
        if(visit[i] == false)
        {
            for(j=i;j≤n;j++)
        {  //找出生成簇的成员
            //判断xj和簇clusterNum中心的距离是否<R
            if(!visit[j]&& d(clusterNum,xj)<R)
            {
                Cluster[clusterNum].sonNum++;
                visit[j]=true;
            }
        visit[i] = true;
    }
   }
}
    // Step 4合并簇
for(i=1; i≤clusterNum; i++)
    for(j=i+1; j≤clusterNum;j++)
{    //Matrix[M][M]为关联矩阵,所有元素初始值为0
    if(Share>=(Cluster[i].sonNum+ Cluster[j].sonNum)*Q)
        {//共享信任值Share≥阀值,则关联矩阵的项为1
    Matrix[i][j]=1;
    Matrix[j][i]=1;
   }
}
DFSMergeCluster();//DFS搜索求无向图连通分量,
即进行簇合并
1.3 算法分析

 


    (1)TrustCCluster算法需要设定两个参数:半径阈值R和比例阈值Q。虽然TrustCCluster算法比K-Modes算法多了一个参数,却可以在预先不知道聚类个数K的情况下进行聚类。
    (2)算法求出所有数据的信任值并排序,参数确定后,聚类结果也就确定,与初始数据点的选取顺序无关。
    (3)信任值越大,表明数据点中心作用越大。算法求出所有数据的信任值并按信任值从大到小进行排序,聚类结果具有全局性。
    (4)算法的步骤(3)中只能发现一些近似球形的小簇,但在步骤(4)中进行的簇合并操作,可形成非球形的大簇。
    (5)时间复杂度分析。
    算法首先根据定义2、3计算所有属性(假设第k个属性)下任意两个属性值之间的距离d(xik,xjk),然后将其值存到数组DisAttr[k][i][j]中,以便计算距离d(xi,xj)时使用。计算距离d(xi,xj)的时间复杂度为O(Psn+Ps2n+P2s3n)=O((Ps+Ps2+P2s3)n),s=max|Vl|,1≤l≤P。由于对于大数据集n>>s,n>>P,所以复杂度是线性O(n)的。
    步骤(1)中计算信任值的时间复杂度为O(n(n-1)/2),步骤(2)如果采用快速排序,则时间复杂度为O(nlgn),步骤(3)聚类形成簇的时间复杂度为O(n(n+1)/2),步骤(4)合并簇的时间复杂度为O(m2),m为步骤(3)中生成的簇的个数(n>>m)。
    所以TrustCCluster算法的时间复杂度为O(n2)。
2 实验结果
    为了验证本文算法的有效性,在UCIMachine Learning Repository 提供的Soybean和Congressional Vote数据集上进行了测试,并与K-Modes 、P-Modes算法进行了对比,结果表明本文算法聚精度更高。实验所用编程环境为VC++6.0。
    为比较聚类结果,定义聚类精度r:
    

    Congressional Votes数据集记录了美国国会1984年435个国会议员的投票情况。每条记录为一个议员在16个属性上的表决情况,并有一个分类标志Republican或Democrat,用以表明对应的议员所属党派。每条记录由16个属性描述,每个属性仅取3个值(y表示同意,n表示不同意,?表示不表态)。TrustCCluster在4/5E≤R≤5/4E,3/5T≤Q≤3/2T时随机运行100次。K-Modes、P-Modes算法的初始聚类个数为K=3,初始点随机选取,运行100次。三种算法聚类结果比较如表2所示。可以看出在适当参数下,TrustCCluster算法最大聚类精度和平均聚类精度都要高于另外两种算法。

    本文提出了一种基于信任值的分类属性聚类算法TrustCCluster,相对于K-Modes、P-Modes,TrustCCluster 算法具有如下优点:不需预先给定聚类个数;聚类结果不依赖于初始值的选取;可以发现非球形的簇;聚类精度更高。
    TrustCCluster算法的时间复杂度为O(n2),不适合大规模数据的聚类,只支持分类属性数据。如何使TrustCCluster算法应用于大规模数据的聚类,并且能处理混合型数据,以及更合理地选择参数R和Q是需进一步研究的问题。
参考文献
[1] MACQUEEN J.Some methods for classification and analysis of multivariate observations[C].Proc 5th Berkeley Symposium Mathematics Statist and Probaility,1967:281-297.
[2] KAUFMAN J,ROUSSEEUW P J.Finding groups in data:an introduction to cluster analysis[M].New York:John Wiley&Sons,1990.
[3] ESTER M,KRIEGEL H P,SANDER J,et al.A density-based algorithm for discovering clusters in large spatial databases[C].Proc.of 1996 Intl.Conf.on Knowledge Discovery and Data Mining,Portland,OR.1996:226-231.
[4] WANG W,YANG J,MUNTZ R.STING:A statistical information grid approach to spatial data mining[C].Proc of 1997 Intl.Conf.on Very Large Databases,Athens,Greece. 1997:186-195.
[5] KOHONEN T.Self-organized formation of topologically correct feature maps[J].Biological Cybernetics,1982,43(1):59-69.
[6] Huang Zhexue.Clustering large data sets with mixed numeric and categorical values[C].Proc of PAKDD 97.Singapore:World Scientific,1997:21-35.
[7] Huang Zhexue.Extensions to the K-means algorithm for clustering large data sets with categorical values[J].Data Mining and Knowledge Discovery,1998,2(3):283-304.
[8] 梁吉业,白亮,曹付元.基于新的距离度量的K-Modes聚类算法[J].计算机研究与发展,2010,47(10):1749-1755.

此内容为AET网站原创,未经授权禁止转载。