目录
1.相关概念
1.1 定义
1.2 生成过程
1.3 剪枝
1.4 连续值的处理
1.5 节点相关概念
1.6 决策树要解决的核心问题
1.7 sklearn中的决策树
2 分类树
2.1 重要参数
2.2 建立一棵树
2.3 绘制出决策树。
2.4 查看特征重要性
2.5 多次训练构建最优树
2.6 剪枝参数
2.7 目标权重参数
2.8 重要属性和接口
3.回归树
3.1 衡量分支的指标
3.2 交叉验证
3.3 对带有噪声的正弦信号进行回归拟合
4.泰坦尼克号生存者预测
5.决策树的优缺点
参考资料
1.相关概念
1.1 定义
分类决策树模型是一种描述对实例进行分类的树形结构.决策树由结点(node)和有向边( directed edge)组成.结点有两种类型:内部结点(internal node)和叶结点(leaf node)、内部结点表示一个特征或属性,叶结点表示一个类。
决策树的损失函数通常是正则化的极大似然函数。
1.2 生成过程
决策树的生成是一个递归过程.在决策树基本算法中,有三种情形会导致递归返回: (1)当前结点包含的样本全属于同一类别,无需划分;(2)当前属性集为空,或是所有样本在所有属性上取值相同,无法划分;(3)当前结点包含的样本集合为空,不能划分。在第(2)种情形下,我们把当前结点标记为叶结点,并将其类别设定为该结点所含样本最多的类别;在第(3)种情形下,同样把当前结点标记为叶结点,但将其类别设定为其父结点所含样本最多的类别.注意这两种情形的处理实质不同:情形(2)是在利用当前结点的后验分布,而情形(3)则是把父结点的样本分布作为当前结点的先验分布。
1.3 剪枝
剪枝(pruning)是决策树学习算法对付“过拟合”的主要手段.在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分支过多,这时就可能因训练样本学得“太好”了,以致于把训练集自身的一些特点当作所有数据都具有的一般性质而导致过拟合。因此,可通过主动去掉一些分支来降低过拟合的风险。
决策树剪枝的基本策略有“预剪枝”(prepruning)和“后剪枝”(post-pruning)[Quinlan,1993].预剪枝是指在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点;后剪枝则是先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。
1.4 连续值的处理
由于连续属性的可取值数目不再有限,因此,不能直接根据连续属性的可取值来对结点进行划分。此时,连续属性离散化技术可派上用场。最简单的策略是采用二分法(bi-partition)对连续属性进行处理,这正是C4.5决策树算法中采用的机制「Quinlan,1993]。
1.5 节点相关概念
根节点:没有进边,有出边。包含最初的,针对特征的提问。
中间节点:既有进边也有出边,进边只有一条,出边可以有很多条。都是针对特征的提问。
叶子节点:有进边,没有出边,
每个叶子节点都是一个类别标签
。
*
子节点和父节点:在两个相连的节点中,更接近根节点的是父节点,另一个是子节点。
1.6 决策树要解决的核心问题
1.如何从数据表中找出最佳节点和最佳分枝?
2.如何让决策树停止生长,防止过拟合?
1.7 sklearn中的决策树
sklearn中决策树的类都在”tree“这个模块之下。
![](https://img-blog.csdnimg.cn/d4605de0d6bd431389cb51cc307cec8e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAa29uZ3FpbmcyMw==,size_20,color_FFFFFF,t_70,g_se,x_16)
2 分类树
2.1 重要参数
class
sklearn.tree.DecisionTreeClassifier
(
criterion=’gini’
,
splitter=’best’
,
max_depth=None
,
min_samples_split=2
,
min_samples_leaf=1
,
min_weight_fraction_leaf=0.0
,
max_features=None
,
random_state=None
,
max_leaf_nodes=None
,
min_impurity_decrease=0.0
,
min_impurity_split=None
,
class_weight=None
,
presort=False
)
为了要将表格转化为一棵树,决策树需要找出最佳节点和最佳的分枝方法,对分类树来说,衡量这个
“
最佳
”
的指标 叫做“
不纯度
”
。通常来说,不纯度越低,决策树对训练集的拟合越好。现在使用的决策树算法在分枝方法上的核心 大多是围绕在对某个不纯度相关指标的最优化上。 不纯度基于节点来计算,树中的每个节点都会有一个不纯度,并且子节点的不纯度一定是低于父节点的,也就是 说,在同一棵决策树上,叶子节点的不纯度一定是最低的。
Criterion
这个参数正是用来决定不纯度的计算方法的。
sklearn
提供了两种选择:
1
)输入
”entropy“
,使用
信息熵
(
Entropy
)
2
)输入
”gini“
,使用
基尼系数
(
Gini Impurity
)
其中
t
代表给定的节点,
i
代表标签的任意分类, 代表标签分类i
在节点
t
上所占的比例。注意,当使用信息熵 时,sklearn
实际计算的是基于信息熵的信息增益
(Information Gain)
,即父节点的信息熵和子节点的信息熵之差。
比起基尼系数,信息熵对不纯度更加敏感,对不纯度的惩罚最强。但是
在实际使用中,信息熵和基尼系数的效果基
本相同。
信息熵的计算比基尼系数缓慢一些,因为基尼系数的计算不涉及对数。另外,因为信息熵对不纯度更加敏感,所以信息熵作为指标时,决策树的生长会更加“
精细
”
,因此对于高维数据或者噪音很多的数据,信息熵很容易过拟合,基尼系数在这种情况下效果往往比较好。当模型拟合程度不足的时候,即当模型在训练集和测试集上都表现不太好的时候,使用信息熵。当然,这些不是绝对的。