给定一组规则生成决策树

时间:2011-07-13 07:58:14

标签: algorithm decision-tree

在最近几天,我一直在考虑这个问题而没有找到最佳解决方案,因此这个问题。

假设我们有一组N个变量,用户可以编写这些变量来创建规则列表和以下操作,例如:

variables V_1,V_2,V_3
V_1 > 5 -> "Turn left"
V_2 < 6 -> "Turn right"
1 < V_1 < 4 -> "Continue straight"
V_1 = 0 AND V_2 > 6 AND V3 > 5 -> "Go backwards"
default -> "Stay"

变量不一定是整数,并且假设规则都是由一个AND子句列表后跟一个动作组成的。

我想要做的是构建一个决策树,允许我快速处理像(0,7,9)这样的输入并返回正确的操作。 截至目前,我唯一的想法是分割变量空间和看看输入状态适合的位置,但似乎是一个缓慢的解决方案:任何人都知道可能更快的东西?

1 个答案:

答案 0 :(得分:0)

是什么让它变慢?很多规则?长期规则?很多变数?缓慢的规则处理?

如果您还没有很多变量 规则,我显然会选择哈希表。

这是您所述问题的树(不一定是最佳)的示例。

variables V_1,V_2,V_3
V_1 > 5 -> "Turn left"
V_2 < 6 -> "Turn right"
1 < V_1 < 4 -> "Continue straight"
V_1 = 0 AND V_2 > 6 AND V3 > 5 -> "Go backwards"
default -> "Stay"

   V1         V2      V3
   <0 ------- <6 --------------- Right
              >=6 -------------- Stay

   0 -------- <6 --------------- Right
               6 --------------- Stay
              >6 ---- <=5 ------ Stay
                      >5 ------- Backwards

   ]0-1] ---- <6 --------------- Right
              >=6 -------------- Stay

   ]1-4[ ----------------------- Straight

   [4-5] ---- <6 --------------- Right
              >=6 -------------- Stay

   >5 ------- <6 --------------- Right
              >=6 -------------- Stay