Hello,大家好!我是MPIG2017级研究生陈洪云。今天给大家带来的是树回归相关内容的介绍。在上一章节中介绍了线性回归,主要是对一些简单的线性数据做预测,而本文介绍的树回归可以对复杂性,非线性数据做预测,并通过将Matplotlib与Tkinter模块相结合,以一种图形交互界面给大家展示分析参数对树回归的影响。
首先我们看下本章主要内容:
CART算法(分类回归树):有特征选择,树的生成及剪枝组成
回归于模型树
回归树:在每个叶结点上使用各自的均值做预测
模型树:在每个叶结点上都构建一个线性模型
树剪枝算法(目的防止树的过拟合)
预剪枝
后剪枝
Python中GUI的使用
下面看下本章树回归与往期数据的处理差异:
(一)将CART用于构建回归树
CART算法采用二元拆分法,即特征值大于给定值就走左子树,否则走右子树。其用于计算数据的混乱度(误差计算准则):首先计算所有数据的均值,然后计算每条数据的值到均值的差值,取绝对值或平方代替上述差值。本章中我们需要的是总方差,将均方差乘上数据集的样本点即可得到。
构建回归树的函数如下:
(二)树剪枝
预剪枝一般是根据用户自定义参数来设置最佳切分终止条件,而用户参数对数据集很敏感,一般需要多次试验才可选出最佳参数,所以此时我们引入了后剪枝。后剪枝需要将数据集分成训练集和测试集。首先制定参数,使得构建的树足够大,足够复杂,便于剪枝,用测试集来判断将这些叶节点合并是否能够降低测试误差,如果是就合并。
后剪枝函数如下:
使用后剪枝方法构建的回归树
如图所示分析,后剪枝构建的树并没有达到很好的效果,所以一般情况下,我们会将预剪枝和后剪枝同时使用。
(三)构建模型树
模型树采用了分段线性模型,结果更易理解,同时也具有更高的准确预测度。模型树的叶节点采用的是线性模型。
误差计算:对于给定的数据集先用线性模型进行拟合,然后计算真实的目标值与模型预测值之间的差值,最后把这些差值的平方求和即可。
构建模型树的函数:
数据集上应用模型树算法得到的结果
(四)构树回归与标准回归的比较
主要采用各自的协方差数值的大小来进行比较。
我们根据输出结果可得,模型树>回归树>简单的线性模型
(五)使用Python的Tkinter库创建GUI
Tkinter的GUI由一些小部件(Widget)组成。所谓小部件,指的是文本框(Text Box),按钮(Button),标签(Label)和复选按钮(Check Button)等对象。
一个简单的例程:
一个完整的GUI:
集成Matplotlib和Tkinter,可视化形式展现树回归:
想要更加详细了解本讲更多细节的内容吗?那就一起来观看下面的Presentation的具体讲解吧:
领取专属 10元无门槛券
私享最新 技术干货