1
我用gbm函數來實現梯度增強。我想分類。 之後,我使用varImp()函數在梯度增強建模中打印變量重要性。 但是......只有4個變量具有非零重要性。我的大數據中有371個變量......是不是? 這是我的代碼和結果。如何在gbm函數中打印變量重要性?
>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
PE000.00000
有371個變量。所以在結果之上,我沒有寫其他變量。這一切都沒有重要性。
TARGET是目標變量。我製作了50棵樹。 TARGET變量有兩個級別。所以我用了adaboost。
在我的代碼中是否有錯?有一些非零變量....
謝謝你的回覆。
全部取決於數據,這裏沒有任何內容顯示這可能不正確。數據中的四項功能可以正確分類目標。這就是爲什麼所有其他人都沒有重要性。 – discipulus
我同意@discipulus。該模型選擇這些變量來預測結果。您可以嘗試調整超參數以查看變量重要性是否發生變化。如果您從數據中提取這4個變量,您可以強制模型考慮其他變量。如果你的目標是二進制,也許嘗試「伯努利」或「二項式」分佈。 – syebill