机器学习第18篇-Boruta特征变量筛选(2)
前⾯()评估显⽰Boruta在⽣物数据中具有较⾼的特征变量选择准确度,下⾯就具体看下如何应⽤Boruta进⾏特征变量选择。
Boruta算法概述
Boruta得名于斯拉夫神话中的树神,可以识别所有对分类或回归有显著贡献的变量。其核⼼思想是统计⽐较数据中真实存在的特征变量与随
机加⼊的变量(也称为影⼦变量)的重要性。
1.初次建模时,把原始变量拷贝⼀份作为影⼦变量。
2.原始变量的值随机化后作为对应影⼦变量的值(随机化就是打乱原始变量值的顺序)。
3.使⽤随机森林建模并计算每个变量的重要性得分。
4.对于每⼀个真实特征变量,统计检验其与所有影⼦变量的重要性最⼤值的差别。
重要性显著⾼于影⼦变量的真实特征变量定义为重要。
重要性显著低于影⼦变量的真实特征变量定义为不重要。
5.所有不重要的变量和影⼦变量移除。
基于新变量构成的数据集再次重复刚才的建模和选择过程,直到所有变量都被分类为重要或不重要,或达到预先设置的迭代次数。
其优点是:
1.同时适⽤于分类问题和回归问题
2.考虑多个变量的关系信息
3.改善了常⽤于变量选择的随机森林变量重要性计算⽅式
4.会输出所有与模型性能相关的变量⽽不是只返回⼀个最⼩变量集合
5.可以处理变量的互作
6.可以规避随机森林⾃⾝计算变量重要性的随机波动性问题和不能计算显著性的问题
Boruta算法实战
#es("Boruta")library(Boruta)
(1)
boruta<-Boruta(x=train_data,y=train_data_group,pValue=0.01,mcAdj=T,
maxRuns=300)
boruta
##Borutaperformed299iterationsin1.452285mins.
##54attributesconfirmedimportant:AC002073_cds1_at,D13633_at,
##D31887_at,D55716_at,D78134_atand49more;
##6980attributesconfirmedunimportant:A28102,AB000114_at,
##AB000115_at,AB000220_at,AB000381_s_atand6975more;
##36tentativeattributesleft:D31886_at,D43950_at,D79997_at,
##2375_at,417_s_atand31more;
速度还是可以的(尤其是跟后⾯要介绍的RFE的速度⽐起来)
boruta$timeTaken
##Timedifferenceof1.452285mins
查看下变量重要性鉴定结果(实际上⾯的输出中也已经有体现了),54个重要的变量,36个可能重要的变量(tentativevariable,重要性得分
与最好的影⼦变量得分⽆统计差异),6,980个不重要的变量。
table(boruta$finalDecision)
TentativeConfirmedRejected
##36546980
boruta$finalDecision[boruta$finalDecision=="Confirmed"]
##AC002073_cds1_atD13633_atD31887_atD55716_at
##ConfirmedConfirmedConfirmedConfirmed
##D78134_atD82348_atD87119_3018_at
##ConfirmedConfirmedConfirmedConfirmed
##4344_4528_atJ02645_atJ03909_at
##ConfirmedConfirmedConfirmedConfirmed
##K02268_atL17131_rna1_atL27071_atL42324_at
##ConfirmedConfirmedConfirmedConfirmed
##M10901_atM57710_atM60830_atM63138_at
##ConfirmedConfirmedConfirmedConfirmed
##M63835_atU14518_atU23143_atU28386_at
##ConfirmedConfirmedConfirmedConfirmed
##U37352_atU38896_atU56102_atU59309_at
##ConfirmedConfirmedConfirmedConfirmed
##U63743_atU68030_atX01060_atX02152_at
##ConfirmedConfirmedConfirmedConfirmed
##X14850_atX16983_atX17620_atX56494_at
##ConfirmedConfirmedConfirmedConfirmed
##X62078_atX67155_atX67951_atX69433_at
##ConfirmedConfirmedConfirmedConfirmed
##Z11793_atZ21966_atZ35227_atZ96810_at
##ConfirmedConfirmedConfirmedConfirmed
##U16307_4198_atV00594_s_atX03689_s_at
##ConfirmedConfirmedConfirmedConfirmed
##M14328_s_atX91911_s_atX12530_s_atX81836_s_at
##ConfirmedConfirmedConfirmedConfirmed
##2023_atM94880_f_at
##ConfirmedConfirmed
##Levels:TentativeConfirmedRejected
绘制Boruta算法运⾏过程中各个变量的重要性得分的变化(绿⾊是重要的变量,红⾊是不重要的变量,蓝⾊是影⼦变量,黄⾊是Tentative
变量)。
这个图也可以⽤来查看是否有必要增加迭代的次数以便再次确认Tentative变量中是否有⼀部分为有意义的特征变量。从下图来看,黄⾊变量
部分随着迭代还是有部分可能⾼于最⾼值,可以继续尝试增加迭代次数。
Boruta::plotImpHistory(boruta)
绘制鉴定出的变量的重要性。变量少了可以⽤默认绘图,变量多时绘制的图看不清,需要⾃⼰整理数据绘图。
#?#plot(boruta)
定义⼀个函数提取每个变量对应的重要性值。
library(dplyr)
<-function(x){
imp<-reshape2::melt(x$ImpHistory,=T)[,-1]
colnames(imp)<-c("Variable","Importance")
imp<-imp[(imp$Importance),]
variableGrp<-(Variable=names(x$finalDecision),
finalDecision=x$finalDecision)
showGrp<-(Variable=c("shadowMax","shadowMean","shadowMin"),
finalDecision=c("shadowMax","shadowMean","shadowMin"))
variableGrp<-rbind(variableGrp,showGrp)
<-merge(imp,variableGrp,all.x=T)
sortedVariable<-%>%group_by(Variable)%>%
summari(median=median(Importance))%>%arrange(median)
sortedVariable<-(sortedVariable$Variable)
$Variable<-factor($Variable,levels=sortedVariable)
invisible()
}
<-(boruta)
head()
##VariableImportancefinalDecision
##1A281020Rejected
##2A281020Rejected
##3A281020Rejected
##4A281020Rejected
##5A281020Rejected
##6A281020Rejected
只绘制Confirmed变量。
library(YSX)
sp_boxplot(,melted=T,xvariable="Variable",yvariable="Importance",
legend_variable="finalDecision",legend_variable_order=c("shadowMax","shadowMean","shadowMin","Confirmed"),
xtics_angle=90)
提取重要的变量(可能重要的变量可提取可不提取)
ars<-(Item=getSelectedAttributes(boruta,withTentative=F),Type="Boruta")
也可以使⽤TentativeRoughFix函数进⼀步计算。这⼀步的计算⽐较粗糙,根据重要性的值⾼低判断Tentative类型的变量是否要
为Confirmed或Rejected。
<-TentativeRoughFix(boruta)
机器学习系列教程
从随机森林开始,⼀步步理解决策树、随机森林、ROC/AUC、数据集、交叉验证的概念和实践。
⽂字能说清的⽤⽂字、图⽚能展⽰的⽤、描述不清的⽤公式、公式还不清楚的写个简单代码,⼀步步理清各个环节和概念。
再到成熟代码应⽤、模型调参、模型⽐较、模型评估,学习整个机器学习需要⽤到的知识和技能。
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
本文发布于:2022-12-28 12:07:56,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/46535.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |