【问题标题】:Convert Decision Table To Decision Tree将决策表转换为决策树
【发布时间】:2015-10-22 13:35:20
【问题描述】:

如何将决策表转换或可视化为决策树图, 有没有解决它的算法,或者可视化它的软件?

例如,我想在下面可视化我的决策表: http://i.stack.imgur.com/Qe2Pw.jpg

【问题讨论】:

    标签: machine-learning classification decision-tree expert-system binary-decision-diagram


    【解决方案1】:

    不得不说这是一个有趣的问题。

    我不知道确切的答案,但我会提出这样的方法:

    • 使用Karnaugh map 将您的决策表转换为最小化布尔函数
    • 把你的函数变成一棵树

    让我们简单化一个例子,并假设使用卡诺得到你的功能(a and b) or c or d。你可以把它变成一棵树:

    来源:我自己的

    【讨论】:

      【解决方案2】:

      从决策树生成决策表当然更容易,而不是相反。

      但在我看来,您可以将决策表转换为数据集。让“疾病”成为类属性并将证据视为简单的二进制实例属性。从中,您可以使用可用的决策树归纳算法之一轻松生成决策树,例如 C4.5。请记住禁用修剪并降低最小对象数参数。

      在此过程中,您会丢失一些信息,但准确性会保持不变。看看描述疾病 D04 的两行 - 第二行实际上比第一行更笼统。从这些数据生成的决策树将仅从 E11、12 和 13 属性中识别出上述疾病,因为它足以正确标记实例。

      【讨论】:

      • 是的,实际上这是我在使用 DT 算法时的问题,他们应该删除信息增益低的属性,而我需要创建不删除属性的树。
      • 想到的一件事是更改表格中包含多行的标签。例如将 D01 更改为 D01_1 和 D01_2,归纳后,在创建的 DT 中,只需将其更改回 D01。
      • 我已经尝试像你说的那样更改疾病/类别标签,但 DT 仍然删除了疾病 D01 的证据 E01。我使用随机森林算法生成 DT。
      • 证据 E01 完全没有提供识别这些疾病所需的信息,所以我担心常规的 DT 归纳算法会忽略它。此外,对于这种情况,您可能选择了最差的算法 - 随机森林生成的不是一个决策树,而是一个包含许多不同 DT 的集合。它还使用随机属性选择来使森林中的树木多样化,这可能会导致您丢失 E01 属性。尝试使用 ID3 或 C4.5,但请记住禁用预剪枝和后剪枝。
      【解决方案3】:

      我花了几个小时寻找一个好的算法。但我对我的结果很满意。 我的代码现在太脏了,无法粘贴到这里(我可以根据您的要求私下分享),但总体思路如下。

      假设您有一个包含一些决策标准和结果的数据集。

      1. 定义树结构(例如 R 中的 data.tree)并创建“Start”根节点。
      2. 计算数据集的结果熵。如果熵为零,您就完成了。
      3. 使用每个标准,一一作为树节点计算使用此标准创建的所有分支的熵。取所有分支中最小的一个熵。
      4. 使用具有最小(最小)熵的标准创建的分支是您的下一个树节点。将它们添加为子节点。
      5. 根据第 4 步中找到的决策点/树节点拆分数据并删除使用的标准。
      6. 对每个分支重复步骤 2-4,直到所有分支的熵 = 0。
      7. 享受您的理想决策树 :)

      【讨论】:

      • 你想给我发一封电子邮件到 putraxor@gmail.com
      猜你喜欢
      • 2023-03-19
      • 2017-02-11
      • 1970-01-01
      • 2012-08-20
      • 2015-02-06
      • 2013-08-29
      • 2018-05-04
      • 2017-04-30
      • 1970-01-01
      相关资源
      最近更新 更多