Page 111 - 《软件学报》2026年第4期
P. 111

1552                                                       软件学报  2026  年第  37  卷第  4  期


                                                     (  ) 1/5     (k)
                                                      4    median{|y −¯µ k |}
                                                 Σ k =    ·       i                                  (15)
                                                     3n       ψ (3/4)
                                                               −1
                         1  ∑ K
                                (k)
                 其中,   ¯ µ k =  y ,  ψ −1  为标准正态分布的逆函数,   median{·} 为中位数函数.
                         K   k=1  i
                    因此, 对于定理     1           ˆ y i  可以根据  MAP  原则计算得到:
                                  中的预估标签
                                                       ˆ y i = argmax f(˜y i )                       (16)
                                                             ˜ y i
                    同理, 真实标签的期望:

                                                           ∫
                                                             +∞
                                                     E Y (˜y i ) =  f(˜y i )d˜y i                    (17)
                                                            −∞
                    当某样本满足定理       1  中的条件  |y i − ˆy i | > ∆ 时, 可以将其标签校正为公式  (16) 的预估标签, 并将此校正方法称
                 为最大后验校正. 需要注意的是, 后验分布、预估标签和期望标签                   (公式  (14)–(17)) 都是因样本而异, 需要逐个计算.
                  3.3   渐进式区间校正算法
                    本节设计了一个渐进式区间校正            (PIC) 算法 (算法  1), 主要包括  3  个阶段: (1) 将整个数据集粗略地划分为可
                 信集和可疑集     (步骤  3、4); (2) 使用子集划分法    (实验中取   J=5) 得到的多个标签预测值用于构建真实标签的后验
                 分布, 然后更新阈值和区间半径          (步骤  5–7); (3) 渐进地校正符合条件的标签       (步骤  8–15). 算法中使用的基模型为
                 决策树回归模型, 因此第       1  阶段和第  2  阶段的时间复杂度为       O(n·logn), 第  3  阶段的时间复杂度为   O(n), 因此整个
                                 O(n·logn).
                 算法的时间复杂度为
                 算法  1. 渐进式区间校正     (PIC) 算法.

                               D = {x i ,y i } , 起始阈值  T 0 , 步长  β, 子集划分数量  J, 基模型  m(x);
                                      N
                 输入: 回归数据集
                                      i=1
                 输出: 校正后的数据集       ˆ D.
                         ˆ
                        ,
                 1.   ˆ T = T 0 D = D;
                 2. do
                 3.  使用交叉验证法训练模型         m(x), 并预测所有样本的标签      {y } ;
                                                                 pre N
                                                                 i  i=1
                                                     (  ∆  )
                                                      y −µ
                                         ∆
                 4. 计算  y pre   和  y i  之间的差值  y  及其  Z-score   i  , 使用  Z-score  准则的异常值判断方法将   ˆ D  划分为可信集
                                                       σ
                         i               i
                 D 1 (|Z-score|≤3) 和可疑集   D 2 (|Z-score|>3), 其样本量分别为   N 1  和  N 2 ;
                      D 1  随机划分为  J 个子集, 分别用每个子集训练回归模型                              y (i=1,...,N 2 ,k=1,..., J);
                                                                                     (k)
                 5.  将                                          m(x), 并预测   D 2  内样本标签
                                                                                     i
                 6. 根据公式    (14)、(15) 估计每个样本真实标签的后验分布, 并用公式            (16)、(17) 计算估计值   ˆ y i  和期望  E Y (˜y i );
                 7. 根据公式    (6) 计算或更新阈值    ∆;
                 8. if   ˆ T > ∆
                 9.   for each   y i ∈ D 2
                 10.    if  y i < [ˆy i − ˆ T, ˆy i + ˆ T] then  y i ← ˆy i ; //区间外标签校正
                 11.    end for
                 12.   else break;
                 13.   end if
                 14.   合并   D 1  和校正后的   D 2  作为新的   ˆ D;
                 15.     ˆ T ← ˆ T −β; //更新区间半径
                 16. while   ˆ T > ∆


                  4   实验分析

                    本节介绍了所提算法在基准数据集和真实数据集上的结果. 所有实验均在操作系统为                             64  位  Windows 10  计算
   106   107   108   109   110   111   112   113   114   115   116