Page 15 - 《软件学报》2025年第7期
P. 15

2936                                                       软件学报  2025  年第  36  卷第  7  期



                                               ∗
                 ⑤ 将   QS  集合中最大的效用分数记为       u ;
                                               spl
                 ⑥ 对特征集合    F  执行随机排列操作, 获得新的特征集合           B;
                 ⑦ for  b in  B do /*遍历集合  B 中每一个特征*/
                 ⑧  设置   ∆u spl = 2
                 ⑨  根据公式    (12) 计算特征  b 的概率   p spl_b :
                 ⑩  if   Bernoulli(p spl_b ) then /*根据  p spl_b  生成一个服从伯努利分布的随机数   */
                                                                           r
                                      r
                 ⑪   return  b /*当随机数   取值为  1  时, 将  b 作为分支节点的分裂特征*/
                 ⑫  end if
                 ⑬ end for

                 算法  3. 标签的输出过程.

                 输入: 训练数据    D, 标签集合   L, 隐私预算  ε lea f ;
                 输出: 节点的标签.
                 函数:  BuildLea f(D,L,ε lea f ).
                 ①  QS = { }  /*设置一个空集合*/;
                 ② for  i in  L do /*遍历集合  L 中每一种标签*/
                 ③  根据公式    (15) 计算标签  i 的效用分数    u i
                                                   lea f
                 ④   QS = u i
                          lea f
                 ⑤ end for

                 ⑥ 将   QS  集合中最大的效用分数记为       u ∗  ;
                                               leaf
                            L 执行随机排列操作, 获得新的标签集合  ;
                                                            U
                 ⑦ 对标签集合
                         U
                 ⑧ for  u in   do /*遍历集合  U  中每一种标签*/
                 ⑨  根据公式    (16) 计算标签  u 的概率   p leaf_u
                 ⑩  if   Bernoulli(p leaf_u ) then /*根据  p leaf_u  生成一个服从伯努利分布的随机数   */
                                                                            r
                 ⑪   return  u /*当随机数   取值为  1  时, 将  u 作为叶子节点的标签*/
                                      r
                 ⑫  end if
                 ⑬ end for

                 3.2.1    创建分支节点
                    本文将基尼指数作为分支节点的特征选择依据, 使用基尼指数衡量节点纯度, 进而辅助分支节点确定最佳的
                 划分方式, 提高子节点纯度, 从而获得表现效果好的决策树模型. 然而, 在确定分支节点的分裂特征时, 涉及对训练
                 数据的查询操作, 存在个人隐私的泄露风险. 尽管传统算法基于指数机制                       [15] 防止隐私泄露, 但是指数机制在分裂
                 点的选择上会引入一些随机扰动, 导致构建出来的树模型精准度低. 相比之下, 本文采用的重排翻转机制, 具有比
                 指数机制具有更小的预期误差, 从而为分支节点提供更准确的分裂点信息.
                    在重排翻转过程中, 首先为查询特征的操作设置一个恰当的效用函数, 该效用函数被用于后续的分数概率计
                 算过程中. 基于基尼指数以及重排翻转机制的实施要求, 该效用函数的定义如下.
                    假设当前访问的训练集为          D, 则对特征集   F  执行查询的效用函数      u spl (D,F a ) 定义如公式  (11) 所示.

                                                                        2  
                                                                   K ∑ n F a ,i
                                                                       
                                                          C ∑
                                                                          
                                                            i       L,L k  
                                              u spl (D,F a ) = −  v 1−                       (11)
                                                                          
                                                                    
                                                             F a     i   
                                                                         
                                                         i=1      k=1  v
                                                                       F a

                 其中,   F a  表示  F  中任一特征,    i   F a  取值为  v i   的样本数量,  C  表示  F a  的所有取值情况数,  K  表示  L 的所有标
                                       v  表示
                                        F a            F a
   10   11   12   13   14   15   16   17   18   19   20