1.理解回归树和模型树

决策树用于数值预测:

  • 回归树:基于到达叶节点的案例的平均值做出预测,没有使用线性回归的方法。
  • 模型树:在每个叶节点,根据到达该节点的案例建立多元线性回归模型。因此叶节点数目越多,一颗模型树越大,比同等回归树更难理解,但模型可能更精确。

将回归加入到决策树:

分类决策树中,一致性(均匀性)由熵值来度量;数值决策树,则通过统计量(如方差、标准差或平均绝对偏差等)来度量。

标准偏差减少SDR:一个常见的分割标准。



比如计算特征A和特征B的SDR分别为1.2和1.4,即特征B标准差减少得更多(更加均匀),所以首先使用特征B,这就是回归树。而模型树则需要再建立一个结果相对于特征A的线性回归模型,然后根据两个线性模型中的任何一个为新的案例做出预测。

2.回归树和模型树应用示例

葡萄酒质量评级

1)收集数据

白葡萄酒数据包含4898个葡萄酒案例的11种化学特征的信息(如酸性/含糖量/pH/密度等,还包含一列质量等级)。

数据下载:

链接: https://pan.baidu.com/s/1pN_PtZOYjOz2I-KJqSq6pw 提取码: 6swg

2)探索和准备数据

## Step 2: Exploring and preparing the data ----
wine <- read.csv("whitewines.csv") # examine the wine data
str(wine) # the distribution of quality ratings
hist(wine$quality) # summary statistics of the wine data
summary(wine) wine_train <- wine[1:3750, ]
wine_test <- wine[3751:4898, ]

3)训练数据

## Step 3: Training a model on the data ----
# regression tree using rpart
library(rpart)
m.rpart <- rpart(quality ~ ., data = wine_train) # get basic information about the tree
m.rpart # get more detailed information about the tree
summary(m.rpart) # use the rpart.plot package to create a visualization
library(rpart.plot) # a basic decision tree diagram
rpart.plot(m.rpart, digits = 3) # a few adjustments to the diagram
rpart.plot(m.rpart, digits = 4, fallen.leaves = TRUE, type = 3, extra = 101)



alcohol是决策树种第一个使用的变量,所以它是葡萄酒质量种唯一重要的指标。

4)评估模型

①预测值与真实值的范围以及相关性

②用平均绝对误差度量性能

平均绝对误差MAE:考虑预测值离真实值有多远

## Step 4: Evaluate model performance ----

# generate predictions for the testing dataset
p.rpart <- predict(m.rpart, wine_test) # compare the distribution of predicted values vs. actual values
summary(p.rpart)
summary(wine_test$quality) # compare the correlation
cor(p.rpart, wine_test$quality) # function to calculate the mean absolute error
MAE <- function(actual, predicted) {
mean(abs(actual - predicted))
} # mean absolute error between predicted and actual values
MAE(p.rpart, wine_test$quality) # mean absolute error between actual values and mean value
mean(wine_train$quality) # result = 5.87
MAE(5.87, wine_test$quality)

5)提高模型性能

回归树在叶节点进行预测时只使用了一个单一的值,模型树可以通过回归树模型取代叶节点来改善回归树。

  • M5'算法(M5-prime):RWeka::M5P函数

## Step 5: Improving model performance ----
# train a M5' Model Tree
library(RWeka)
m.m5p <- M5P(quality ~ ., data = wine_train) # display the tree
m.m5p # get a summary of the model's performance
summary(m.m5p) # generate predictions for the model
p.m5p <- predict(m.m5p, wine_test) # summary statistics about the predictions
summary(p.m5p) # correlation between the predicted and true values
cor(p.m5p, wine_test$quality) # mean absolute error of predicted and true values
# (uses a custom function defined above)
MAE(wine_test$quality, p.m5p)



分割与回归树相似,但节点不是以一个数值预测终止,而是以一个线性模型终止(LM1,LM2...LM163)



模型树的预测范围、相关性、平均绝对误差比回归树都有所改善。

PS:回归树和模型树的结果比较费解,这篇推文解读有点简单


机器学习与R语言系列推文汇总:

【机器学习与R语言】1-机器学习简介

【机器学习与R语言】2-K近邻(kNN)

【机器学习与R语言】3-朴素贝叶斯(NB)

【机器学习与R语言】4-决策树

【机器学习与R语言】5-规则学习

【机器学习与R语言】6-线性回归

【机器学习与R语言】7-回归树和模型树

【机器学习与R语言】8-神经网络

【机器学习与R语言】9-支持向量机

【机器学习与R语言】10-关联规则

【机器学习与R语言】11-Kmeans聚类

【机器学习与R语言】12-如何评估模型的性能?

【机器学习与R语言】13-如何提高模型的性能?

