如何计算贝叶斯风险来修剪决策树?

数据挖掘 决策树 贝叶斯
2021-10-07 21:08:46

我一直在尝试关注这篇关于贝叶斯风险修剪的论文。我对这种修剪不是很熟悉,但我想知道一些事情:

(1) 本文描述了每个示例定义的风险率。我们有Rk(ai|x)=j=1,jiTcLk(ai|Cj)pk(Cj|x).Lk(ai|Cj)被定义为在类中预测的示例的损失Cj当真正的班级是Ci.pk(Cj|x) 是一个例子属于的估计概率 Cj. 以上是由 C4.5 算法生成的决策树。修剪从左到右,自下而上进行。我的主要问题:如何在决策树(例如节点 3)中找到风险率?在此处输入图像描述 在此处输入图像描述

(2) 这里也有相互矛盾的说法:

在此处输入图像描述 在此处输入图像描述 第一个图像表明,如果父级风险率超过叶子的总风险率,则将父级修剪​​为叶子。然而,第二个声称如果叶子风险率超过父节点,就会发生修剪。为了确认,如果父节点的风险率小于父节点子树下叶子的风险率,那么我会将父节点设置为叶子吗?

(3) 根据 (1),在二进制情况下损失将是 0-1。多类输出的合理损失可能是什么?

(4) 根据 (1),将估计的概率 Cj 成为比例 Cj在节点的分区输出类中?例如,在节点 3,我们正在查看 output = [No]。

(5) 根据 (1),风险率是否会超过所有训练示例?

1个回答

我将尝试回答我的问题。对于(4),我会说是的。对于(5),我相信对于每个节点,当沿着决策树的分支向下时,都有一个特定的分区落入该节点。例如,对于节点 2,有 3 个实例(其中 a=1)导致[Yes, No, No]节点 2 的分区输出类。对于(1),我将计算每个相关示例的风险并将它们求和。然后在节点 2:23(1)+13(1)+13(1)=43是我使用 0-1 损失的贝叶斯风险。然后我会在修剪算法中使用这些估计的风险。任何人都可以证实吗?

(2) 在上面的评论中得到了回答,我假设 (3) 交叉熵可用于多类损失。