机器学习实战学习笔记 --- 树回归

版权声明:学习交流为主,未经博主同意禁止转载,禁止用于商用。 https://blog.csdn.net/u012965373/article/details/88864307

树的构建算法 CART(Classification And Regression Trees, 分类回归树)的树构建算法。该算法可以用来分类也可以用来回归。

树回归 原理

原理概述

为了构建以分段常数为叶节点的树,需要度量出数据的一致性。

首先计算所有数据的均值,然后计算每条数据的值到均值的差值。为了对正负差值同等看待,一般用绝对值或者平方值来代替上述差值。

方差是平方误差的均值(均方差),而这里需要的是平方误差的总值(总方差)。总方差是通过均方差乘以数据集中样本点的个数来得到的。

树构建算法 比较

1.ID3 -> 每次选取当前最佳的特征来分隔数据,并按照该特征的所有可能值来切分。

2.二分切分法 -> 每次切分将数据集分成两份。如果数据的某特征等于切分所要求的值,那么这些数据进入树的左子树,反之进入右子树。

3.Cart切分 -> 是一种非常著名且广泛记载的构建树的算法,它使用二元切分来处理连续型变量。

构建决策树常用到的三个方法:

ID3, C4.5, CART 三种方法的主要区分是划分分支方法:

1.ID3是信息增益的分支

2.C4.5是信息增益率的分支

3.CART是GINI系数分支

树回归工作原理:

对每个特征:

        对每个特征值:

                将数据集切分成两份(小于该特征的数据样本放在左子树,否则放在右子树)

                计算切分的误差

                如果当前误差小于当前的最小误差,那么当前切分设定为最佳切分并更新最小误差

返回最佳切分的特征和阈值

建树的伪代码:

找到最佳的待切分特征:

        如果该节点不能再分,将该节点存为叶子节点

        执行二元切分

        在右子树调用 createTree() 方法

        在左子树调用 createTree() 方法

树回归开发流程:

1.收集数据

2.准备数据

3.分析数据

4.训练算法

5.测试算法

6.使用算法


树剪枝方法:

一个树如果节点过多,表明该模型肯能对数据进行了“过拟合”。

通过降低决策树的复杂度来避免过拟合的过程称为剪枝(pruning)。在函数chooseBestSplit()中提前终止条件,实际上是在进行一种所谓的预剪枝(prepruning)操作。另一个形式的兼职需要使用测试集和训练集,称作后剪枝(postpruning)。

预剪枝(prepruning)

预剪枝就是提早的停止树增长,在构造决策树的同时进行剪枝。

所以决策树的构建方法,都是在无法进一步降低熵的情况下才会停止创建分支的过程,为了避免过拟合,可以设定一个阈值,熵减小的数量小于这个阈值,即使还可以继续降低熵,也停止继续创建分支。

后剪枝(postpruning)

决策树构造完成后进行剪枝。剪枝的过程是对拥有同样父节点的一组节点进行检查,判断如果将其合并,熵的增加量是否小于某一阈值。如果确实小,则这一组节点可以合并一个节点,其中包含了所有的可能结果。合并也称作塌陷处理,在回归树中一般采取需要合并的所有子树的平均值。后剪枝是目前最普遍的做法。

后剪枝 prune() 的伪代码如下:

    基于已有的树切分测试数据:

        如果存在任一子集是一棵树,则在该子集递归剪枝过程

        计算当前两个叶子合并后的误差

        计算不合并的误差

        如果合并会降低误差的话,就将叶子结点合并

猜你喜欢

转载自blog.csdn.net/u012965373/article/details/88864307