《机器学习实战》 第九章【树回归】

算法描述

实际生活中的很多问题都是非线性的,不可能使用全局线性模型来进行拟合数据,有一种方法是将数据集切分成为很多份易于建模的数据,然后再利用上一节所使用的方法,线性回归技术,来进行建模,如果首次切分后还是很难以拟合线性模型,我们就继续进行切分。使用树回归发给发就比较有用。

树回归算法

构建树

找到最佳的待切分特征:
    如果该节点不能再分,将该节点存为叶节点
    执行二元切分
    在右子树调用 createTree() 方法
    在左子树调用 createTree() 方法

找数据集最佳切分点

对每个特征:
    对每个特征值: 
        将数据集切分成两份(小于该特征值的数据样本放在左子树,否则放在右子树)
        计算切分的误差
        如果当前误差小于当前最小误差,那么将当前切分设定为最佳切分并更新最小误差
返回最佳切分的特征和阈值

树剪枝

预剪枝

预剪枝就是及早的停止树增长,在构造决策树的同时进行剪枝。所有决策树的构建方法,都是在无法进一步降低熵的情况下才会停止创建分支的过程,为了避免过拟合,可以设定一个阈值,熵减小的数量小于这个阈值,即使还可以继续降低熵,也停止继续创建分支。但是这种方法实际中的效果并不好。

后剪枝
基于已有的树切分测试数据:
    如果存在任一子集是一棵树,则在该子集递归剪枝过程
    计算将当前两个叶节点合并后的误差
    计算不合并的误差
    如果合并会降低误差的话,就将叶节点合并

CART算法

CART模型是应用广泛的决策树学习方法,由特征选择树的生成剪枝组成,既可以用于分类也可以用于回归。CART是在给定输入随机变量X条件下输出随机变量Y的条件概率分布的学习方法,CART假设决策树是二叉树,内部特征结点的取值为“是”和“否”,左分支是取值为“是”的分支,右分支是取值为“否”的分支,这样的决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有限个单元,并在这些单元上确定预测的概率分布,也就是在输入给定的条件下输出的条件概率分布。对CART稍作修改就可以处理回归问题。
这里有一篇比较好的CART解释文章

模型树

用树来对护具进行建模,除了把叶节点简单地设定为常熟值外,还有一种方法是把叶节点设定为分段线性函数,分段线性也就是指模型由多个线性片段组成。模型树的可解释性优于回归树,其预测准确度也比较高。

一般流程

  • 收集数据:任意方法
  • 准备数据:数值型数据,标称型数据转为二值型数据
  • 分析数据:绘出数据的二维可视化显示结果,以字典方式生成树
  • 训练算法:大部分时间都花费在叶节点树模型的构建上
  • 测试算法:使用测试数据中的R2值来进行分析
  • 使用算法:使用训练出来的树做预测,预测结果还可以用来做很多事情

优缺点

  • 优点:可以对复杂和非线性的数据建模
  • 缺点:结果不易理解
  • 适用数据类型:数值型和标称型数据

代码可参考:
https://blog.youkuaiyun.com/u010859707/article/details/78180285

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小风_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值