1、决策树简单认识
- 决策树也是一种树模型,符合树的基本特征,由树根、树干、树枝、树叶四部分组成。
- 决策树是一种监督学习算法,英文Decision Tree
- 决策树的思想很朴素,类似于if-else的判断,可以很好的解释算法的训练流程
2、构建算法的三个步骤
2.1 构建决策树的三个步骤
- 特征选择:选取具有较强分类能力的特征
- 决策树生成:典型算法
- ID3:采用信息增益作为特征选择度量
- C4.5:采用信息增益率作为特征选择度量
- Cart树:GINI系数度量
- 决策树剪枝:
- 原因:决策树生成算法生成的树,对训练数据预测很准确,但是对新数据分类很差,这就产生了过拟合现象。
- 过拟合:决策树的构建直到没有特征可选或者信息增益很小时停止,这就导致了构建的决策树模型过于复杂,而复杂的模型是在训练数据上建立的,所以对于测试集往往造成分类不准确,这就是过拟合
- 发生过拟合就是因为模型过于复杂,对于决策树来说就是树过于复杂,解决办法就是简化树的模型降低复杂度,这个简化的过程就是剪枝。
- 决策树剪枝就是从已生成的树上减掉一些叶子节点或者子树,可以通过损失函数来实现
2.2 构建决策树模型
决策树的目标是,根据给定的一个训练数据集学习一个决策树模型。
决策树通常是递归的选择最优特征,并根据最优特征对数据集进行分割,步骤如下:
- 构建根节点,所有的样本都位于根节点
- 选择一个最优特征,根据该特征将训练数据集分割成子集,确保各个子集都有一个很好的分类,但是要考虑两种情况:
- 若可以很好的分类,则构建叶节点,并将子集划分到对应的叶子节点中去。
- 若某个子集不能和好的分类,则继续对该子集进行划分。
- 递归,直到所有的训练集被很好的分类,或没有合适的特征为止。
- 对于是否有没有被很好的分类我们的评判指标有:
- 信息增益
- 信息增益率
- GINI系数(基尼系数)
- 分类错误率等
- 对于是否有没有被很好的分类我们的评判指标有:
通过上述步骤生成的决策树,对训练数据有很好的分类能力,但是我们训练模型的目的是对未知数据的分类和预测。因此我们需要对已生成的决策树进行剪枝,从而提升决策树的泛化能力。
2.3 决策树的剪枝
决策树的剪枝是为了降低模型复杂度,避免模型的过拟合,提升模型的泛化能力,提高对未知数据集的正确分类能力。
剪枝技术分为两种:
- 先剪枝(预剪枝)
- 先剪枝是对决策树停止条件的修改
- 在树的生长过程中,根据模型规则或者条件制约树的生长
- 树的深度
- 树的最大不纯度
- 迭代次数
- 树枝分支节点包含的样本数
- 叶子节点包含的样本数
- 由先剪枝的规则可以看出,先剪枝虽然简单,但是在实际中对制约条件的选择存在很大的主观性,因此剪枝的精准度也不容易保证。
- 后剪枝
- 后剪枝是从一个充分生成的树中,按照自低向上的方式修剪掉多余的子节点。
- 用新的叶子节点代替子树,该叶子节点的类标号由子树记录中的多数类决定
- 用子树中最常用的分支代替子树
- 通常计算前后预期分类错误率,如果修剪导致预期分类错误率变大,则放弃修剪,保留相应的各个分支,否则就将相应的节点分支修剪删除。
- 通常采用后剪枝技术是最小的错误剪枝(MEP)技术,即在产生一系列的经过修剪后的决策树候选之后,利用一个独立的测试数据集,对这些经过修剪之后的决策树的分类准确性进行评价,保留下预期分类错误率最小的(修剪后)决策树
- 后剪枝是从一个充分生成的树中,按照自低向上的方式修剪掉多余的子节点。
总结,通过对比两种剪枝技术,先剪枝不太精准,后剪枝实现难度大。目前在工业界,以先剪枝 为主。
2.4 两种剪枝技术对比
- 先剪枝
- 优点
- 使得决策树很多分支没有展开,不仅仅降低了过拟合的风险,还显著减少了决策树训练时间和测试时间的开销。
- 缺点
- 人为主观因素的加入,导致模型的准确性下降
- 有欠拟合的风险
- 优点
- 后剪枝
- 优点
- 树完全生长完成后,进行剪枝,不仅降低了模型复杂度,避免了过拟合,而且有效降低了欠拟合风险
- 泛化性能往往优于先剪枝
- 缺点
- 树的训练和测试开销很大,需要对完成树的所有非叶子节点逐个考察
- 优点
3、决策树算法的优缺点
3.1 决策树的优点
- 直观、便于理解,小规模数据集有效
- 执行效率高,只需要一次构建(训练)模型,可反复使用
3.2 决策树的缺点
- 处理连续变量不好,比较难预测连续字段
- 类别较多时,错误增加的很快
- 对于时间序列的数据需要做很多的预处理
- 可规模性一般
- 实际分类的时候只能根据一个字段进行
4、决策树对连续值得处理
无法处理连续值得原因
- 由于连续的属性值不再是有限个,无法进行分支(想象一下,一个数值节点上有n多个子节点)
处理方法
- 二分法(将连续值离散化)