> 创建并评估用于决策分析的决策树 要创建并评估决策树,请先(1)在输入编辑器中输入树的结构,或(2)从文件加载树结构。首次导航到 “模型> 决策 > 决策分析” 标签页时,你会看到一个示例树结构。该结构基于 data.tree 库开发者 Christoph Glur 的一个示例,该库的地址为https://github.com/gluc/data.tree。 要输入新结构,请先为树提供一个名称,并在 “Calculate” 按钮旁的输入框中输入标签。在下面的示例中,决策树的名称输入为:`name: Sign contract`。下一步是指定第一个节点的**类型**,选项为`type: decision`(决策型)或`type: chance`(机会型)。注意,我们暂时跳过`variables`部分,稍后再回到这部分内容。 在提供的示例中,第一个节点是**决策节点**。决策者必须决定 “与电影公司签约(Sign with Movie Company)” 还是 “与电视网签约(Sign with TV Network)”。第一个选项指向一个带有概率和收益的**机会**节点,第二个选项有固定收益。 > **注意:** 定义树结构时,缩进至关重要。如示例所示,使用制表符(tabs)创建分支。分支名称**必须**后跟一个冒号(`:`),且关于分支的信息**必须**使用制表符缩进。 在为决策 “与电影公司签约(Sign with Movie Company)” 提供名称后,下一行**必须**使用制表符缩进。在示例中,下一行开始描述机会节点(`type: chance`)。示例中有 3 种可能性:(1)“票房惨淡(Small Box Office)”、(2)“票房中等(Medium Box Office)” 和(3)“票房大卖(Large Box Office)”,每种情况都有相应的概率和收益。这些是树的一个分支的终点,通常称为 “终端节点(terminal nodes)” 或 “叶节点(leaves)”。所有终点都必须有`payoff`(收益)值。 > **注意:** 机会节点的概率之和应等于 1,且所有概率必须在 0 到 1 之间。 决策也可以分配`cost`(成本)。例如,如果我们决定与电影公司签约,可能需要支付 5000 美元的法律支持费用。假设与电视网的合同更简单,不需要法律协助。请注意,`costs`(成本)的使用是可选的。在示例中,我们也可以从每个可能的票房收益中减去 5000 美元。 如果树中的某些值相关或重复,使用`variables`(变量)部分会很有用。在这里,你可以为值分配标签、输入公式,甚至引用其他(子)树。注意,公式应仅引用`variables`部分中的条目,不能包含任何 R 命令。在 “签约(Sign contract)” 示例中,只创建了一个变量(即`legal fees`(法律费用))。“敏感性(Sensitivity)” 标签页要求树结构中包含`variables`部分。下面是 “签约” 示例的改编版本,它使用了更多变量和一个公式。 ```yaml name: Sign contract variables: legal fees: 5000 P(small): 0.3 P(medium): 0.6 P(large): 1 - P(small) - P(medium) type: decision Sign with Movie Company: cost: legal fees type: chance Small Box Office: p: P(small) payoff: 200000 Medium Box Office: p: P(medium) payoff: 1000000 Large Box Office: p: P(large) payoff: 3000000 Sign with TV Network: payoff: 900000 ``` 要引用另一个(子)树,请在`variables`部分使用`dtree`函数和(子)树的名称。例如,假设你想将一个评估周二定价决策的树(“tuesday_tree”)包含到评估周一定价决策的树中。`variables`部分的开头可能如下所示: ```yaml variables: tuesday_emv: dtree("tuesday_tree") ``` 然后,在周一的树中,你需要周二定价决策的 EMV 时,就可以引用`tuesday_emv`。 ## 决策树输入规则 1. 始终以树名称开头(例如,`name: My tree`) 2. 第二行应开始`variables`部分或节点定义(即`type: chance`或`type: decision`) 3. 所有行都必须包含冒号(`:`)。对于节点名称,冒号位于行尾;对于其他所有行,冒号用于赋值,具体来说,它可以分配名称(例如`name: My tree`)、节点类型(例如`type: decision`)、变量(例如`legal fees: 5000`)或数值(例如`payoff: 100`、`p: 0.1`、`cost: 10`) 4. 节点类型后下一行必须是节点名称(例如`Cancel orders:`) 5. 节点名称中仅使用字母和空格(即不使用符号) 6. 节点名称后的行**必须**缩进 7. 终点(或终端节点、叶节点)必须有收益(例如`payoff: 100`) 8. 如果与机会节点关联,终端节点必须有概率(例如`p: 0.4`)和收益 在编辑器中指定树结构后,点击 “Calculate” 按钮,可在屏幕右侧看到文本格式的 “初始(Initial)” 和 “最终(Final)” 决策树(见下方截图)。初始树仅显示指定的树结构,以及节点类型、概率、成本和收益。最终树显示通过 “倒推(folding-back)” 树确定的最优决策策略。在这种情况下,最优决策是 “与电影公司签约(Sign with Movie Company)”,因为该决策具有更高的**预期货币价值(EMV)**。




