本文主要想解决基于聚类的概念漂移检测方法中常做出的强假设问题,即假设同类比较接近,异类比较远离,并且还假设新类别出现时通常会连续大量出现。
针对这些问题,本文提出了一种基于数据流的半监督自适应分类框架SACCOS,能够在概念漂移和概念进化的情况下进行标签预测。
主要贡献为:
这部分主要讲解了概念演化,其实就是新类的出现。但是新类的出现又分为两种情况:
因此形式上将这两种统一,即定义 t 0 、 t 1 t_0、t_1 t0、t1之间的概念演化为 P t 0 ( y ) ≠ P t 1 ( y ) P_{t_0}(y)\neq P_{t_1}(y) Pt0(y)=Pt1(y)
给定初始训练数据为 D = { ( x i , y i ) } i = 1 m D=\{(x_i,y_i)\}^m_{i=1} D={(xi,yi)}i=1m,其中 y i ∈ Y = { 1 , 2 , 3 , . . . , c } y_i\in Y=\{1,2,3,...,c\} yi∈Y={1,2,3,...,c}。而非平稳的流数据为 S = { ( x t ′ , y t ′ ) } t = 1 ∞ S=\{(x_t^{\prime}, y_t^{\prime})\}^{\infty}_{t=1} S={(xt′,yt′)}t=1∞,其中 y t ′ ∈ Y ′ = { 1 , 2 , . . . , c , c + 1 , . . . , c ′ } y_t^{\prime}\in Y^{\prime}=\{1,2,...,c,c+1,...,c^{\prime}\} yt′∈Y′={1,2,...,c,c+1,...,c′},代表在流数据中可能会出现新的类别。那么问题就是让分类器在时间 t t t和 t ′ t^{\prime} t′之间的流数据进行训练,其中的标签集合为 Y t t ′ ∈ Y ′ Y^{t^{\prime}}_t\in Y^{\prime} Ytt′∈Y′,那么当 t ′ ′ t^{\prime \prime} t′′时刻出现实例 x ′ ′ x^{\prime \prime} x′′其标签为 y ′ ′ y^{\prime \prime} y′′,判断其是否属于 Y t t ′ Y^{t^{\prime}}_t Ytt′。该问题的主要挑战为概念漂移的发生、短时间内多个新兴类别的出现以及类别标签的有限可用性。
具体算法文字描述为:
这里补充一下标签传播标签传播是一种基于图的半监督学习方法,用于聚类问题。其基本原理是利用已知标签的样本来传播标签,以此来为未知样本预测标签。具体来说,将已知标签的样本看作是带标签的节点,未知样本看作是未标记的节点,可以将它们组成一个图,其中节点代表样本,边代表样本之间的相似性关系。这个相似性关系可以用一些相似性度量方法来计算,比如欧氏距离、余弦相似度等等。标签传播方法的基本思路是:首先将带标签的节点的标签向它的邻居节点传播,然后更新未标记节点的标签,重复这个过程直到收敛。传播的过程中,节点的标签会受到相邻节点的标签影响,因此节点的标签不断地被修正,最终收敛到一个稳定的状态。用公式表示为:
f i = ∑ j ∈ N i w i j f j ∑ j ∈ N i w i j f_i=\frac{\sum_{j\in N_i}w_{ij}f_j}{\sum_{j\in N_i}w_{ij}} fi=∑j∈Niwij∑j∈Niwijfj
即节点i的标签为其邻居标签的加权和。
该阶段,首先对实例进行归一化,然后采用其中的带标签实例来训练分类器C。接着使用归一化的初始数据生成聚类集合,并将其添加到聚类集成M中,因此这就形成了初始的分类器以及聚类集成。那么M有大小限制,为 T M T_M TM。
在预热期后,对于出现的每个新数据实例,都将其保存在临时数据缓冲器S中,其大小为 T S T_S TS。每当S满了,SACCOS就更新规范化参数并规划范S中的那些实例,再将这些实例发送到其他模块进行下一步处理,然后清理S
聚类机制通常需要依赖一个好的特征空间来测量组实例的距离,那么如果特征属于一个无界的范围那么将是失败的算法,因此通常需要进行标准化实例数据集来克服以上问题。但是流数据通常是具有未知分布的因此很难对特征进行归一化,因此采取在线归一化。
假设之前已经观察到了N个实例,那么当前从S发送过来新的 T S T_S TS个实例,那么对于均值和方差的更新为:
而因为新来了样本,那么当前聚类的各个簇的质心和半径也应该发生相应的变化,即:
采用的算法为多图聚类(MGC),其已经被证明是特别有效识别重要集群的方法。
首先进行如下定义:
那么每个图对应的聚类可以表示为:
G ( k , D ) G(k,D) G(k,D)代表数据集D的所有互图的集合,而 V ( G l ( k ) ) V(G_l(k)) V(Gl(k))代表图的顶点集,顶点代表实例,因此由实例组成聚类的簇。
而为了并行的处理提高效率,其通过KD-Tree将数据实例的特征空间划分为基于特征方差的子空间,这里每个子空间最多包含 N m N_m Nm个实例。在每个子空间中首先计算其中每个数据实例的q邻域噪声系数(q-NNC)来执行噪声降低,即定义 D ~ q , n e a r e s t \tilde{D}_{q,nearest} D~q,nearest和 D ~ q , f a r t h e s t \tilde{D}_{q,farthest} D~q,farthest为对于实例x的q个最近邻居的平均距离和q个最远邻居的平均距离,然后计算其q-NNC系数为:
q − N N C ( x ) = D ~ q , n e a r e s t ( x ) D ~ q , f a r t h e s t ( x ) q-NNC(x)=\frac{\tilde{D}_{q,nearest}(x)}{\tilde{D}_{q,farthest}(x)} q−NNC(x)=D~q,farthest(x)D~q,nearest(x)
越接近于1,认为其更可能是噪声实例。因此将该子空间的实例按照q-NNC系数降序排序,接着就是确定阈值,将系数大于阈值的实例认为是噪声从而将其丢弃。那么阈值的确定方法为最小标准差的差值来确定,即假设阈值为 T n o i s e T_{noise} Tnoise,将实例分为了两部分,那么就是让这两部分的方差的差的绝对值最小,即:
T n o i s e = a r g m i n ∣ σ ( L r ) − σ ( L l ) ∣ T_{noise}=argmin\vert \sigma(L^r)-\sigma(L^l)\vert Tnoise=argmin∣σ(Lr)−σ(Ll)∣
接下来,就是利用MGC建立多个聚类,每个聚类簇形成一个球形超平面,其质心为其中实例的每个特征的平均值,其半径是平均距离,具体算法为:
具体的算法流程图为: