为什么决策树预剪枝后泛化能力变弱了?

我是用python的scikitlearn来拟合的分类树,数据集是一个餐饮业务的,比较适合用决策树的数据集。不加任何限制的话拟合了一个特别大的树,但是…
关注者
3
被浏览
1,580

1 个回答

泻药。感觉题主说的内容有点前后矛盾。

数据集是一个餐饮业务的,比较适合用决策树的数据集。

请问为什么题主会觉得适合用决策树呢?

不加任何限制的话拟合了一个特别大的树,但是泛化能力出人意料的好。然后分别用ID3和cart。

ID3和cart本来就是决策树的两种不同拟合方法,根绝sklearn的文档 1.10. Decision Trees , sklearn的DecisionTreeClassifier是用优化过的cart拟合的。那么题主不加任何限制的拟合指的就是这个吗?ID3我搜了下的确看到网上有个包,不过不是sklearn的, svaante/decision-tree-id3 ,题主用的是这个么?

用网格搜索设置了一个比较好的maxdepth后,cart决策树的泛化能力略有提高,ID3反而下降了

题主既然用网格搜索到了一个比较好的maxdepth的话,是用什么来测量出泛化能力下降的呢?难道不是应该泛化提高才说明一个maxdepth更好吗?

一般来说,ID3用的是贪心搜索(greedy search),每次根据information gain来选择特征(feature),没有剪枝方法,更容易过度拟合,尤其对于小样本的数据集。cart根据的是gini impurity/towing criteria来拟合,采用cost complexity剪枝方法,更容易适应离群值。但是sklearn和id3estimator都是改良过的版本,比如id3estimator上加了像C4.5一样的对numeric attribute的splitter ( github.com/svaante/deci ),光看一个maxdepth很难说明问题。