【问题标题】:Decision Tree leaf node condition for numeric dataset数值数据集的决策树叶节点条件
【发布时间】:2020-04-07 01:17:40
【问题描述】:

我被要求实现一个随机森林分类器,据我了解,它只是一堆决策树,在训练后运行测试数据,然后通过所有树的多数投票确定分类。

这一切都很好,我什至明白熵决定了接下来要使用哪个特征。我很难理解的是,对于数字数据,我如何确定条件

例如,一个人是否会根据天气条件打高尔夫球。给定 3 个特征(前景、湿度、风)和分类标签(播放 -> 是或否),我们首先从前景开始:

展望 -> 阴(纯)、晴、雨

从 Sunny 中,选择 Humidity 下一个:High、Normal(纯)

从 Outlook 到 Rain,选择 Wind(最后一个特征):弱(纯)、强

本质上,在这种情况下,特征的值是单独获取的。但是,当我有一个包含一堆小数的数据集时会发生什么?

(部分)数据:

在这种情况下,我会首先查看标签(0 或 1),然后再查看每个标签中熵最高的特征。但是我怎么知道去叶子节点的条件呢?甚至,父母有几个孩子? 一个糟糕的图表来帮助我的问题:

【问题讨论】:

    标签: python machine-learning random-forest decision-tree


    【解决方案1】:

    对于您的问题的理论答案,我将首先推荐这个出色的视觉教程。

    http://www.r2d3.us/visual-intro-to-machine-learning-part-1/

    在实现方面,有几种方法可以进入它。您可以尝试以下算法(灵感来自this 答案):

    对于数据集中的每一列(特征),首先对其进行排序。在您进行类更改的每个点,拆分您的数据集。例如,当特征 A 等于 5 时,您的数据点从 0 类变为 1 类。所有 A 5 的数据点将属于 1 类。如果您的数据集不是那么简单,那么您可以按照您处理分类决策树的方式进行操作,例如,通过计算每个分割候选的熵。然后计算到达每个子节点的数据点,并递归处理。

    【讨论】:

    • 不幸的是,这并没有回答我的问题,边界只是凭空拉出来的——不管怎样,视觉效果都很好!
    • @peterxz 我添加了一个算法大纲来进行拆分。基本上,您通过测试所有可能的分裂点将您的数值数据转换为分类数据,看看哪一个会给您最低的熵。这使您可以训练决策树,然后就可以相对简单地获得随机森林。
    猜你喜欢
    • 2016-06-17
    • 2015-08-05
    • 2016-06-17
    • 2013-01-17
    • 2012-12-20
    • 1970-01-01
    • 2013-01-19
    • 2015-01-31
    • 2020-06-10
    相关资源
    最近更新 更多