我使用gbm
函数来实现渐变增强。我想进行分类。
之后,我使用varImp()
函数在渐变增强建模中打印变量重要性。
但是......只有4个变量具有非零重要性。我的大数据中有371个变量......是不是?
这是我的代码和结果。
>asd<-read.csv("bigdatafile.csv",header=TRUE)
>asd1<-gbm(TARGET~.,n.trees=50,distribution="adaboost", verbose=TRUE,interaction.depth = 1,data=asd)
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.5840 nan 0.0010 0.0011
2 0.5829 nan 0.0010 0.0011
3 0.5817 nan 0.0010 0.0011
4 0.5806 nan 0.0010 0.0011
5 0.5795 nan 0.0010 0.0011
6 0.5783 nan 0.0010 0.0011
7 0.5772 nan 0.0010 0.0011
8 0.5761 nan 0.0010 0.0011
9 0.5750 nan 0.0010 0.0011
10 0.5738 nan 0.0010 0.0011
20 0.5629 nan 0.0010 0.0011
40 0.5421 nan 0.0010 0.0010
50 0.5321 nan 0.0010 0.0010
>varImp(asd1,numTrees = 50)
Overall
CA0000801 0.00000
AS0000138 0.00000
AS0000140 0.00000
A1 0.00000
PROFILE_CODE 0.00000
A2 0.00000
CB_thinfile2 0.00000
SP_thinfile2 0.00000
thinfile1 0.00000
EW0001901 0.00000
EW0020901 0.00000
EH0001801 0.00000
BS_Seg1_Score 0.00000
BS_Seg2_Score 0.00000
LA0000106 0.00000
EW0001903 0.00000
EW0002801 0.00000
EW0002902 0.00000
EW0002903 0.00000
EW0002904 0.00000
EW0002906 0.00000
LA0300104_SP 56.19052
ASMGRD2 2486.12715
MIX_GRD 2211.03780
P71010401_1 0.00000
PS0000265 0.00000
P11021100 0.00000
PE0000123 0.00000
有371个变量。所以在结果之上,我没有写其他变量。这一切都没有重要性。
TARGET是目标变量。我生产了50棵树。 TARGET变量有两个级别。所以我用了adaboost。
我的代码有错吗???有一些非零变量......
感谢您的回复。
答案 0 :(得分:0)
在你的代码中,n.tree非常低,收缩率非常高。 只需调整这两个因素。
如果您在n.trees&amp;中输入1,000。 0.1收缩,你可以得到不同的价值。 如果你想知道每个变量在gbm中的相对影响,请使用summary.gbm()而不是varImp()。当然,varImp()是很好的功能。但我推荐summary.gbm()。
祝你好运。答案 1 :(得分:0)
您不能使用重要性()或varImp(),这仅适用于随机森林。
但是,您可以使用gbm软件包中的summary.gbm。
例如: summary.gbm(boost_model)
输出将如下所示: [1]:https://i.stack.imgur.com/P7h3B.png