system: [SYSTEM]

user: 2. 相关工作 2.1. 三支聚类 人们通常根据事物已有的信息做出相应的决策，然而，信息的获取通常是一个动态的过程。现实生活中，由于样本对象信息不充分且不能确切地确定其类别归属，则需要其他方法来处理含有不确定性特征的聚类任务即三支决策聚类。对于信息充分的对象可以做出确切的决策，而对于信息不够充分的对象则需要进一步获取相关信息后作出决策，这是一种典型的三支决策思想 [ 3 ] [ 4 ]。 三支决策是姚一豫教授 [ 5 ] [ 6 ] [ 7 ] 于2010年提出的一种基于粗糙集和决策粗糙集知识的理论。三支决策理论是对传统二支决策理论的推广和完善，其核心思想是将粗糙集中的正域、负域和边界域对应决策中的接受、拒绝和延迟。三支决策更符合人们在实际生活中作决策时的思维模式，现已受到国内外学者的广泛关注。 在三支决策理论的基础上，Yu [ 8 ] 将聚类思想与三支决策理论相结合提出了三支决策聚类方法。二支聚类即硬聚类方法的聚类结果是由单一的集合表示某个类簇，而三支聚类结果是使用嵌套集合来表示某个类簇。样本对象和类簇之间存在三种关系即：对象确定属于这个类；对象确定不属于这个类；对象可能属于这个类。Yu， Liu等人 [ 9 ] [ 10 ] [ 11 ] 将三支聚类的三个区域给出确切定义为：采用区间集表示一个类，核心域为区间集的下界，边界域由区间集的上下界之间的对象组成，琐碎域为区间集的上界的补集。核心域的对象确定属于这个类，边界域的对象不一定属于这个类，而琐碎域的对象一定不属于这个类。 关于三支聚类 [ 12 ] 的描述如下：给定样本数据集 U = { x 1 ， x 2 ， ⋯ ， x n } ，其中n表示样本对象个数，令 M = { m 1 ， m 2 ， ⋯ ， m k } ，其中k表示聚类数，即n个对象可以被划分为k类。用 C ( m i )   ( i = 1 ， 2 ， ⋯ ， k ) 表示第i类的核心域； F ( m i )   ( i = 1 ， 2 ， ⋯ ， k ) 表示第i类的边界域： T ( m i )   ( i = 1 ， 2 ， ⋯ ， k ) 表示第i类的琐碎域。相关性质有： C ( m i ) ∪ F ( m i ) ∪ T ( m i ) = U     ( i = 1 ， 2 ， ⋯ ， k ) (1) 式(1)表示任意类簇的核心域、边界域和琐碎域的并集为全集。 ∪ i = 1 k ( C ( m i ) ∪ F ( m i ) ) = U     ( i = 1 ， 2 ， ⋯ ， k ) (2) 式(2)表示所有类簇的核心域、边界域的并集为全集。 C ( m i ) ≠ ϕ     ( i = 1 ， 2 ， ⋯ ， k ) (3) 式(3)表示任意类簇的核心域非空。 2.2. 匹配原则 聚类分析是一种无监督学习方法，简单地说就是把相似的样本划分到同一组。聚类的目标是使得类内样本相似度高而类间样本相似度低。因此，一个聚类算法通常只需要知道如何计算相似度就可以开始工作了。聚类通常并不需要使用训练对象进行学习，但是，在聚类过程中，每次给出不同的聚类规则就会得出一个与之相对应的聚类结果。聚类结果中的每个类簇，都可以用符号来标记，如r、s、t等，这些符号文本称之为标签，其实也就是每个类的类号。不同于分类，在研究过程中发现这些标签，往往不能相同，也就是说类簇标签不唯一，不同的标签却表示同样的结果，这就造成了对结果分析的困扰。研究人员在此情况下，优化多种聚类方式，其中比较具有代表性的聚类方法，例如k-means [ 13 ] 聚类、均值漂移聚类、基于密度的聚类方法、凝聚层次聚类等，却始终改变不了无监督学习的本质，没有唯一与之对应的类簇标签，意味着无法对结果进行精准的分类与识别。 由于是无监督学习的特点，类簇标签就不再对聚类结果具有代表性，因此需要更加准确的类簇标签，这个标签不再是聚类结果中随机分配给的r、s、t等，而是通过匹配原则，利用记录匹配重新定义的 P 1 ， P 2 ， ⋯ ， P n 等，这种类簇标签的特点是唯一对应的，若 P i ≠ P j ，类簇也不相同，反过来，类簇不相同，一定可以推出 P i ≠ P j 。 首先对数据集进行多次聚类，得到多组聚类结果；在每次聚类结果中，都会随机给其分配类簇标签r、s、t等，由于数据量大，这里选用1、2、3等代替，方便数据展示。实质上，类簇标签1只是代表某类簇在第一次聚类结果，是随机排序的第一位，第二次聚类结果中，某类簇可能就不是随机排序的第一位，可能是在任何一个位次，从而不再是类簇标签1，改为类簇标签2或者其他，但是无论给予何种的类簇标签，所代表的的结果仍是原来的类簇，换句话说，类簇里面的类不变，如果可以为它起名，赋予独一无二的代号，就能清楚的分辨结果。那么这个名字或者代号就是我们要寻找的 P i ，给予一个唯一对应的新的类簇标签，使其在多次聚类结果中，仍能代表自己，里面的类也不会改变。 下面将举例说明如何定义类簇标签 P i 。这里我们假设对22个数据聚成3类，聚类了三次，结果见图1。 图1. 聚类结果示意图 从图中我们可以清楚的看到第一次聚类的C1、第二次聚类的C2和第三次聚类的C2应该就是不同聚类的同一类簇。因为他们之间所含共同元素相比于其他两个最多。有了这样的设想，我们就可以进行下面的表格统计。在3次聚类结果中，对于每个数据都有一个数据列，如数据1的数据列为“122”，代表第一次聚类在C1，第二次聚类在C2，第三次在C2。以此类推，我们可以得出一系列的数据类，因为我们所处理的数据是局部集中的，所以必然会有一部分数据一直被聚类在同一类簇中，因此必然会出现重叠次数较多的数据列，并记录下来，如下列表1所示。对于每个类簇而言，就已经将重叠数据最多类簇匹配起来，我们将最多的的三个数据列类簇定义为 P 1 ，类似的定义 P 2 、 P 3 等多个类簇。 Table 1 Representation of clustering result 三次聚类的类别 出现的次数 P 1 1 2 2 5 P 2 2 3 1 6 P 3 3 1 3 5 表1. 聚类结果表示 到这里，就完成了匹配原则，并且定义了类簇标签 P 1 、 P 2 、 P 3 等，完成了一开始的任务，即找到一个与类簇唯一对应的标签，使其在多次聚类结果中，仍能代表自己，里面的类也不会改变。匹配原则伪代码如下： 2.3. 投票原则 根据上面的工作，我们已经将每一次聚类都进行的匹配，如上述的例子中，第一次聚类中 C 5 (标签为5的类簇)与第二次聚类中 C 1 与第三次的 C 2 和之后的其他类簇匹配，也就是说，虽然他们每次聚类后的标签名字都不一样，但是他们其实代表着不同聚类中同一个类。 有了这样一个概念后，我们会发现，有一些样本永远在同一个类，我们既可以基本肯定这个数据一定是属于这个类。而对于剩余的数据，由于聚类算法存在不稳定性，我们给了一定的允许误差。由此，我们定义了一个投票机制。 首先，我们先给了一个隶属度的概念。函数定义如下： f ( x i ) = m j N (4) 其中， x i 表示第i个样本，N表示总共聚类的次数， m j 表示N次中属于 C j 类簇的次数。 然后，计算每一数据和每一类簇的隶属度，我们规定函数： g ( x i ) = { x i ∈ C ( m j ) ，       f ( x i ) ≥ 0.9 x i ∈ F ( m j ) ， 0 < f ( x i ) < 0.9 x i ∉ C j ，       f ( x i ) = 0 (5) 最后，根据 g ( x i ) 函数，我们就可以确定每一个样本对象的类簇归属。