(九)树回归

 数据集中经常包含一些复杂的相互关系,使得输入数据和目标变量之间呈现非线性关系。对这些复杂的关系建模,一种可行的方式是使用树来对预测值分段,包括分段常数和分段直线。

  •  线性回归方法(局部加权线性回归除外)创建的模型需要拟合所以的样本点。面对许多非线性问题,不可能使用全局线性模型来拟合任何数据。

  •  一种可行的方法是将数据集切分成许多份易建模的数据,然后再利用线性回归方法进行建模。

  •  决策树不断将数据切分成小的数据集,直到所有目标变量完全相同,或者数据不能再切分为止。决策树是一种贪心算法,它要在给定时间内做出最佳选择,但并不关心能否达到全局最优。

  •  ID3算法:每次选取当前最佳特征来分割数据,并按照该特征的所有可能取值来切分。例如,一个特征有四种取值,那么数据将被切分成4份。一旦按某特征切分后,该特征在之后的算法执行过程中将不会再起作用。(切分过于迅速且不能处理连续型特征)

  •  二元切分法:每次将数据切分为两份。如果特征值大于给定值就走左子树,否者,走右子树。

  •  CART(Classification And Regression Trees,分类回归树),即可用于分类,也可用于回归。

  •  用字典存储树的数据结构,该字典包括4个元素:
      1.待切分的特征。2.待切分的特征值。3.右子树。当不在需要切分的时候,也可以是单个值。4.左子树

  • 回归树:叶节点使用的模型是分段常数

  • 模型树:叶节点使用的模型是线性回归方程

构建树

  • createTree()函数:
    伪代码:
找到最佳的切分特征:
	如果该节点不能再切分,将该节点存为叶节点
	执行二元切分
	在右子树调用createTree()方法
	在左子树调用createTree()方法
  • 如何实现数据的切分?怎么才知道是否已经充分切分?这些问题的答案,取决于叶节点的建模方式。
  • chooseBestSplot()函数:
      给定某个误差计算方法。该函数会找到数据集上最佳的二元切分方式,还要确定什么时候停止切分,一旦停止切分会生成一个叶节点。
     完成两件事:
      用最佳的方式切分数据集和生成相应的叶节点。
    伪代码:
对每个特征:
	对每个特征值:
		将数据集切分成两份:
		计算切分的误差
		如果当前误差小于当前最小误差,那么将当前切分设定为最佳切分并更新最小误差。
返回最佳切分的特征和阈值

树剪枝

 一棵树如果节点过多,表明该模型可能对数据进行了“过拟合”。可以使用测试集上某种交叉验证技术来发现过拟合。
 通过降低决策树的复杂度来减小过拟合的过程称为剪枝(pruning)。

  • 预剪枝(prepruning):在树的构建过程中进行剪枝。(预剪枝更有效,但需要用户定义一些参数)
  • 后剪枝(postpruning):当树构建完毕再进行剪枝
    使用后剪枝方法需要将数据集分成测试集和训练集。首先构建一个足够大,足够复杂的树,便于剪枝。接下来从上而下找到叶节点,用测试集来判断将这些叶节点合并是否能降低测试误差,如果是的话,就合并。
    伪代码:
基于已有的树切分测试数据:
	如果存在任一子集是一棵树,则在该子集递归剪枝过程
	计算将将当前两个叶节点合并后的误差
	计算不合并的误差
	如果合并会降低误差,就将叶节点合并

模型树

  • 将叶节点设定为分段线性函数
    分段线性(piecewise linear):模型由多个线性片段组成。

树回归与标准回归的比较

  • 计算相关系数

使用tkinter库创建GUI

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值