我对于决策树和随机森林分类器有一些问题。
问题1:训练后的决策树是否唯一?
我认为它应该是唯一的,因为它在每次分裂时最大化信息增益。现在,如果它是唯一的,为什么决策树分类器中有random_state参数?因为它是唯一的,所以每次都可以重现。因此,决策树是唯一的,不需要random_state参数。
问题2:决策树实际上预测什么?
在研究随机森林算法时,我读到它会平均每个类别的概率来自其各个树。但是据我所知,决策树预测的是类别而不是每个类别的概率。
回答:
即使不查看代码,你也会在文档中看到这个说明:
在每次分裂时,特征总是随机排列。因此,即使在相同的数据集和max_features=n_features的情况下,如果在搜索最佳分裂过程中枚举的多个分裂的标准改进相同,最佳找到的分裂也可能有所不同。为了在拟合过程中获得确定性行为,必须固定random_state。
对于splitter='best'
,这种情况发生在这里:
# 随机抽取一个特征f_j = rand_int(n_drawn_constants, f_i - n_found_constants, random_state)
关于你的另一个问题,请阅读这个:
…
只需构建树,使得叶节点不仅包含单一的类别估计,还包含概率估计。这可以通过运行任何标准的决策树算法,并让大量数据通过它,并计算在每个叶节点中预测标签正确的时间比例来实现;这就是sklearn所做的。这些有时被称为“概率估计树”,尽管它们不能提供完美的概率估计,但它们可能是有用的。在21世纪初,有大量的工作研究它们,有时使用更复杂的方法,但sklearn中的简单方法在森林中使用时还是不错的。
…