Page 18 - 《软件学报》2025年第7期
P. 18
王树兰 等: eDPRF: 高效的差分隐私随机森林训练算法 2939
算法 5. pfDPDT.
F
L
输入: 训练数据 D, 训练数据的特征集合 , 训练数据的标签集合 , 决策树的隐私预算 ε tree , 决策树的深度
treeDepth, 当前节点所在的深度 depth;
输出: 决策树模型.
函数: BuildTree(D,F,L,ε tree ,depth,d max ).
① if 特征集合为空 F = ∅ or 当前深度达到最大深度 depth == treeDepth or D 只含一类标签 then
② 设置叶子节点的隐私预算为
depth−1
∑
ε tree
ε lea f = ε tree − ;
s t (treeDepth−m+1)
m=1
③ lea f _ label ← BuildLea f(D i ,L,ε lea f ) /*调用算法 3 返回叶子节点标签*/;
④ 设置叶子节点的标签为 lea f _ label;
⑤ return 叶子节点
⑥ else
F
⑦ for f in do
⑧ if f 是连续型特征 then
⑨ 对 f 通过分箱操作完成离散化
⑩ end if
⑪ end for
⑫ 设置分支结点的隐私预算为
ε tree
ε spl = ;
s t (treeDepth−depth+1)
⑬ split_value ← BuildSplit(D,F,L,ε spl ) /*调用算法 2 返回分裂特征*/;
⑭ 根据选出的特征 split_value, 对训练集 D 执行划分操作;
⑮ 从 F 中删除使用过的特征, F ← F − split_value;
⑯ for D in { D[1],..., D[k] } do /*递归地执行建树操作*/
′
BuildTree(D ,F,L,ε tree ,depth+1,treeDepth)
′
⑰ end for
⑱ end if
⑲ return 决策树模型
至此, 满足差分隐私的随机森林模型算法 5 构建完成. 用户可以基于该模型进一步实现新样本预测过程, 具体
流程见算法 6 所示.
算法 6. 基于随机森林实现预测过程.
输入: 未知样本集 D test , 随机森林 Forest;
输出: 预测结果.
函数: Predict(D test ,Forest).
① Result={ };
② for d in D test do
③ for tree in Forest do
predict_value;
④ 遍历当前决策树, 到达叶子节点, 得到预测值

