对于数值特征,决策树是如何决定阈值的?

  统计/机器学习 监督式学习 特征选择    浏览次数:12285        分享
3

对于一个二元特征,决策树很自然地进行分叉,一个树枝的条件是该特征为0,另一个树枝是该特征为1。


对于一个数值特征,决策树的节点分叉通常是,如果x < 某个数,进入这个子决策树,如果x >= 某个数,进入另外一个子决策树。我想知道的是,对于数值变量这个阈值(上面的“某个”)是如何确定的呢?


谢谢!

 

Gavin   2017-09-26 13:58



   3个回答 
9
  • 首先对这个连续变量排序。比如说年龄,把所有样本中年龄的数值从小到大排序。
  • 在数据没有重复的假设下,如果有n个样本,那么排序后的数据之间应该有n-1个间隔。
  • 决策树会对这n-1个间隔进行逐一尝试(分叉),每个不同的分叉,会带来不同的gini指数,我们最终选gini指数最小的那个分叉作为最优分叉,也就是阈值。

理论上是这样进行的,但是实际情况是为了一些计算优化,可能会进行一些随机搜索,而不一定是遍历。

上面这个过程就把那个连续变量进行了一分为二(第一次离散化),比如说年龄被分成了0到20岁,20到100岁。

接下来,当决策树继续生长时,之前一分为二的连续特征可能会再次被选中。比如说20到100岁这个分叉被选中,我们再次重复上面那三个步骤,再去寻找下一个次分叉的阈值。这次得到的结果可能是20到35,35到100岁。

以此反复,这样一个连续变量就不停地被离散化,直到模型达到停止的条件。


SofaSofa数据科学社区DS面试题库 DS面经

弼码温   2017-11-02 22:25

4

假如训练集上有Age这么个特征,数值分别为

10,11, 16, 18, 20, 35

那么在这个节点上,算法会自动考虑下面几种划分的可能

Age <=10 和 Age>10

Age <=11 和 Age>11

Age <=16 和 Age>16

Age <=18 和 Age>18

Age <=20 和 Age>20

六个数值点,所以就有5个对应划分的可能。对这5个可能一一尝试,选出损失函数最小的那个。


SofaSofa数据科学社区DS面试题库 DS面经

AlphaCat   2017-12-01 11:31

3

对于数值特征,决策树会对所有取值一一尝试,直到选择到最好的。

对于分类,就是对应gini最小

对于回归,就是对应rmse最小


SofaSofa数据科学社区DS面试题库 DS面经

WinJ   2017-11-04 13:07



  相关讨论

GBDT的数据在使用前有什么需要注意的吗?

随机森林每次用多少个特征?

随机森林给出的变量的Importance是怎么来的

对于树模型,需不需要特征筛选

怎么理解决策树是模型自己在做interaction?

为什么特征重要性约大,在决策树里分裂的顺序却是越靠后呢?

adaboost里的feature importance和随机森林里的feature importance是一回事吗?

怎么理解lightgbm中的直方图法选择分裂点?

使用lightgbm,训练前对数据特征赋予权重是否对结果有影响

gbdt如何对连续特征离散化

  随便看看

numpy里的无穷大np.inf到底是多大呢?

matplotlib.pyplot做折线图的时候,显示为虚线,或者点划线?

python怎么对list中的元素做连乘?

python去掉中文文本中所有的标点符号

线性回归是机器学习算法吗?