决策树

 

 

 用机器学习的语言来说就是,为了区分四类动物(鹰、企鹅、海豚和熊),我们利用三个 特征(“有没有羽毛”“会不会飞”和“有没有鳍”)来构建一个模型。我们可以利用监督 学习从数据中学习模型,而无需人为构建模型。

通常来说,构造决策树直到所有叶结点都是纯的叶结点,这会导致模型非常复杂,并且对 训练数据高度过拟合。

防止过拟合有两种常见的策略:一种是及早停止树的生长,也叫预剪枝(pre-pruning); 另一种是先构造树,但随后删除或折叠信息量很少的结点,也叫后剪枝(post-pruning)或 剪枝(pruning)。预剪枝的限制条件可能包括限制树的最大深度、限制叶结点的最大数目, 或者规定一个结点中数据点的最小数目来防止继续划分。
scikit-learn 的决策树在 DecisionTreeRegressor 类和 DecisionTreeClassifier 类中实现。 scikit-learn 只实现了预剪枝,没有实现后剪枝。

如果我们不限制决策树的深度,它的深度和复杂度都可以变得特别大。因此,未剪枝的树 容易过拟合,对新数据的泛化性能不佳。现在我们将预剪枝应用在决策树上,这可以在完 美拟合训练数据之前阻止树的展开。一种选择是在到达一定深度后停止树的展开。这里我 们设置 max_depth=4,这意味着只可以连续问 4 个问题(参见图 2-24 和图 2-26)。限制树的 深度可以减少过拟合。这会降低训练集的精度,但可以提高测试集的精度:

我们可以利用tree 模块的export_graphviz 函数来将树可视化。这个函数会生成一 个 .dot 格式的文件,这是一种用于保存图形的文本文件格式。我们设置为结点添加颜色 的选项,颜色表示每个结点中的多数类别,同时传入类别名称和特征名称,这样可以对 树正确标记:

 

集成(ensemble)是合并多个机器学习模型来构建更强大模型的方法。在机器学习文献 中有许多模型都属于这一类,但已证明有两种集成模型对大量分类和回归的数据集都是有效的,二者都以决策树为基础,分别是随机森林(random forest)和梯度提升决策树 (gradient boosted decision tree)。

随机森林本质上是许多决策树的集合,其中每棵树都和其他树略有不 同。随机森林背后的思想是,每棵树的预测可能都相对较好,但可能对部分数据过拟合。 如果构造很多树,并且每棵树的预测都很好,但都以不同的方式过拟合,那么我们可以对 这些树的结果取平均值来降低过拟合。既能减少过拟合又能保持树的预测能力,这可以在 数学上严格证明。
为了实现这一策略,我们需要构造许多决策树。每棵树都应该对目标值做出可以接受的预 测,还应该与其他树不同。随机森林的名字来自于将随机性添加到树的构造过程中,以确 保每棵树都各不相同。随机森林中树的随机化方法有两种:一种是通过选择用于构造树的 数据点,另一种是通过选择每次划分测试的特征。我们来更深入地研究这一过程。

 

 

 

梯度提升回归树是另一种集成方法,通过合并多个决策树来构建一个更为强大的模型。虽 然名字中含有“回归”,但这个模型既可以用于回归也可以用于分类。与随机森林方法不 同,梯度提升采用连续的方式构造树,每棵树都试图纠正前一棵树的错误。默认情况下, 梯度提升回归树中没有随机化,而是用到了强预剪枝。梯度提升树通常使用深度很小(1
监督学习   |   69
到 5 之间)的树,这样模型占用的内存更少,预测速度也更快。
梯度提升背后的主要思想是合并许多简单的模型(在这个语境中叫作弱学习器),比如深 度较小的树。每棵树只能对部分数据做出好的预测,因此,添加的树越来越多,可以不断 迭代提高性能。
梯度提升树经常是机器学习竞赛的优胜者,并且广泛应用于业界。与随机森林相比,它通 常对参数设置更为敏感,但如果参数设置正确的话,模型精度更高。


 

最近邻 适用于小型数据集,是很好的基准模型,很容易解释。
线性模型 非常可靠的首选算法,适用于非常大的数据集,也适用于高维数据。
朴素贝叶斯 只适用于分类问题。比线性模型速度还快,适用于非常大的数据集和高维数据。精度通 常要低于线性模型。
决策树 速度很快,不需要数据缩放,可以可视化,很容易解释。
随机森林 几乎总是比单棵决策树的表现要好,鲁棒性很好,非常强大。不需要数据缩放。不适用 于高维稀疏数据。
梯度提升决策树 精度通常比随机森林略高。与随机森林相比,训练速度更慢,但预测速度更快,需要的 内存也更少。比随机森林需要更多的参数调节。
支持向量机 对于特征含义相似的中等大小的数据集很强大。需要数据缩放,对参数敏感。
神经网络 可以构建非常复杂的模型,特别是对于大型数据集而言。对数据缩放敏感,对参数选取 敏感。大型网络需要很长的训练时间。

 

posted on 2020-04-17 19:10  雨过山  阅读(178)  评论(0编辑  收藏  举报