模型树——就是回归树的分段常数预测修改为线性回归 对于非线性回归有较好的预测效果

说完了树回归,再简单的提下模型树,因为树回归每个节点是一些特征和特征值,选取的原则是根据特征方差最小。如果把叶子节点换成分段线性函数,那么就变成了模型树,如(图六)所示:

(图六)

(图六)中明显是两个直线组成,以X坐标(0.0-0.3)和(0.3-1.0)分成的两个线段。如果我们用两个叶子节点保存两个线性回归模型,就完成了这部分数据的拟合。实现也比较简单,代码如下:

[python] view plain copy

  1. def linearSolve(dataSet):   #helper function used in two places
  2. m,n = shape(dataSet)
  3. X = mat(ones((m,n))); Y = mat(ones((m,1)))#create a copy of data with 1 in 0th postion
  4. X[:,1:n] = dataSet[:,0:n-1]; Y = dataSet[:,-1]#and strip out Y
  5. xTx = X.T*X
  6. if linalg.det(xTx) == 0.0:
  7. raise NameError(‘This matrix is singular, cannot do inverse,\n\
  8. try increasing the second value of ops‘)
  9. ws = xTx.I * (X.T * Y)
  10. return ws,X,Y
  11. def modelLeaf(dataSet):#create linear model and return coeficients
  12. ws,X,Y = linearSolve(dataSet)
  13. return ws
  14. def modelErr(dataSet):
  15. ws,X,Y = linearSolve(dataSet)
  16. yHat = X * ws
  17. return sum(power(Y - yHat,2))

代码和树回归相似,只不过modelLeaf在返回叶子节点时,要完成一个线性回归,由linearSolve来完成。最后一个函数modelErr则和回归树的regErr函数起着同样的作用。

谢天谢地,这篇文章一个公式都没有出现,但同时也希望没有数学的语言,表述会清楚。

数据ex00.txt:

0.036098 0.155096

xxx

转载请注明来源:http://blog.csdn.net/cuoqu/article/details/9502711

参考文献:

[1] machine learning in action.Peter Harrington

时间: 2024-08-27 20:22:08

模型树——就是回归树的分段常数预测修改为线性回归 对于非线性回归有较好的预测效果的相关文章

CART:分类与回归树

起源:决策树切分数据集   决策树每次决策时,按照一定规则切分数据集,并将切分后的小数据集递归处理.这样的处理方式给了线性回归处理非线性数据一个启发. 能不能先将类似特征的数据切成一小部分,再将这一小部分放大处理,使用线性的方法增加准确率呢? Part I:  树的枝与叶 枝:二叉 or 多叉? 在AdaBoost的单决策树中,对于连续型数据构建决策树,我们采取步进阈值切分2段的方法.还有一种简化处理,即选择子数据集中的当前维度所有不同的值作为阈值切分. 而在CART里,大于阈值归为左孩子,小于

从回归树到GBDT

GBDT可以看做是由多棵回归树组成的,所以要理解GBDT,就要先理解回归树.回归树也是为了做预测,只是将特征空间划分成了若干个区域,在每个区域里进行预测,举个简单例子. 图中的数据有两个特征:x1.x2,根据这两个特征可以很容易地把数据分为左下角.左上角.右上角.右下角四个区域,这四个区域各有一个中心点(5,5).(5,10).(10,10).(10,5),在对新数据做预测时,该数据落在哪个区域,就把该区域的中心点作为它的预测值.那么如何判断新数据将落在哪个区域呢?这时候"树"就派上用

数据挖掘十大经典算法--CART: 分类与回归树

一.决策树的类型  在数据挖掘中,决策树主要有两种类型: 分类树 的输出是样本的类标. 回归树 的输出是一个实数 (比如房子的价格,病人呆在医院的时间等). 术语分类和回归树 (CART) 包括了上述两种决策树, 最先由Breiman 等提出.分类树和回归树有些共同点和不同点-比如处理在何处分裂的问题. 分类回归树(CART,Classification And Regression Tree)也属于一种决策树,之前我们介绍了基于ID3和C4.5算法的决策树. 这里仅仅介绍CART是如何用于分类

机器学习经典算法详解及Python实现--CART分类决策树、回归树和模型树

摘要: Classification And Regression Tree(CART)是一种很重要的机器学习算法,既可以用于创建分类树(Classification Tree),也可以用于创建回归树(Regression Tree),本文介绍了CART用于离散标签分类决策和连续特征回归时的原理.决策树创建过程分析了信息混乱度度量Gini指数.连续和离散特征的特殊处理.连续和离散特征共存时函数的特殊处理和后剪枝:用于回归时则介绍了回归树和模型树的原理.适用场景和创建过程.个人认为,回归树和模型树

集成方法:渐进梯度回归树GBRT(迭代决策树)

http://blog.csdn.net/pipisorry/article/details/60776803 单决策树C4.5由于功能太简单,并且非常容易出现过拟合的现象,于是引申出了许多变种决策树,就是将单决策树进行模型组合,形成多决策树,比较典型的就是迭代决策树GBRT和随机森林RF.在最近几年的paper上,如iccv这种重量级会议,iccv 09年的里面有不少文章都是与Boosting和随机森林相关的.模型组合+决策树相关算法有两种比较基本的形式:随机森林RF与GBDT,其他比较新的模

CART分类与回归树与GBDT(Gradient Boost Decision Tree)

一.CART分类与回归树 资料转载: http://dataunion.org/5771.html Classification And Regression Tree(CART)是决策树的一种,并且是非常重要的决策树,属于Top Ten Machine Learning Algorithm.顾名思义,CART算法既可以用于创建分类树(Classification Tree),也可以用于创建回归树(Regression Tree).模型树(Model Tree),两者在建树的过程稍有差异.CAR

CART(分类回归树)

1.简单介绍 线性回归方法可以有效的拟合所有样本点(局部加权线性回归除外).当数据拥有众多特征并且特征之间关系十分复杂时,构建全局模型的想法一个是困难一个是笨拙.此外,实际中很多问题为非线性的,例如常见到的分段函数,不可能用全局线性模型来进行拟合. 树回归将数据集切分成多份易建模的数据,然后利用线性回归进行建模和拟合.这里介绍较为经典的树回归CART(classification and regression trees,分类回归树)算法. 2.分类回归树基本流程 构建树: 1.找到[最佳待切分

CART回归树(chap9)Machine Learning In Action学习笔记

后续再次学习,现在理解有些模糊. 优点:可以对复杂和非线性的数据建模 缺点:结果不易理解 适用数据类型:数值型(转换成二值型)和标称型数据 树回归的一般方法 收集数据:采用任意方法收集数据. 准备数据:需要数值型的数据,标称型数据应该映射成二值型数据. 分析数据:绘出数据的二维可视化显示结果,以字典方式生成树. 训练算法:大部分时间都花费在叶节点树模型的构建上. 测试算法:使用测试数据上的R2值来分析模型的效果. 使用算法:使用训练出的树做预测,预测结果还可以用来做很多事情 回归树与分类树的思路

决策树(回归树)分析及应用建模

一.CART决策树模型概述(Classification And Regression Trees) 决策树是通过一系列规则对数据进行分类的过程.它提供一种在什么条件下会得到什么值的类似规则的方法.??决策树算法属于有指导的学习,即原数据必须包含预测变量和目标变量.决策树分为分类决策树(目标变量为分类型数值)和回归决策树(目标变量为连续型变量).分类决策树叶节点所含样本中,其输出变量的众数就是分类结果:回归树的叶节点所含样本中,其输出变量的平均值就是预测结果.? 决策树是一种倒立的树结构,它由内