【机器学习与R语言】7-回归树和模型树的更多相关文章

  1. 【机器学习与R语言】6-线性回归

    目录 1.理解回归 1)简单线性回归 2)普通最小二乘估计 3)相关系数 4)多元线性回归 2.线性回归应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高模型性能 1.理 ...

  2. 【机器学习与R语言】4-决策树

    目录 1.决策树原理 2.决策树应用示例 2.1)收集数据 2.2)探索和准备数据 2.3)训练模型 2.4)评估模型性能 2.5)提高模型性能 通过自适应增强算法(boosting) 将惩罚因子分配 ...

  3. 【机器学习与R语言】13- 如何提高模型的性能?

    目录 1.调整模型参数来提高性能 1.1 创建简单的调整模型 2.2 定制调整参数 2.使用元学习来提高性能 2.1 集成学习(元学习)概述 2.2 bagging 2.3 boosting 2.4 ...

  4. 【机器学习与R语言】12- 如何评估模型的性能?

    目录 1.评估分类方法的性能 1.1 混淆矩阵 1.2 其他评价指标 1)Kappa统计量 2)灵敏度与特异性 3)精确度与回溯精确度 4)F度量 1.3 性能权衡可视化(ROC曲线) 2.评估未来的 ...

  5. 【机器学习与R语言】11- Kmeans聚类

    目录 1.理解Kmeans聚类 1)基本概念 2)kmeans运作的基本原理 2.Kmeans聚类应用示例 1)收集数据 2)探索和准备数据 3)训练模型 4)评估性能 5)提高模型性能 1.理解Km ...

  6. 【机器学习与R语言】10- 关联规则

    目录 1.理解关联规则 1)基本认识 2)Apriori算法 2.关联规则应用示例 1)收集数据 2)探索和准备数据 3)训练模型 4)评估性能 5)提高模型性能 1.理解关联规则 1)基本认识 购物 ...

  7. 【机器学习与R语言】9- 支持向量机

    目录 1.理解支持向量机(SVM) 1)SVM特点 2)用超平面分类 3)对非线性空间使用核函数 2. 支持向量机应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高性能 ...

  8. 【机器学习与R语言】8- 神经网络

    目录 1.理解神经网络 1)基本概念 2)激活函数 3)网络拓扑 4)训练算法 2.神经网络应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高性能 1.理解神经网络 1) ...

  9. 【机器学习与R语言】5-规则学习算法

    目录 1.分类规则原理 1.1 1R单规则算法 1.2 RIPPER算法 2. 规则学习应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估性能 5)提高性能 6)选择决策树中的分类规则 ...

随机推荐

  1. [敏捷软工团队博客]Beta阶段发布声明

    项目 内容 2020春季计算机学院软件工程(罗杰 任健) 博客园班级博客 作业要求 Beta阶段发布声明 我们在这个课程的目标是 在团队合作中锻炼自己 这个作业在哪个具体方面帮助我们实现目标 对Bet ...

  2. 【二食堂】Beta - Scrum Meeting 11

    Scrum Meeting 11 例会时间:5.26 18:30~18:50 进度情况 组员 当前进度 今日任务 李健 1. 文本导入.保存部分的工作比想象中的难,还需要一些时间完成issue 1. ...

  3. JAVA实现表达式求导运算的分析总结

    1第一次作业 1.1题目描述 对形如4*x+x^2+x的多项式求导. 1.2类图 1.3度量分析 在完成第一次作业时,我的写法没有特别的"面向对象".唯一封装起来的是Node,代表 ...

  4. Pogo-Cow S

    这题出在单调队列优化dp里,就离谱好吧...... 对不住了上来先喷一波,不过离谱是确实的 dp的含义也很简单,就是说从j到i的分数最大值 直接上代马,里面说的很详细了 1 #include<b ...

  5. Pycharm的安装简介

    Pycharm 1. Pycharm简介 PyCharm是由JetBrains打造的一款Python IDE,VS2010的重构插件Resharper就是出自JetBrains之手.同时支持Googl ...

  6. Navicat15 For Mysql最新版完美破解图文教程(支持Win和Mac)

    Navicat15 For Mysql最新版完美破解 欢迎关注博主公众号[跟着Mic学架构],专注于分享Java领域技术干货,回复关键字 [面试资料] 可以获得海量面试资料. 申明,本教程 Navic ...

  7. 你们不要再吵了! Java只有值传递..

    写在前边 上次聊到Java8新特性 lambda时,有小伙伴在评论区提及到了lambda对于局部变量的引用,补充着博客的时候,知识点一发散就有了这篇对于值传递还是引用传递的思考.关于这个问题为何会有如 ...

  8. kubernetes常见命令

    kubernetes命令 kubectl get pod --all-namespaces查看pod节点 kubectl delete -n service/pods/deplay 删除指定内容 ku ...

  9. dart系列之:dart语言中的函数

    目录 简介 函数的参数 main函数 匿名函数 闭包 函数的返回值 总结 简介 函数是所有编程语言都有的内容,不管是面向对象还是面向过程,函数都是非常重要的一部分.dart中的函数和java中的函数有 ...

  10. 《Python语言程序设计》【第2周】Python基本图形绘制

    实例2:Python蟒蛇绘制 #PythonDraw.py import turtle #import 引入了一个绘图库 turtle 海龟库--最小单位像素 turtle.setup(650, 35 ...