R界的“party”时刻:决策树轻松get,别告诉我R语言不懂机器学习!!!






R界的“party”时刻:决策树轻松get,别告诉我R语言不懂机器学习!!!

小师妹  生信果  2024-02-01 19:00:20

R界的“party”时刻:决策树轻松get,别告诉我R语言不懂机器学习!!!
 

在机器学习中,当决策树融入算法框架时,形成了一种类似于算法“party”的场景。在这个“party”中,决策树的节点可以被视为潜在的特征,每个分支则代表一次精心设计的决策步骤,而每个叶子节点则包含着一个隐秘而精彩的输出信息!
决策树算法是一种常用于分类和回归任务的机器学习算法。它模拟人类在面临决策时的思考过程,通过构建一棵树形结构来表示不同的决策路径。决策树的基本原理是通过对数据集进行递归划分,找到最佳的决策规则。树的每个节点代表一个属性,每个分支代表一个属性值,而叶子节点则表示最终的分类或回归结果。在构建决策树时,算法会根据某个准则选择最佳的属性和划分点,直到满足停止条件为止。
市面上主流做机器学习相关的包以python包为主,但R语言也为我们提供了很多方便好用的机器学习包,结合R强大的绘图功能,使用其进行机器学习的相关工作研究能为我们的工作锦上添花!
在篇文章里,小果将为大家介绍如何使用R包——party中的函数ctree来进行决策树的构建。
高级生信分析占用内存较大,若数据集较大,R包“party”运行速度将会很慢哦,建议各位小伙伴可以使用服务器运行,如果没有自己的服务器欢迎联系我们使用服务器租赁哦~



公众号后台回复“111”

领取本篇代码、基因集或示例数据等文件

文件编号:240201

需要租赁服务器的小伙伴可以扫码添加小果,此外小果还提供生信分析,思路设计,文献复现等,有需要的小伙伴欢迎来撩~

决策树不仅在分类和回归方面大放异彩,而且它的灵活性更是其他算法望尘莫及。别犹豫,跟着决策树的步伐,一起加入这场机器学习的盛宴吧!!!    
          
Ctree()函数介绍
功能作用概述:
条件推理框架下连续、删失、有序、标称和多元响应变量的递归划分。
语法用法:
ctree(formula, data, subset = NULL, weights = NULL,controls = ctree_control(), xtrafo = ptrafo, ytrafo = ptrafo,scores = NULL)
参数说明:
formula : 模型的符号描述。注意:‘-’这样的符号不起作用,树将使用公式中列出的所有变量。
data: 包含模型中变量的数据框。
subset: 一个可选向量,指定拟用于拟合过程的观测值子集。
weights: 在装配过程中使用的可选权重向量。只允许非负整数值权重。
controls: TreeControl类的对象,可以使用”hsa04740″+9999999hCG_1776980$1¥获得。
xtrafo : 应用于所有输入的函数变量。按默认情况下,应用ptrafo函数。
ytrafo : 应用于所有响应变量的函数。默认情况下,应用ptrafo函数。
scores : 要附加到orderedfactors的可选命名分数列表。
          
当我们进入条件推理,在这个框架里,我们可以轻松进行连续、删失、有序、标称和多元响应变量的分析,就好像在数据森林中玩转递归的游戏一样。这里的每一个条件都是我们探索数据的线索,而我们的任务就是用这些线索在数据迷宫中找到正确的门,揭示出数据的精彩秘密!而ctree函数就像是开启迷宫之门的钥匙,下面就让小果来领着你进入鸢尾花王国分类的数据迷宫吧!!!    
演示实例
在这里,小果将拿iris数据集来进行演示,鸢尾花(iris)是数据挖掘常用到的一个数据集,包含150种鸢尾花的信息,每50种取自三个鸢尾花种之一(setosa,versicolour或virginica)。每个花的特征用下面的5种属性描述萼片长度(Sepal.Length)、萼片宽度(Sepal.Width)、花瓣长度(Petal.Length)、花瓣宽度(Petal.Width)、类(Species)。iris数据集常用于分类问题和聚类分析的演示,尤其在R语言中,iris数据集是内置的示例数据之一。通过使用这个数据集,研究人员和数据科学家可以演示和测试不同机器学习算法的性能,尤其是在花卉分类的情境中。
从R中,我们可以轻易地通过命令查看iris数据集的详情:
查看iris数据集:
str(iris) 
iris数据集:'data.frame':      150 obs. of  5 variables: $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
          
