A tree-based incremental overlapping clustering method using the three-way decision theory
算法目的
提出问题
- 现实中,一个对象可能存在多个身份,属于多个类别。比如,一个研究者会研究多个领域,在聚类时,不能单纯说其只属于某一个领域。如下图,重叠的部分就是即研究计算机也研究石油的研究者。
- 一般聚类是解决静态数据的聚类,数据集没有变过,但是现实世界中,很多数据是动态的,随着时间变化而更新,所以存在增量聚类问题,将新的数据聚类,就会更新已有的聚类信息。
解决方法
- 重叠聚类
- 增量聚类
- 三支决策
- 树
思路分析
重叠聚类
重叠聚类:采用两个集合表示形式表示一个类,
C
i
‾
\underline{C_{i}}
Ci表示下边界,图中粉色部分。
C k ‾ \overline{C_{k}} Ck表示上边界,图中蓝色部分+粉色部分。
他们之间有这样一个关系:
C
i
‾
\underline{C_{i}}
Ci表示正域,POS ,即图中粉色中心域,这里面的对象肯定属于这个类别。
C k ‾ − C k ‾ \overline{C_{k}}-\underline{C_{k}} Ck−Ck表示边界域 BND,即蓝色部分,这部分里面的对象可能属于也可能不属于这个类别(不确定)。
U
−
C
k
‾
U-\overline{C_{k}}
U−Ck表示负域,即图中空白区域,,与此类别无关的其他对象。
当不管是正域还是边界域和其他类别的正域或边界域有交集的,就是有重叠的部分,即存在属于多个类别的对象。用这样的形式表示重叠聚类。
增量聚类
首先根据初始数据聚类,建立搜索树,然后计算增量与初始聚类代表点的相似度来更新聚类。
所提算法
静态重叠聚类
计算代表点
- 计算样本之间的距离,得到距离矩阵。
- 根据阈值挑选近邻样本,近邻样本多的点作为代表点的几何中心。
- 删除距离矩阵中该中心点的邻近点所在行。
- 重复2、3步,直到选择完所有点。
例1:
初始数据
距离矩阵
选出两两距离<1.5最多的点,
x
9
x_{9}
x9作为第一个代表点
r
1
r_{1}
r1的集合中心点,
c
o
v
e
r
(
r
1
)
=
{
x
2
,
x
3
,
x
5
,
x
6
,
x
7
,
x
8
,
x
9
}
cover(r_{1})=\{x_{2},x_{3},x_{5},x_{6},x_{7},x_{8},x_{9}\}
cover(r1)={x2,x3,x5,x6,x7,x8,x9},删除
x
2
,
x
3
,
x
5
,
x
6
,
x
7
,
x
8
,
x
9
x_{2},x_{3},x_{5},x_{6},x_{7},x_{8},x_{9}
x2,x3,x5,x6,x7,x8,x9所在的行,得到table3:
在比较
x
1
,
x
4
,
x
10
x_{1},x_{4},x_{10}
x1,x4,x10中谁邻居数最多,发现是
x
1
x_{1}
x1最多,则把
x
1
x_{1}
x1作为
r
2
r_{2}
r2的几何中心点,得到
c
o
v
e
r
(
r
2
)
=
{
x
1
,
x
2
,
x
3
,
x
5
,
x
10
}
cover(r_{2})=\{x_{1},x_{2},x_{3},x_{5},x_{10}\}
cover(r2)={x1,x2,x3,x5,x10},删除邻居所在行
x
1
,
x
10
x_{1},x_{10}
x1,x10,只剩一个行元素
x
4
x_{4}
x4,同理得到
c
o
v
e
r
(
r
3
)
=
{
x
4
}
cover(r_{3})=\{x_{4}\}
cover(r3)={x4}。代表点计算完毕。
构建无向图
根据此公式,计算两个代表区域(
c
o
v
e
r
(
)
cover()
cover())的相似度,设定两个阈值
α
、
β
\alpha、\beta
α、β 当
S
i
m
i
l
a
r
i
t
y
R
R
(
r
i
,
r
j
)
≥
α
SimilarityRR(r_{i},r_{j})\geq\alpha
SimilarityRR(ri,rj)≥α则在这两个代表区域之间画一条强链接实线,当
β
<
S
i
m
i
l
a
r
i
t
y
R
R
(
r
i
,
r
j
)
<
α
\beta<SimilarityRR(r_{i},r_{j})<\alpha
β<SimilarityRR(ri,rj)<α,则两个代表区域之间画弱连接虚线。
形成无向图
聚类
搜索上述无向图,其中的由强链接构成的强连通子图就是一类,对于每个这样的子图,与其对应的对象形成一个簇的正区域。然后连接它的弱连接区域作为该类的边界域。如下图左边所示。
创建搜索树
root为所有的代表点,根据属性的重要度来创建树的层数,属性的重要度根据熵值来计算。表4是代表点的属性值范围,即代表区域里的对象在该属性的最大最小值形成。表4中认为
a
1
a_{1}
a1 的重要度大于
a
2
a_{2}
a2。
该算法认为代表点的属性值范围有交集,就具有相似性,被归在一起。
第一层,根据属性 a 1 a_{1} a1 ,可以分成两个节点,第一个节点包括 r 1 , r 2 , r 3 r_{1},r_{2},r_{3} r1,r2,r3,他们都有交集。第二个节点是 r 4 , r 5 r_{4},r_{5} r4,r5。
第二层,根据属性 a 2 a_{2} a2,按照同样的方法划分,发现和上一层一样,直到(上一层 节点数/ 下一层节点数)>= 阈值(0-1),终止建树。(就算还有属性没有用完,但是上下两层一样的话,继续分支也没有意思了)。
聚类增量数据
- 第一步,根据以上创建树
- 第二步,增量数据找出其代表点,然后更新树和图。
找邻居代表点
在已经建好的树中找到邻居代表点,是聚类增量数据的关键。
分为三种情况,
r
w
a
i
t
r_{wait}
rwait 是增量数据的代表点。
" Case 1, there only one node is similar with
r
w
a
i
t
r_{wait}
rwait in every layer;
Case 2, there are more than one node similar with
r
w
a
i
t
r_{wait}
rwait at least in one layer;
Case 3, there are no nodes similar with
r
w
a
i
t
r_{wait}
rwait at least in one layer."
case1:
case2:
case3:
更新图G
计算
r
w
a
i
t
r_{wait}
rwait 与同节点里面的所有代表点是否是近邻,之间的距离
S
i
m
i
l
a
r
i
t
y
R
R
(
r
i
,
r
j
)
≥
α
SimilarityRR(r_{i},r_{j})\geq\alpha
SimilarityRR(ri,rj)≥α ,则画实线,
β
<
S
i
m
i
l
a
r
i
t
y
R
R
(
r
i
,
r
j
)
<
α
\beta<SimilarityRR(r_{i},r_{j})<\alpha
β<SimilarityRR(ri,rj)<α画虚线。其他每个代表点之前的近邻关系都需要更新,因为有新的对象加入,会改变值。
实验
表5是所用数据集,M是真实簇的数量。2000个数据样本,其中60%作为初始数据,40%作为增量数据。