模型树——就是回归树的分段常数预测修改为线性回归 对于非线性回归有较好的预测效果
2017-07-26 20:30
465 查看
说完了树回归,再简单的提下模型树,因为树回归每个节点是一些特征和特征值,选取的原则是根据特征方差最小。如果把叶子节点换成分段线性函数,那么就变成了模型树,如(图六)所示:
(图六)
(图六)中明显是两个直线组成,以X坐标(0.0-0.3)和(0.3-1.0)分成的两个线段。如果我们用两个叶子节点保存两个线性回归模型,就完成了这部分数据的拟合。实现也比较简单,代码如下:
[python] view plain copy
def linearSolve(dataSet): #helper function used in two places
m,n = shape(dataSet)
X = mat(ones((m,n))); Y = mat(ones((m,1)))#create a copy of data with 1 in 0th postion
X[:,1:n] = dataSet[:,0:n-1]; Y = dataSet[:,-1]#and strip out Y
xTx = X.T*X
if linalg.det(xTx) == 0.0:
raise NameError('This matrix is singular, cannot do inverse,\n\
try increasing the second value of ops')
ws = xTx.I * (X.T * Y)
return ws,X,Y
def modelLeaf(dataSet):#create linear model and return coeficients
ws,X,Y = linearSolve(dataSet)
return ws
def modelErr(dataSet):
ws,X,Y = linearSolve(dataSet)
yHat = X * ws
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
(图六)
(图六)中明显是两个直线组成,以X坐标(0.0-0.3)和(0.3-1.0)分成的两个线段。如果我们用两个叶子节点保存两个线性回归模型,就完成了这部分数据的拟合。实现也比较简单,代码如下:
[python] view plain copy
def linearSolve(dataSet): #helper function used in two places
m,n = shape(dataSet)
X = mat(ones((m,n))); Y = mat(ones((m,1)))#create a copy of data with 1 in 0th postion
X[:,1:n] = dataSet[:,0:n-1]; Y = dataSet[:,-1]#and strip out Y
xTx = X.T*X
if linalg.det(xTx) == 0.0:
raise NameError('This matrix is singular, cannot do inverse,\n\
try increasing the second value of ops')
ws = xTx.I * (X.T * Y)
return ws,X,Y
def modelLeaf(dataSet):#create linear model and return coeficients
ws,X,Y = linearSolve(dataSet)
return ws
def modelErr(dataSet):
ws,X,Y = linearSolve(dataSet)
yHat = X * ws
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
相关文章推荐
- 初学ML笔记N0.1——线性回归,分类与逻辑斯蒂回归,通用线性模型
- 初学ML笔记N0.1——线性回归,分类与逻辑斯蒂回归,通用线性模型
- 使用三种继承回归模型对美国波士顿房价训练数据进行学习,并对测试数据进行预测
- Unity中修改3D模型的透明度,实现3D模型渐变出现的效果(附源码)
- 数据挖掘方法(2) 回归模型(简单线性回归)
- [Step By Step]SAP HANA PAL双变量自然对数回归预测分析Bi-Variate Natural Logarithmic Regression编程实例LNREGRESSION(模型)
- [PAL编程规范]SAP HANA PAL逻辑回归预测分析Logistic Regression编程规范LOGISTICREGRESSION(模型)
- BP神经网络回归预测模型(python实现)
- 初学ML笔记N0.1——线性回归,分类与逻辑斯蒂回归,通用线性模型
- Excel在统计分析中的应用—第十二章—回归分析与预测-一元非线性回归分析与预测
- 初学ML笔记N0.1——线性回归,分类与逻辑斯蒂回归,通用线性模型
- 逻辑回归模型(Logistic Regression, LR)基础---线性回归
- 初学ML笔记N0.1——线性回归,分类与逻辑斯蒂回归,通用线性模型
- TensorFlow对于sin函数的预测----RNN模型
- 信用卡违约客户的预测模型的选择(三)线性回归
- TensorFlow对于自然语言序列(PTB)的预测----RNN模型
- [Step By Step]SAP HANA PAL逻辑回归预测分析Logistic Regression编程实例LOGISTICREGRESSION(模型)
- 模型与模式4预测模型1回归
- 数据挖掘-diabetes数据集分析-糖尿病病情预测_线性回归_最小平方回归
- 初学ML笔记N0.1——线性回归,分类与逻辑斯蒂回归,通用线性模型