当前位置:  开发笔记 > 编程语言 > 正文

为什么运行时要构造决策树mnlog(n)?

如何解决《为什么运行时要构造决策树mnlog(n)?》经验,为你挑选了1个好方法。

当m是特征量而n是样本量时,python scikit-learn站点(http://scikit-learn.org/stable/modules/tree.html)指出构造二元决策树的运行时是mnlog(n).

我知道log(n)来自分割后树的平均高度.我知道在每次拆分时,你必须查看每个特征(m)并选择要拆分的最佳特征.我知道这是通过计算该节点(n)处每个样本的"最佳度量"(在我的情况下,基尼杂质)来完成的.但是,要找到最佳分割,这是否意味着您必须查看每种可能的方法来分割每个要素的样本?那不就是2 ^ n-1*m而不仅仅是mn吗?我在想这个错吗?任何建议都会有帮助.谢谢.



1> templatetype..:

构建决策树的一种方法是在每个点上执行以下操作:

对于要拆分的每个可能功能:

找到该功能的最佳分割.

确定这种契合的"善".

在上面尝试的所有选项中,采取最好的方法并将其用于拆分.

问题是如何执行每一步.如果您有连续数据,找到最佳分割的常用技术是将数据按照该数据点按升序排序,然后考虑这些数据点之间的所有可能分区点,并采用最小化熵的分区.该排序步骤花费时间O(n log n),其占据运行时间.由于我们正在为每个O(m)功能执行此操作,因此运行时最终会计算出每个节点完成的O(mn log n)总工作量.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有