机器学习实战:树回归

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的具体讲解吧:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181028G0VS4200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券