| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 机器学习-多元分类/回归决策树模型(tree包) -> 正文阅读 |
|
[人工智能]机器学习-多元分类/回归决策树模型(tree包) |
决策树(Decision Tree):Tree-Based方法用于多元数据的分类和回归。决策树点是再现了人类做决策的过程,树可以图形化显示,很容易解释。但是树的分类和回归准确度比不上其他分类和绘图模型。决策树是随机森林、boosting等组合方法的基本组件,组合大量的树通常会显著提高模型的预测准确度,但会损失一些解释性。定性与定量变量均可用于Tree-Based方法。tree\rpart\mvpart均可进行多元树分析及绘图。此文介绍如何使用tree包进行多元分类/回归决策树分析。 ?一、 准备数据 虚构微生物组和环境因子数据,包含75个样本。
图1|原始otu表,spe.csv。前两列为分类信息。 图2|环境因子数据,env.csv。 二、决策树回归模型当因变量为定量变量时,决策树进行回归分析。分析时先基于自变量划分预测空间Rj,此时残差平方和(residual sum of squares,RSS)值最小,然后对于落入某一预测空间的样本,做相同的预测。 但是考虑到所有自变量的预测空间构建基本很难实现,因此常使用递归二进制拆分(recursive binary splitting)。每一步的拆分都使RSS减少量最大。 如拆分点(cutpoint)为s,则拆分空间R1和R2为: j和s的选择基于使RSS最小化: 后面重复此过程,寻找最佳预测空间和拆分点,从而使每个结果区域的RSS值最小,直到达到终止拆分标准,比如每个终端节点包含的样本数都不高于设定的阈值。 2.1 构建回归决策树使用微生物数据与环境因子数据进行决策树回归分析。为了更好的评估分类树的分类性能,不能只计算训练误差,需要估计测试误差。将数据分为训练集和测试集数据,训练集数据用于构建模型,测试集数据用于模型评估。
图3|回归树构建结果,reg.tre。每个节点以整数标注,tree()默认树最大生长数值为31。因子变量的分类水平不能超过32。 图4|回归树输出结果,reg_tre_res.txt。var:用于拆分节点的变量及终端节点(<leaf>);n:每个节点的样本数量;dev:每个节点的偏差;yval:拟合结果,回归树为节点包含样本的因变量均值,分类树为该节点样本最多属于的分类水平;split:?节点拆分,2列分别是属于左侧或右侧的标签。 图5|回归树输出结果描述统计,reg.tre.res。包括终端节点数、拆分使用变量和残差平方和均值等信息。 图6|简单回归树绘图。回归决策树的每个节点上的数值是该节点处因变量的均值。 图7|测试数据因变量实际值与模型预测值散点图并添加趋势线。 图8|均方误差与标准化均方误差。评价模型预测好坏的一个准则为标准化均方误差(normalized mean squares error,NMSE)。 分母表示用最简单的算术平均来预测y的残差平方和。分子为该模型拟合后的残差平方和。此模型的NMSE不小于1,说明此回归模型没有任何意义(NMSE≥1)。此处是虚构数据,只讲使用方法,产生的模型没有任何意义,也没有影响。 2.2 优化模型-剪枝(Tree Pruning)经过上述过程,构建的模型可能会过拟合,导致模型对训练集数据有很好的预测能力,但对测试集数据的预测能力较差。可能的原因是生成的决策树模型过于复杂。 解决的方法之一是仅在拆分能使RSS降低值超过某个阈值的情况下才继续进行拆分。但是低于某个阈值的拆分点的之后的拆分点可能降低RSS的能力很强,所以不能随意剪枝。所以更好的优化模型的方式是先不设定RSS阈值,构建一个较大的决策树T0,然后根据某种方法对其进行剪枝获得子树。 剪枝的标准主要为获得的子树的错误率最低,常用交叉验证选择具有最低错误率的子树。但是子树集一般很大,所以一般限定在一个更小的子树集中进行交叉验证。这里引入一个新的概念复杂性代价剪枝(Cost complexity pruning,或最弱链接剪枝(weakest link pruning))。此时剪枝不考虑每棵子树,而只考虑由非负调整参数α索引的树序列。然后基于交叉验证选择α。α控制着树的复杂性及树与训练数据的适配性之间的权衡,当α=0时,子树T就是T0;当α的值逐渐增大时,表示拥有许多终端节点的树要付出的复杂性代价,因此终端节点越少,α值将会越小。 这里介绍两个定义方差(variance)与偏差(bias):1)方差是训练数据集的预测值或预测分类水平相对于其他数据集的预测值或预测分类水平的离散程度,代表了模型的泛化能力。2)偏差是模型的预测值或预测分类水平与训练数据中的实际值或实际分类水平之间的差别,代表了模型的预测准确性。模型构建要在方差与偏差之间权衡,使总体误差(偏差+方差)最小。 一般模型越复杂,偏差越低,方差越高;简单模型一般偏差较高,方差较低,所以构建总误差较低的模型需要找到合适的模型复杂度。
图9|交叉验证结果,reg.cv。当终端节点为2时,交叉验证偏差值最小。 图10|交叉验证结果-终端节点数与对应偏差绘图。 图11|剪枝后预测结果的MSE与NMSE值。剪枝后模型的NMSE值仍然大于1,而且值反而增大了,因为原始模型就没有什么意义,剪枝对原本就没有意义的模型,达不到优化效果。 三、决策树分类模型? 分类决策树的因变量是定性变量,构建的模型也是用于对观测值进行分类预测。模型对变量进行递归二进制分裂来使树生长。分类误差(classification error rate)对树生长不够敏感,因此常用Gini index和cross-entropy两个指数对分类决策树模型准确率进行判断。 Gini index是节点纯度(purity)的检测值,其值较小,表示节点包含的样本更多属于单个分类。 3.1 tree包用于构建分类决策树(Classification Trees) 利用微生物组数据,以grazing为因变量,其它变量为自变量,构建决策树。
图12|分类树输出结果,class_tre_res.txt。var:用于拆分节点的变量及终端节点(<leaf>);n:每个节点的样本数量;dev:每个节点的偏差;yval:拟合结果,回归树为节点包含样本的因变量均值,分类树为该节点样本最多属于的分类水平;split:?节点拆分,2列分别是属于左侧或右侧的标签。yprob:回归树,此为NULL;分类树则为因变量各水平的拟合比率(即每个节点中属于各分类水平的样本的比例),此数据有5个处理,所以有5列。 图13|分类树输出结果描述统计,tre.res。包含用于中间节点拆分的变量,终端节点数目和分类错误率等信息。
初次构建的决策树分类错误率较高,40%。为了得到更好的分类结果,通过交叉验证进行剪枝调整决策树复杂度。 3.2 剪枝优化模型 如果后续分析的目的是提高分类预测的准确性,则常使用分类错误率作为剪枝(pruning)的选择标准。
图14|交叉验证结果,reg.cv。size:每个树的终端节点数目;dev:cross-validation error rate;k:cost-complexity 参数值。 图15|交叉验证结果绘图。结果显示在终端节点数为3的时候误差率最低。当最低错误率,具有几个不同的终端节点数时,可以秉承简单模型的原则,选择最小的终端节点。也可以根据绘图结果,选择合适自己数据的终端节点数。当终端节点为1才有最低误差时,就选次一级的终端节点数。
图16|剪枝后分类决策树,prune.tre。树生长总是从左侧开始。经过剪枝的分类树并不总是会提高分类正确率,有时还会降低分类正确率。比如此数据就是如此。分类争取率也比较低,说明数据不适合决策树模型。 微信公众号后台回复“决策树-tree”或QQ群文件获取数据及代码。 参考资料: James, Gareth, Daniela Witten, Trevor Hastie和Robert Tibshirani. An Introduction to Statistical Learning. 卷 103. Springer Texts in Statistics. New York, NY: Springer New York, 2013. https://doi.org/10.1007/978-1-4614-7138-7. 《精通机器学习:基于R》第二版 统计学:从数据到结论 第4版,吴喜之编著,2013,中国统计出版社。 推荐阅读 R绘图-物种、环境因子相关性网络图(简单图、提取子图、修改图布局参数、物种-环境因子分别成环径向网络图) R统计绘图-分子生态相关性网络分析(拓扑属性计算,ggraph绘图) R统计绘图-单、双、三因素重复测量方差分析[Translation] R统计-PCA/PCoA/db-RDA/NMDS/CA/CCA/DCA等排序分析教程 R统计绘图-环境因子相关性+mantel检验组合图(linkET包介绍1) 机器学习-分类随机森林分析(randomForest模型构建、参数调优、特征变量筛选、模型评估和基础理论等) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:40:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |