栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

机器学习算法之决策树与随机森林的原理和常用参数

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

机器学习算法之决策树与随机森林的原理和常用参数

综述:随机森林和决策树一样都可用于分类和回归,然而随机森林的模型结果往往优于决策树。 本篇文章主要讲解以上两种ML算法的原理和常用参数。 一、 原理 1.1 决策树 1.1.1决策树释义

决策树是一种非参数的有监督学习方法。本质上是从训练数据集中归纳出一组决策规则,用来解决分类和回 归问题,规则由:根结点、内部结点、叶子结点(标签)组成的树状图来呈现。

1.1.2 决策树算法要解决两个核心问题:

1、如何从数据表中找出最佳节点和最佳分枝?
1)“不纯度”是决策树特征选择的依据,通常用基尼系数或者信息熵(信息增益)来计算,基尼系数的取值在[0,0.5],信息熵的取值在[0,1]
2)我们需要知道:信息熵对不纯度更加敏感,信息熵作为指标时,计算速度缓慢一些,并且决策树生长的更加“精细”。如果有高维度数据和噪声数据,信息熵更容易过拟合,此时我们应选择基尼系数;反之,如果模型拟合程度低,在训练集和测试集上得分都较低时,我们应选择信息熵。
不过也并非绝对,机器学习的参数选择还是应由具体数据而定。
2、如何让决策树停止生长,防止过拟合?
1)限制树的深度;
2)限制在分支后每个子节点的样本量大小;
3)限制每个节点在分支前必须包含的样本量;
4)限制分支是考虑的特征个数:方法比较简单粗暴、有失严谨可能导致决策树学习不足,一般采用PCA等方式来降维;

1.2 随机森林 1.2.1 随机森林释义

随机森林是非常具有代表性的Bagging集成算法,它的所有基评估器都是单棵决策树。其中分类树集成的的一片森林就叫做随机森林分类器,回归树所集成的一片森林就叫做随机森林回归器。Bagging装袋法的核心思想是构建多个相互独立的评估器,然后对其预测进行平均或者多次表决原则来决定集成评估器的结果,袋装法的代表模型就是随机森林。

1.2.2 随机森林一定比单个分类器好么?

1、随机森林(袋装法)的前提是基分类器如何相互独立,如何做到?
1)随机森林自带随机性,生成的树天生不一样,由random_state 来控制,用法与决策树一致,当固定下来时,会控制生产一片固定的森林,而非让一片森林中只有一颗树
2)袋装法的有放回随机抽样来形成不同的训练集,由不同训练集得到的不同的基分类器自然也就不同了。
2、随机森林的结果一定比单个基分类器好么?

1)图中横轴:单个分类器的错误率;纵轴:随机森林的错误率,
2)图中的直线是森林中的每一颗树都相同,即对应的错误率都相同时的情况;图中的曲线是森林中的每一颗树都不相同,即错误率都不相同时的情况
3)可以从图像上看出,当单个分类器的误差率小于0.5,即准确率大于0.5时,集成的效果是比基分类器要好的。相反,当基分类器的误差率大于0.5,袋装的集成算法就很不理想。所以在使用随机森林之前,一定要检查,用来组成随机森林的单个分类树是否都有至少50%的预测正确率。

二、常用参数 2.1 决策树 2.1.1 分类常用参数
criterion: 确定不纯度的方法,默认值为“gini”,为基尼系数。也可选择:“entropy”
random_state: 用来设置分支中的随机模式的参数,默人为None,可以输入任意数值,让决策树稳定,一直生长同一棵树
splitter: 控制决策树中分支的随机选项,“best”决策树在分支时虽然随机,但是会选择更重要的特征进行分支,“random”决策树在分支时会更加随机
max_depth:  限制树的最大深度,超过设定深度的树枝会被全部剪掉,可从=3开始尝试
min_samples_split:  一个中间节点所需要的最小样本量,默认 = 2,小于该参数的设定值分支不会发生
min_samples_leaf: 分支后每个子节点所需要的最小样本量,默认 = 1,可输入整数或者浮点数,小于该参数的设定值分支不会发生
max_features:在做最佳分支时,考虑的特征个数
min_impurity_decrease: 限制不纯度降低的大小,默认 = 0,若不纯度的降低>= 该参数设定值,则保留,否则决策树不会继续生长
class_weight: 调节样本均衡的参数,可输入字典、“balanced”、“None”
2.1.2 回归常用参数
注: 回归树的常用参数和分类数相同,不同为以下两点:
1、criterion: 衡量分支质量的指标,“mse”、“friedman_mse”、“mae”,常用“mse”,为均方误差,本质是样本真实数据和回归结果的差异,我们希望mse的结果越接近0越好
2、不需要class_weight,因为在回归树种,没有标签分布是否均衡的问题
2.2 随机森林 2.2.1 分类常用参数
n_eatimators: 不影响模型复杂度,大就是好,但是达到一定程度之后,会在某个值的上下波动。该参数太大,会造成大的计算量,我们渴望在训练时间和模型效果之间取得平衡,常常利用交叉验证+循环的方式以较大的循环步长粗略确定范围,在以更精确的步长来进一步锁定最优效果所对应的参数值。
criterion: 确定不纯度的方法,默认值为“gini”,为基尼系数。也可选择:“entropy”
random_state: 随机森林自带随机性的原因,当该参数固定下来时,会控制生产一片固定的森林,而非让一片森林中只有一颗树
bootstrap: 默认为True,代表采用有放回的随机抽样技术
oof_score: 使用袋装法会让会有1-0.632 的比例的数据落出袋外,可以用来做测试集,使用接口oob_score_查看袋外数据上测试的结果
max_depth:  限制树的最大深度,超过设定深度的树枝会被全部剪掉,可从=3开始尝试
min_samples_split:  一个中间节点所需要的最小样本量,默认 = 2,小于该参数的设定值分支不会发生
min_samples_leaf: 分支后每个子节点所需要的最小样本量,默认 = 1,可输入整数或者浮点数,小于该参数的设定值分支不会发生
max_features:在做最佳分支时,考虑的特征个数
min_impurity_decrease: 限制不纯度降低的大小,默认 = 0,若不纯度的降低>= 该参数设定值,则保留,否则决策树不会继续生长
2.2.2 回归常用参数
注:  所有的常用参数全部和随机森林分类器一致。仅有的不同就是回归树与分类树的不同,不纯度的指标,参数Criterion不一致。
criterion: 衡量分支质量的指标,“mse”、“friedman_mse”、“mae”,常用“mse”,为均方误差,本质是样本真实数据和回归结果的差异,我们希望mse的结果越接近0越好

注:学习机器学习算法有一段时间了,喜欢看讲解+实践操练(码一遍)的方式学习,看过不同老师的视频讲解,觉得【菜菜的sklearn】讲的尤其清楚,供大家参考,b站可以搜到。学习的路上一位好的老师很重要,分享出来,希望一同学习的小伙伴可以少走弯路,提升ROI!!哈哈

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/290980.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号