【问题标题】:Using decision trees to maximise continuous variable like profit使用决策树最大化利润等连续变量
【发布时间】:2017-01-22 03:23:06
【问题描述】:

我有一个以利润为目标变量的数据集和大约 100 个不同的预测变量(一些二进制、一些连续和一些字符)。

R 中是否有一个决策树包可用于提供利润最大化(最好 >0)的桶(或末端节点)?

目前我一直在使用partykit 包中的 ctree。分裂的树总是在预测变量上给出良好的分裂,但末端节点总是导致负收益。

我也很难理解节点端的结果。这些往往是 'N=' 和 'Error='。有什么方法可以获取 'profit=' 以便您可以看到最好的端节点是什么?

非常感谢,

【问题讨论】:

    标签: r optimization decision-tree party


    【解决方案1】:

    简单的事情第一:了解每个终端节点的打印结果。考虑以下简单(但不是特别有用)ctree,它模拟了 cars 的停止 distance 如何取决于它们的 speed

    library("partykit")
    ctree(dist ~ speed, data = cars)
    ## 
    ## Model formula:
    ## dist ~ speed
    ## 
    ## Fitted party:
    ## [1] root
    ## |   [2] speed <= 17
    ## |   |   [3] speed <= 12: 18.200 (n = 15, err = 1176.4)
    ## |   |   [4] speed > 12: 39.750 (n = 16, err = 3535.0)
    ## |   [5] speed > 17: 65.263 (n = 19, err = 9015.7)
    ## 
    ## Number of inner nodes:    2
    ## Number of terminal nodes: 3
    

    这意味着,例如,在节点 5 中有 19 观测值与 speed &gt; 17,其平均停止 distance 是 65.263,对应于 err9015.7 的平方和。

    因此,首先给出目标变量的平均值(在nerr 之前),这是您最感兴趣的。要最大化目标变量,您可以选择具有最高值的终端节点预测平均值。

    最后,我不知道直接致力于利润最大化的树方法。标准的树方法试图以某种方式找到同质的终端节点。 (此处为近似恒定的平均目标值)。

    【讨论】:

    • 理想情况下,我想要一个场景,当一个特定的变量(比如 5 个属性)被拆分时。决策树总结了每个排列中的利润,并将变量分成两个桶,其中总利润的差异最大。有没有这样的功能?
    • 然后循环遍历每个变量,找到利润差异最大的变量。这将成为node1...
    • 这需要更精确地制定以获得可靠的答案。标准回归树可能与您想要做的非常接近 - 但也可能是它非常不同。目前我不确定。
    • 以下是一些以利润为因变量的示例数据:
    猜你喜欢
    • 2017-04-14
    • 2015-11-13
    • 1970-01-01
    • 2019-12-22
    • 2016-11-11
    • 1970-01-01
    • 2019-12-13
    • 2021-04-22
    • 1970-01-01
    相关资源
    最近更新 更多