数据挖掘小白实战宝典系列!01决策树梳理及其参数详解!

17 篇文章 0 订阅
13 篇文章 2 订阅

本文章只用于学习交流不用于任何商业行为,所有知识点资料来源于网络,如有任何不当之处请私信联系,作者会及时改正

本文中总结自文档所有标注的页码都是附件参考文档中的页码

由于markdown不支持附件下载,附件链接如下

http://note.youdao.com/noteshare?id=05a144c93bd1f66d0a25881a5fe5ce65

使用流程 & 参数总表

=============================

8个主要参数:Criterion,两个随机性相关的参数(random_state,splitter),五个剪枝参数(max_depth,min_samples_split,min_samples_leaf,max_feature,min_impurity_decrease)
1特殊参数(目标权重参数): class_weight & min_weight_fraction_leaf
一个属性:feature_importances_
四个接口:fit,score,apply,predict

参数调节顺序:

0 根据情况决定
Criterion&random_state

-> 1 max_depth & min_samples_leaf

-> 2 其他三个剪枝参数

调参思路:

数据少的情况下每个参数学习曲线画一下确定一下大致范围

数据大网格搜索效果不一定有自己跑的高,因为参数多说不定还没有参数少的时候结果好,下面这个例子就是这样.所以建议是少量的重要特征叠加测试然后,逐渐增加

1概述

1.1决策树是如何工作的

决策树(Decision Tree)是一种非参数的有监督学习方法(即对输入的数据没有结构限制),它能够从一系列有特征和标签的数据中总结出决策规则,并用树状图的结构来呈现这些规则,以解决分类和回归问题。

决策树算法的核心解决的两个问题

决策树算法的核心是要解决两个问题:
1)如何从数据表中找出最佳节点和最佳分枝?
2)如何让决策树停止生长,防止过拟合?

2重要参数及其详细说明

纯度参数1:criterion

说明:
确定不纯度的计算方法,帮忙找出最佳节点和最佳分枝,不纯度越低,决策树对训练集的拟合越好.
分类模式
有"gini"(基尼系数)和"entropy"(信息增益)可选
如何选取
通常就使用基尼系数
数据维度很大,噪音很大时使用基尼系数
维度低,数据比较清晰的时候,信息熵和基尼系数没区别
当决策树的拟合程度不够的时候,使用信息熵
两个都试试,不好就换另外一个

回归模式
有’mse’,'friedman_mse’和’mae’可选,默认的是R2

作用:

不同的计算方法计算时间和效果不同

分类模式
“gini”:通过基尼系数计算
“entropy”:通过信息增益计算
回归模式
‘mse’:通过使用叶子节点的均值来最小化L2损失
‘friedman_mse’:使用弗里德曼针对潜在分枝中的问题改进后的均方误差
‘mae’:使用叶节点的中值来最小化L1损失

参数推荐:
分类模式
数据维度低时->两者差别不大,‘gini’运算快
数据维度高/噪音大时->‘gini’
拟合程度低时->‘entropy’
实际可以两者都试试
回归模式
一般使用’mse’或’friedman_mse’

模式参数: random_state

说明:

随机模式的设置

作用:

如果不固定下来,每次模型跑出来分数都不一样(不考虑训练集,测试集划分问题)

参数推荐:

随意

分支参数: splitter

说明:

控制决策树分支模式的选项
有"best"和"random"可选

作用:

“best”:选择优先选择更重要的特征进行分支
“random”:随机特征分支

参数推荐:

模型效果过拟合时推荐"random"

注意点:

1两者在低维度时几乎没有差别

剪枝参数意义:1: max_depth

棵决策树对训练数据有了过于优秀的解释性,天生过拟合,剪枝参数来降低过拟合。剪枝策略对决策树的影响巨大,正确的剪枝策略是优化决策树算法的核心。

剪枝参数1: max_depth

说明:

限制树的最大深度,超过设定深度的树枝全部剪掉

作用:

对模型效果和过拟合都有巨大的影响

参数推荐:

建议从=3开始尝试,看看拟合的效
果再决定是否增加设定深度。

注意点:

1两者在低维度时几乎没有差别

剪枝参数2: min_sample_leaf

说明:

节点在分枝后的每个子节点都必须包含至少min_samples_leaf个训练样本

作用:

抑制过拟合

参数推荐:

建议从=5开始使用。如果叶节点中含有的样本量变化很大,建议输入浮点数作为样本量的百分比来使用。
对于类别不多的分类问题,=1通常就是最佳选择
注意点:

1一般搭配max_depth使用,在回归树中有神奇的效果,可以让模型变得更加平滑

剪枝参数3: min_samples_split

说明:

节点必须要包含至少min_samples_split个训练样本,这个节点才允许被分枝

作用:

抑制过拟合

参数推荐:

看情况,一般先调别的参数

剪枝参数4: max_features

说明:

一般被当做max_depth使用,用作树的”精修“.用来限制高维度数据的过拟合的剪枝参数

作用:

直接限制可以使用的特征数量而使决策树停止分裂

参数推荐:

除非对数据很熟悉,或者经验丰富否则不推荐使用

注意点:

1在不知道决策树中的各个特征的重要性的情况下,强行设定这个参数可能会导致模型学习不足。如果希望通过降维的方式防止过拟合,建议使用PCA,ICA或者特征选择模块中的降维算法。

剪枝参数5: min_impurity_decrease

说明:

限制信息增益的大小

作用:

信息增益小于设定数值的分枝不会发生。

参数推荐:

待定

注意点:

1待定

目标权重参数: class_weight & min_weight_fraction_leaf

说明:

完成样本标签平衡的参数

作用:

给少量的标签更多的权重,让模型更偏向少数类,向捕获少数类的方向建模

参数推荐:

该默认None,表示自动给与数据集中的所有标签相同的权重。
对数据熟悉可自行调整

注意点:

1有了权重之后,样本量就不再是单纯地记录数目,而是受输入的权重影响了,因此这时候剪枝,就需要搭配min_weight_fraction_leaf这个基于权重的剪枝参数来使用。另请注意,基于权重的剪枝参数(例如min_weight_fraction_leaf)将比不知道样本权重的标准(比如min_samples_leaf)更少偏向主导类。如果样本是加权的,则使用基于权重的预修剪标准来更容易优化树结构,这确保叶节点至少包含样本权重的总和的一小部分。

重要属性和接口:

决策树最常用的接口还有apply和predict。apply中输入测试集返回每个测试样本所在的叶子节
点的索引,predict输入测试集返回每个测试样本的标签。

#apply返回每个测试样本所在的叶子节点的索引
clf.apply(Xtest)
#predict返回每个测试样本的分类/回归结果
clf.predict(Xtest)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值