usethis::use_course("https://www.dropbox.com/sh/bit4p1ffbkb2dgh/AACm1RVy2BxBDiVbjoLiN5_Ea?dl=1")
决策分析入门(一)
- 本视频带你逐步了解手动构建和求解基本决策树的必要步骤
- 主题列表:
- 机会节点与决策节点
- 树的倒推(即从最右侧节点开始,向左逐步倒推到最左侧节点)
使用 Radiant 构建决策树(二)
- 本视频演示如何在 Radiant 中构建基本决策树
- 主题列表:
- 重命名树文件
- 构建树(遵循决策树输入规则)
- 解释结果(初始树与最终树)
- 保存决策树输入.yaml 文件
如何将决策树结果写入报告(三)
- 本视频演示如何在 Radiant 中构建基本决策树并将生成的 R 代码添加到报告中
- 主题列表:
- 构建决策树并在决策树中定义变量
- 向报告添加多个树
- 演示一些有用的键盘快捷键
- 保存 Radiant 状态文件和报告
决策树的敏感性分析(四)
- 本视频展示在 Radiant 中对决策树进行敏感性分析的两种方法
- 主题列表:
- 快速回顾将决策树结果写入报告
- 方法一:手动更新值
- 方法二:使用 “variables”
如何调试决策树输入(五)
- 本视频演示如果收到错误消息,如何调试决策树输入
- 主题列表:
- 缺少冒号
- 缩进问题
- 概率之和不等于 1
- 值缺失
含不完全信息的决策树(六)
- 本视频展示当可用信息不完全时,如何确定决策树中使用的适当(条件)概率
- 主题列表:
- 不完全信息
- 测试
- 条件概率
求解含不完全信息的决策树(七)
- 本视频展示当可用信息不完全时,如何使用 Radiant 构建和求解决策树
- 主题列表:
- 指定变量
- 构建含不完全信息的树
- 检查树
- 解释决策树结果
在 Radiant 中构建含子树的决策树(八)
- 本视频展示如何在 Radiant 中构建含子树的决策树
- 主题列表:
- 创建引用子树的主树
- 指定在变量部分引用主树的子树
完整的 “Radiant 教程系列” 见以下链接:
https://www.youtube.com/playlist?list=PLNhtaetb48EdKRIY7MewCyvb_1x7dV3xw
## 按钮
在 “模型(Model)” 标签页中:
* 要查看本帮助文件,点击图标
* 要在 “报告> Rmd” 标签页中生成关于决策树的报告,点击图标或按键盘上的`ALT-enter`
* 选择最大化(`Max`)或最小化(`Min`)收益。注意,收益可以为负数
* 点击 “Calculate” 按钮或按`CTRL-enter`(Mac 上为`CMD-enter`)生成或更新结果
* 在 “Calculate” 按钮旁的文本输入框中指定决策树的名称。点击 “Calculate” 按钮将保存你的设置。如果有多个树结构可用,还会出现一个下拉菜单,你可以选择要使用的结构,以及一个 “Remove” 按钮来删除树结构
* 要将编辑器窗口中输入的树结构保存到磁盘,按 “Save input” 按钮
* 要将初始树和最终树的文本表示保存到文件,点击 “Save output” 按钮
* 要从 yaml 格式的文件加载树结构,点击 “Choose File” 按钮
在 “绘图(Plot)” 标签页中:
- 要查看本帮助文件,点击图标
- 要在 “报告> Rmd” 标签页中生成关于决策树的报告,点击图标或按键盘上的`ALT-enter`
- 显示 “初始(Initial)” 或 “最终(Final)” 决策树
- 点击 “Calculate” 按钮或按`CTRL-enter`(Mac 上为`CMD-enter`)生成或更新结果
- 输入绘图中显示的小数位数(默认收益为 2 位,概率为 4 位)
- 提供用于收益的符号(例如 $ 或 RMB)
- 点击浏览器右上角的下载图标,将初始或最终绘图下载为 png 文件
目前无法直接为 “决策树(Decision Tree)” 图添加标题或说明文字。
在 “敏感性(Sensitivity)” 标签页中:
* 要查看本帮助文件,点击图标
* 要在 “报告> Rmd” 标签页中生成关于决策树的报告,点击图标或按键盘上的`ALT-enter`
* 选择一个或多个 “要评估的决策(Decisions to evaluate)”
* 在 “对以下变化的敏感性(Sensitivity to changes in)” 中选择变量。这些变量必须在 “模型” 标签页的决策树结构的`variables`部分中定义
* 为所选变量输入最小值、最大值和步长,然后点击图标
* 点击 “评估敏感性(Evaluate sensitivity)” 或按`CTRL-enter`(Mac 上为`CMD-enter`)生成结果和绘图
* 点击浏览器右上角的下载图标,将绘图下载为 png 文件
如果已创建敏感性绘图,可使用`ggplot2`命令对其进行自定义(见下方示例)。详情请参见*数据 > 可视化*。
```r
sensitivity(
result,
vars = "legal fees 0 100000 1000;",
decs = c("Sign with Movie Company", "Sign with TV Network"),
custom = TRUE
) + labs(caption = "Based on example created by ...")
```
## 决策树编辑器
实用的键盘快捷键:
* 注释当前行或所选行(Windows:Ctrl-/ Mac:Cmd-/)
* 折叠所有行(Windows:Alt-0 Mac:Alt-Cmd-0)
* 展开所有行(Windows:Shift-Alt-0 Mac:Shift-Alt-Cmd-0)
* 搜索(Windows:Ctrl-f Mac:Cmd-f)
* 搜索并替换(Windows:Ctrl-f-f Mac:Cmd-f-f)
* 撤销编辑(Windows:Ctrl-z Mac:Cmd-z)
* 重做编辑(Windows:Shift-Ctrl-z Mac:Shift-Cmd-z)
你也可以使用行号旁的小三角形折叠 / 展开行。
更多快捷键见:
https://github.com/ajaxorg/ace/wiki/Default-Keyboard-Shortcuts
### R 函数
有关 Radiant 中用于决策分析的相关 R 函数概述,请参见*模型 > 决策分析*。
`dtree`工具中使用的来自`data.tree`包的核心元素是`as.Node`函数以及`Get`和`Do`方法。