Sto riscontrando qualche difficoltà nel comprendere come gli alberi sono strutturati nel pacchetto di macchine con boosting gradiente gbm di R. In particolare, guardando l'output di pretty.gbm.tree
Quali caratteristiche fanno gli indici in SplitVar
punto a?Comprensione della struttura ad albero nel pacchetto R gbm
mi sono allenato un GBM su un insieme di dati, qui è il top ~ quarto di uno dei miei alberi - il risultato di una chiamata a pretty.gbm.tree
:
SplitVar SplitCodePred LeftNode RightNode MissingNode ErrorReduction Weight Prediction
0 9 6.250000e+01 1 2 21 0.6634681 5981 0.005000061
1 -1 1.895699e-12 -1 -1 -1 0.0000000 3013 0.018956988
2 31 4.462500e+02 3 4 20 1.0083722 2968 -0.009168477
3 -1 1.388483e-22 -1 -1 -1 0.0000000 1430 0.013884830
4 38 5.500000e+00 5 18 19 1.5748155 1538 -0.030602956
5 24 7.530000e+03 6 13 17 2.8329899 361 -0.078738904
6 41 2.750000e+01 7 11 12 2.2499063 334 -0.064752766
7 28 -3.155000e+02 8 9 10 1.5516610 57 -0.243675567
8 -1 -3.379312e-11 -1 -1 -1 0.0000000 45 -0.337931219
9 -1 1.922333e-10 -1 -1 -1 0.0000000 12 0.109783128
```
Sembra a me qui che gli indici sono 0 in base a come guardare LeftNode, RightNode
e MissingNode
puntare a righe diverse. Quando eseguo il test utilizzando campioni di dati e seguendo l'albero fino alla loro previsione, ottengo la risposta corretta quando considero che SplitVar
utilizza l'indicizzazione basata su .
Tuttavia, 1 dei molti alberi che ho costruito ha uno zero nella colonna SplitVar
! Ecco questo albero:
SplitVar SplitCodePred LeftNode RightNode MissingNode ErrorReduction Weight Prediction
0 4 1.462500e+02 1 2 21 0.41887 5981 0.0021651262
1 -1 4.117688e-22 -1 -1 -1 0.00000 512 0.0411768781
2 4 1.472500e+02 3 4 20 1.05222 5469 -0.0014870985
3 -1 -2.062798e-11 -1 -1 -1 0.00000 23 -0.2062797579
4 0 4.750000e+00 5 6 19 0.65424 5446 -0.0006222011
5 -1 3.564879e-23 -1 -1 -1 0.00000 4897 0.0035648788
6 28 -3.195000e+02 7 11 18 1.39452 549 -0.0379703437
Qual è il modo corretto per visualizzare l'indicizzazione utilizzato da alberi di GBM?
Sarebbe utile se si includesse un piccolo [esempio riproducibile] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) con l'input di esempio e il codice stai usando per generare i tuoi oggetti. Mostrare solo i risultati non ci permette di avere una buona idea di cosa sta succedendo. I vettori in R sono sempre a base 1. Una prima colonna senza nome è solitamente un nome di riga piuttosto che un indice. – MrFlick