在ID3实现中,此时算法中的递归应该停止。在ID3实现中,此时算法中的递归应停止
1
A
回答
0
只要满足分裂标准,那么你继续分裂(从现存的两个新节点形成)。
分裂准则通常是父节点信息增益,又名熵,之间的差的负值(或方差如果变量是离散的,而不是绝对的)和的加权平均IG假定子节点的加权平均信息增益:
if weighted_mean(IG_child1, IG_child2) < IG_parent :
createNodes(IG_child1, IG_child2)
else :
continue
因此,这是微不足道的答案,但有可能有你的问题,而如果你不介意的背后更复杂的意图,我会重新WO rd略微如只要分裂准则满足,你应该继续创建节点吗?
正如你可能刚刚发现,如果你是一个编码ID3算法,应用分割标准无约束往往会导致过度拟合(即你从训练数据构建树没有按因为它没有将真正的模式与噪音区分开来,所以概括得很好)。
因此,这更可能是回答你的问题:技术,以“约束”节点分离(并因此处理过拟合问题)全部落入两个大类 - 自上而下或下一个up。自上而下的一个例子:设置一些阈值(例如,如果子节点的加权平均值小于5%以下,那么不要分割)?
自下而上的示例:pruning。修剪意味着在分裂标准满足之后让算法分裂,然后停止,从底层的节点开始并“非分裂”任何节点,其中子节点与父节点之间的IG差异小于某些节点阈。
这两种方法并不具有相同的效果,事实上修剪是优越的技术。原因是:如果你自上而下执行分裂阈值,那么当然会阻止一些分裂;然而,如果它已被允许发生,则下一次拆分(两个子节点中的一个或两个拆分为孙子)可能是有效的拆分(即,高于阈值),但该拆分永远不会发生。修剪当然会对此作出解释。
2
当没有留下要分类的示例或者没有属性需要分类时,分支停止。 algorithm description on Wikipedia非常容易遵循,并且还有一些链接指向示例和讨论。
相关问题
- 1. 停止递归算法
- 2. 在Prolog中停止递归?
- 3. 在方法中停止递归循环
- 4. 如何在序言中实现树算法的尾递归
- 5. 在python中实现递归深度优先算法的错误
- 6. 如何正确实现递归算法?
- 7. 如何实现递归算法向后
- 8. 停止时钟在wp7中的实现
- 9. 在javascript中实现递归
- 10. 如何在SQL中实现此算法?
- 11. 如何在DP表中实现这个递归算法?
- 12. 如何在2次迭代后停止此递归方法
- 13. 方法的递归实现
- 14. 停止prePersist LifeCycleEvent在Doctrine2中递归Entiy
- 15. 在jQuery中停止递归动画
- 16. 在BeautifulSoup4中,Python3,如何停止发现标签内的递归?
- 17. 递归不停止
- 18. 如何计算此递归算法的时间复杂度
- 19. 用递归算法中
- 20. 递归方法为什么会停止?
- 21. 短时间后递归循环停止
- 22. 如何在Java中实现递归
- 23. 如何在U-SQL中实现递归?
- 24. 在Java中实现递归lambda函数
- 25. 在Python中递归地实现排列
- 26. 在重复程序中实现递归
- 27. 在Haskell中递归实现LCM
- 28. 在OpenCV中实现自适应算法
- 29. 递归算法
- 30. 停止递归函数
+1等价说明,当节点上的所有示例都具有相同的目标类时(不需要分割) – Amro 2010-09-19 22:17:15