将决策表转换为决策树

时间:2015-07-31 01:08:42

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

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

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

3 个答案:

答案 0 :(得分:3)

要说这是一个有趣的问题。

我不知道明确的答案,但我建议采用这样的方法:

  • 使用Karnaugh map将您的决策表变为最小化布尔函数
  • 将您的功能变为树

让我们简单化一个例子,并假设使用卡诺让你运作(a and b) or c or d。您可以将其转换为树:

enter image description here

  

来源:我自己的

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

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

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

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