Sto usando il pacchetto rpart in questo modo:Utilizzo di rpart: come ottenere una maggiore variabilità delle previsioni?
model <- rpart(totalUSD ~ ., data = df.train)
noto che oltre 80k righe, rpart è generalizzare è previsioni in soli tre gruppi distinti come mostrato nell'immagine qui sotto:
Vedo diversi configuration options for the rpart method; tuttavia, non li capisco abbastanza.
C'è un modo per configurare rpart in modo che crei più previsioni (anziché solo tre); non gruppi così rigidi, ma più livelli intermedi?
Il motivo per cui lo chiedo è perché il mio estimatore di costi sembra piuttosto semplice in quanto restituisce solo uno dei tre numeri!
Ecco un esempio dei miei dati:
structure(list(totalUSD = c(9726.6, 730.14, 750, 200, 60.49,
310.81, 151.23, 145.5, 3588.13, 400), durationDays = c(730, 724,
730, 189, 364, 364, 364, 176, 730, 1095), familySize = c(4, 1,
2, 1, 3, 2, 1, 1, 4, 4), serviceName = c("Service5",
"Service6", "Service9", "Service4",
"Service1", "Service2", "Service1", "Service3",
"Service7", "Service8"), homeLocationGeoLat = c(37.09024,
10.691803, 37.09024, 35.86166, 55.378051, 35.86166, 51.165691,
-30.559482, -30.559482, 41.87194), homeLocationGeoLng = c(-95.712891,
-61.222503, -95.712891, 104.195397, -3.435973, 104.195397, 10.451526,
22.937506, 22.937506, 12.56738), hostLocationGeoLat = c(55.378051,
37.09024, 55.378051, 55.378051, 37.09024, 1.352083, 55.378051,
37.09024, 23.424076, 1.352083), hostLocationGeoLng = c(-3.435973,
-95.712891, -3.435973, -3.435973, -95.712891, 103.819836, -3.435973,
-95.712891, 53.847818, 103.819836), geoDistance = c(6838055.10555534,
4532586.82063172, 6838055.10555534, 7788275.0443749, 6838055.10555534,
3841784.48282769, 1034141.95021832, 14414898.8246973, 6856033.00945242,
10022083.1525388)), .Names = c("totalUSD", "durationDays", "familySize",
"serviceName", "homeLocationGeoLat", "homeLocationGeoLng", "hostLocationGeoLat",
"hostLocationGeoLng", "geoDistance"), row.names = c(25601L, 6083L,
24220L, 20235L, 8372L, 456L, 8733L, 27257L, 15928L, 24099L), class = "data.frame")
puoi fornirci un campione di dati o qualche esempio riproducibile? – roman
Sì, l'ho aggiunto alla mia domanda. Grazie. – user1477388
Ok, ho giocato un po 'con i tuoi dati. È difficile ricreare il tuo problema in quanto l'albero che stai costruendo utilizza molti più dati. Sto indovinando che i parametri sono impostati in modo tale da avere due suddivisioni nel tuo albero (due variabili esplicative di importanza), risultanti in 3 nodi terminali. L'albero predice la media nelle regioni su ciascun nodo terminale. Se vuoi più previsioni su scala fine, prova qualcosa come foreste casuali o potenziamento piuttosto che montare un singolo albero. Quindi è possibile utilizzare la convalida incrociata per ottimizzare il numero di alberi mediati (foreste casuali) o il parametro di riduzione (aumento). – roman