ljpzzz / machinelearning

My blogs and code for machine learning. http://cnblogs.com/pinard

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

决策树方法特征处理

xaxfan opened this issue · comments

hi,您好。请教一下

  1. 在ID3,C4.5方法中,对于离散特征数据划分,是说有多少个取值就分成多少个分支么,如果这个特征的取值有100个,也是分成100个分支么,还是说会限制最多分多少个?
  2. 在CART树中,对离散特征是取子集划分。像文中给的例子,如果特征A有三个取值,会分成{(A1,A2),A3}, {A1, (A2,A3)}, {(A1,A3),A2},然后选一个基尼系数大的。当特征取值很多时,取子集就有很多很多种了,在计算量上未免太大?
  3. 在所有的树模型中,如果我们把样本扔进去,模型是怎么区分是离散特征还是连续特征呢?因为看起来输入的时候,并没有告诉模型,哪个是离散特征哪个是连续特征?

你好!

  1. ID3,C4.5是多叉树,所以如果某多取值的特征被选择作为分裂特征,则所有的取值都会新建一颗子树。由于不是二叉树,在计算机内效率不高,因此实际中用的比CART少很多。
  2. 计算量的确比较大。但是好消息是这部分选择过程是可以并行的,可以使用多线程或者多机器并发来计算划分选择。因此不会成为工程上的瓶颈。
  3. 这里看你是分类树还是回归树。如果是回归树,那么没的说,所有的特征都转化为连续值。因为你需要使用和方差做子树分裂选择。如果是分类树,则看特征的类型。如果你是string之类的类型,那就是离散特征,如果是数值类型,那么就是连续特征。