【问题标题】:How do I get a detailed decision tree when 7 of my 13 independent variables are categorical in nature?当我的 13 个自变量中有 7 个本质上是分类变量时,我如何获得详细的决策树?
【发布时间】:2016-06-06 17:21:50
【问题描述】:

我正在使用具有 13 个自变量(其中 7 个是分类变量)的决策树来分析持久性,但我得到的树只考虑了一个数字变量。

我的代码是:

fmla=STATUS~.

tm=rpart(fmla, data=trainData,method = "class")

【问题讨论】:

  • 可能其他自变量没有足够的关于响应的信息,因此不会发生进一步的分裂。根据提供的信息,很难说更多。此外,您发布的图像尚未使用您问题中的代码生成。因此,我建议用更多细节和可重复的例子来修饰这个问题。
  • 我的目标变量是分类的,其值为“持久性或非持久性”,自变量是:{subchannel,region,product_name,product_type,frequency,premium_type[categorical]} 和 {term,ppt, afyp,premium_due,premium_due_amount[numeric]} 每次我尝试构建一棵树时,它只采用一个数字变量

标签: r decision-tree


【解决方案1】:

发生这种情况是因为通过拆分树获得的信息小于默认阈值。

Rpart 提供了控制如何构建树的方法。以下是您可以使用的一些控件:

  1. Rpart 停止树分裂,如果获取的信息小于 0.01(默认)。此信息增益/rmse 增益/gini 增益由 rpart 控件中的参数“cp”指定。
  2. parms 选项用于表示分割功能。
  3. rpart.controls 用于表示树参数。
  4. rpart.controls 最常用的选项是最大深度(树深度)、minbucket(每个节点中的最小观测数)和 minsplit(进一步拆分之前节点中所需的最小观测数。)

请注意:默认情况下,method="class" 时,rpart 分类树使用 gini 索引作为节点拆分标准。

自定义rpart树示例:

      rpart(data=traindata, 
      formula = Status ~ .,
      method = "class",
      parms=list(split="information"),
      control=rpart.control(minbucket=50,minsplit=100, cp=0.0000001, maxdepth=30))

【讨论】:

  • 谢谢我运行了代码,我得到了这个错误:“control=rpart.control(minbucket=50,minsplit=minspl, cp=0.0000001, maxdepth=30)) 中的意外')' "
  • 它现在应该运行了。我认为它失败是因为 minsplit 控制中的未初始化变量。
猜你喜欢
  • 2017-06-29
  • 2021-08-20
  • 2016-09-11
  • 2020-05-19
  • 2021-12-02
  • 2017-01-27
  • 1970-01-01
  • 2014-08-23
  • 2018-05-03
相关资源
最近更新 更多