Decision Tree Regression

Decision Tree Regression

Decision Tree Intuition

有两种决策树模型,一种是Classification另一种是Regression,两种决策树原理不同,这次主要学的是后者。


说的简单通俗一些,Decision Tree就是将数据切根据特征值切分成不同的区域,如果一个需要预测的数据掉在了某个区域里,就取一个区域中所有数据的平均值作为模型的预测值。

虽然讲起来很简单,但是运算的原理还是很高深的,这里先不深入,等我深入学习了statistical learning modle后再来update。

python

建立模型

现在已经逐渐习惯了python的回归模型建模,都是从sklearn的某个module中导入对应的class然后创建一个regressor instance,最后fit()到训练集上,回归模型就算创建完毕了。

建立Decision Tree需要用到的是sklearn.tree中的DecisionTreeRegressor class。

123
from sklearn.tree import DecisionTreeRegressorregressor = DecisionTreeRegressor(random_state = 0)regressor.fit(X, y)

可视化

和之前差不多,绘制Decision Tree模型是先把数据用散点图绘制出来,然后再把预测值画出来加到图上用线段表示作为模型。Decision Tree模型在一维的时候呈现出阶梯的形状。

12345678
X_grid = np.arange(min(X.values), max(X.values), 0.01)X_grid = X_grid.reshape((len(X_grid), 1))plt.scatter(X, y, color = 'red')plt.plot(X_grid, regressor.predict(X_grid), color = 'blue')plt.title('Truth or Bluff (Decision Tree Regression Model)')plt.xlabel('Position level')plt.ylabel('Salary')

Decision Tree可视化的问题

我们绘制之前的线性模型的时候只要用下列代码就可以了

1234567
# Visualising the Decision Tree Regression resultsplt.scatter(X, y, color = 'red')plt.plot(X, regressor.predict(X), color = 'blue')plt.title('Truth or Bluff (Regression Model)')plt.xlabel('Position level')plt.ylabel('Salary')plt.show()

发现得到的图表中Decision Tree是一条连续的倾斜的线。这不符合Decision Tree模型预测值,Decision Tree是在某一个区域内(在这个数据集中,因为特征值只有一个维度,就是在X上取不同的区间)然后取该区域的平均值作为所有点的预测值。但是图上却不是这样,在一个区域内的预测值是不同的。

这个问题的原因所在就是我们只画了1到10的十个点的预测值,不同的点之间并没有点绘制出来,matplotlib只能用线段将两个点连起来,所以就出现了倾斜的线。这种模型与之前的两种模型都不同,既不是Linear也不是Continuous,是Non-Linear & Non-continous模型。

对症下药,解决这个问题的方法就是将更多的点绘制出来,所以新建一个数列,把数据间隔变小,有更多的中间值,这样绘制出来才能看到正确的Decision Tree模型。

原文:大专栏  Decision Tree Regression

原文地址:https://www.cnblogs.com/wangziqiang123/p/11632139.html

时间: 2024-11-10 13:32:53

Decision Tree Regression的相关文章

Gradient Boost Decision Tree(&Treelink)

http://www.cnblogs.com/joneswood/archive/2012/03/04/2379615.html 1.      什么是Treelink Treelink是阿里集团内部的叫法,其学术上的名称是GBDT(Gradient Boosting Decision Tree,梯度提升决策树).GBDT是“模型组合+决策树”相关算法的两个基本形式中的一个,另外一个是随机森林(Random Forest),相较于GBDT要简单一些. 1.1    决策树 应用最广的分类算法之一

机器学习中的算法:决策树模型组合之GBDT(Gradient Boost Decision Tree)

[转载自:http://www.cnblogs.com/LeftNotEasy/archive/2011/03/07/random-forest-and-gbdt.html] 前言 决策树这种算法有着很多良好的特性,比如说训练时间复杂度较低,预测的过程比较快速,模型容易展示(容易将得到的决策树做成图片展示出来)等.但是同时,单决策树又有一些不好的地方,比如说容易over-fitting,虽然有一些方法,如剪枝可以减少这种情况,但是还是不够的. 模型组合(比如说有Boosting,Bagging等

Coursera台大机器学习技法课程笔记11-Gradient Boosted Decision Tree

将Adaboost和decision tree相结合,需要注意的地主是,训练时adaboost需要改变资料的权重,如何将有权重的资 料和decision tree相结合呢?方法很类似于前面讲过的bagging,通过采样资料来使资料获得不同的权重. 一棵完全的树的权值会无限大,可能出现过拟合.因此需要得到一棵弱分类的树,方法如下: 接下来比较深入的分析adaboost.经过代换,出现了如下惊人的结果: 某个资料的权重正比于投票分数 联系到之前学习的SVM,发现了一个秘密:投票的分数就是某个点到分隔

【Gradient Boosted Decision Tree】林轩田机器学习技术

GBDT之前实习的时候就听说应用很广,现在终于有机会系统的了解一下. 首先对比上节课讲的Random Forest模型,引出AdaBoost-DTree(D) AdaBoost-DTree可以类比AdaBoost-Stump模型,就可以直观理解了 1)每轮都给调整sample的权重 2)获得gt(D,ut) 3)计算gt的投票力度alphat 最后返回一系列gt的线性组合. weighted error这个比较难搞,有没有不用动原来的模型,通过输入数据上做文章就可以达到同样的目的呢? 回想bag

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

机器学习技法总结(六)Decision Tree Hypothesis

这里先再次提出我们利用aggregation获取更好性能的Hypothesis G所涉及的方法:blending,就是在得到g_set之后进行融合:learning呢?就是在线online的获取g并融合.下面就是关于整个aggregation所涉及到的方法总结: 其中Bagging.AdaBoost我们都已经探讨,它们分别是基于uniform(voting / average)和non-uniform(linear)的aggregation type,那么下面就开始介绍一个基于condition

OpenCV码源笔记——Decision Tree决策树

来自OpenCV2.3.1 sample/c/mushroom.cpp 1.首先读入agaricus-lepiota.data的训练样本. 样本中第一项是e或p代表有毒或无毒的标志位:其他是特征,可以把每个样本看做一个特征向量: cvSeqPush( seq, el_ptr );读入序列seq中,每一项都存储一个样本即特征向量: 之后,把特征向量与标志位分别读入CvMat* data与CvMat* reponses中 还有一个CvMat* missing保留丢失位当前小于0位置: 2.训练样本

机器学习算法实践:决策树 (Decision Tree)(转载)

前言 最近打算系统学习下机器学习的基础算法,避免眼高手低,决定把常用的机器学习基础算法都实现一遍以便加深印象.本文为这系列博客的第一篇,关于决策树(Decision Tree)的算法实现,文中我将对决策树种涉及到的 算法进行总结并附上自己相关的实现代码.所有算法代码以及用于相应模型的训练的数据都会放到GitHub上(https://github.com/PytLab/MLBox). 本文中我将一步步通过MLiA的隐形眼镜处方数集构建决策树并使用Graphviz将决策树可视化. 决策树学习 决策树

机器学习入门 - 1. 介绍与决策树(decision tree)

机器学习(Machine Learning) 介绍与决策树(Decision Tree) 机器学习入门系列 是 个人学习过程中的一些记录与心得.其主要以要点形式呈现,简洁明了. 1.什么是机器学习? 一个比较概括的理解是: 根据现有的数据,预测未来 2.核心思想 : Generalization 可以理解为,归纳.概括.就像是人的学习一样,找出一件事物与与一件事物的联系 3.归纳性的机器学习(Inductive machine learning) 其核心思想是使用训练数据,并从其中摸索出一套适用