想要继续了解R语言内容可以持续关注小小果哦~~或者也可以关注我们的官网也会持续更新的哦~ 
http://www.biocloudservice.com/home.html  
iris数据集中的Sepal.Length、Sepal.Width、Petal.Length和Petal.Width,都将用来预测鸢尾花的种类。    
要使用函数ctree来构建决策树,首先要安装载入‘party’包,下面就是安装载入的代码啦,小果是不是很贴心呀~:
install.packages('party')library(party)
但您要是和小果一样是用R做机器学习的小白,那您极有可能遇到以下情况:
还安装相依关系‘TH.data’, ‘libcoin’, ‘matrixStats’, ‘multcomp’, ‘mvtnorm’, ‘modeltools’, ‘strucchange’, ‘coin’, ‘zoo’, ‘sandwich’

遇到这种情况不要慌,只需要根据提示来对相应的包进行安装载入即可!
install.packages('grid')install.packages('mvtnorm')install.packages('modeltools')install.packages('stats4')install.packages('strucchange')install.packages('zoo')library(grid)library(mvtnorm)library(modeltools)library(stats4)library(strucchange)library(zoo)接下来,将将iris数据集作为构建决策树的数据集,使用ctree来构建决策树即可:data <- irisprint("This is decision tree data")print(data)myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Widthiris_ctree <- ctree(myFormula, data=data)
通过这一行简单的代码,我们就成功使用了 ctree 函数构建条件推断树(Conditional Inference Tree)啦!下面,让小小果为您对这行代码进行简单易懂的解释吧!它创建了一个变量 iris_ctree 来存储我们的条件推断树模型。ctree 函数用于构建条件推断树。参数myFormula是一个包含预测变量和解释变量之间关系的模型公式。该公式告诉模型如何使用数据中的特征来预测目标变量。参数data=data指定了用于建立模型的数据集,这里是 data。这一行简单的代码使用条件推断树算法,根据模型公式 myFormula 在数据集 data 上建立一个决策树模型。这个模型可以用于预测或解释数据中的某个变量,具体取决于在 myFormula 中选择的变量之间的关系。    
下面,小小果带大家查看一下构建好的iris_ctree:
Conditional inference tree with 4 terminal nodesResponse:  Species Inputs:  Sepal.Length, Sepal.Width, Petal.Length, Petal.Width Number of observations:  150            1) Petal.Length <= 1.9; criterion = 1, statistic = 140.264  2)*  weights = 50 1) Petal.Length > 1.9  3) Petal.Width <= 1.7; criterion = 1, statistic = 67.894    4) Petal.Length <= 4.8; criterion = 0.999, statistic = 13.865      5)*  weights = 46     4) Petal.Length > 4.8      6)*  weights = 8   3) Petal.Width > 1.7    7)*  weights = 46
可以看到,这个决策树有四个叶子节点,输入为Sepal.Length、 Sepal.Width,、Petal.Length、 Petal.Width四个特征,输出为花的种类。
但这样仍然不够清晰明了,可以使用plot()函数对决策树进行可视化,:
plot(iris_ctree)
在下图中可以清晰地看到该决策树的节点,与执行的条件:当特征Length小于等于1.9时,将归类之node2,其中有50个样本均归类至node2,在该节点中,花的种类全部被归为了‘setosa’。当Length大于1.9时这个时候。我们就走进了决策树的另外一条旁边,此时,如果特征Width大于1.7时我们的决策树将会带你走进“virginica”鸢尾花,也就是我们的决策树会将ength大于1.9、Width大于1.7的鸢尾花判断为“virginica”鸢尾花!    
嘿,猜猜!到这里,你一定已经变身为决策树的魔法师,可以轻松用ctree创建属于你自己的数据魔法树,然后还能解读它的魔法语言!是不是感觉自己成了数据科学的决策树大师呢!那么以此类推,试着解释一下该决策树的其他节点吧!
以上就是小果今天教大家用R语言构建决策树的全部内容啦!今天有学到新知识嘛~
如果各位觉得自己运行代码太麻烦,可以试试我们的云生信小工具哟,里面有成熟的代码,只要输入合适的数据就可以直接出想要的图呢,这是我们的小工具链接,欢迎大家探索使用哦~云生信-学生物信息学 (biocloudservice.com)

小果还提供思路设计、定制生信分析、文献思路复现;有需要的小伙伴欢迎直接扫码咨询小果,竭诚为您的科研助力!


定制生信分析

服务器租赁

扫码咨询小果


往期回顾

01

1024G存储的生信服务器,两人成团,1人免单!

02

单个数据库用腻了?多数据库“组合拳”带你打开免疫浸润新思路!

03

孟德尔随机化的准备工作,GWAS数据的网站下载方法

04

跟着小果学复现-手把手带你拿下IF=46.9Nature 级别的主成分分析(PCA)图!!