决策树和算法选择

时间:2015-11-21 11:03:18

标签: algorithm decision-tree

我得到一个功课,要求我编码(仅使用功能范例)类似Akinator的游戏,其中计算机向我询问有关我正在考虑的人的一些问题,并且必须猜测是谁。我有一个大约20个人的数据库,每个人都有大约10个问题,他们要么回答"true""false"

我被要求构建定义为:

的最小(深度)决策树

<Tree> ::= leaf(<List[Atom]>) %list of persons | question(<Atom> true :<Tree> false :<Tree>)

我建议用一个简单的算法来做这件事,其中树的下一个节点代表真和假数最接近的问题。我必须编写至少与此算法一样有效的算法。所以我在互联网上查找更好,我发现了一些像C4.5和ID3这样的算法。

我的问题是我可以使用哪种算法比我提议的作业更好? (对于我的要求而言,这并不是太复杂了吗?)

1 个答案:

答案 0 :(得分:1)

算法C4.5和ID3都是贪婪算法,对于这种简单的真假数据,它们最终会构建与您解释的简单解决方案相同的树。贪婪算法可以进行局部最优选择,但可能无法构建全局最优树。一般来说globally optimal trees is NP-Complete的构造。有些算法试图改进贪婪算法,但总的来说它们非常复杂或者不能很好地工作。参见,例如,chapter 5.4 of a survey article