グラディエントブーストを実装するために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変数には2つのレベルがあります。私は冗談を使いました。
私のコードに間違いがありますか?ゼロ以外の変数が少しあります....
ありがとうございます。
すべてはデータによって異なり、ここでは正しくない可能性があります。データの4つの機能は、ターゲットを正しく分類できます。だからこそ、他のすべての人が重要性を失うのです。 – discipulus
私は@discipulusに同意します。モデルは、結果を予測するためにそれらの変数を選択した。変数の重要度が変更されているかどうかを確認するために、ハイパーパラメータを試して調整することができます。これら4つの変数をデータから外すと、モデルに他の変数を考慮させることができます。ターゲットがバイナリの場合は、 "Bernoulli"または "Binomial"ディストリビューションを試してみてください。 – syebill