Spiegherò il mio problema con un esempio. Supponiamo di voler prevedere il reddito di un individuo in base ad alcuni attributi: {Età, Genere, Paese, Regione, Città}. Hai un set di dati di allenamento come questo
train <- data.frame(CountryID=c(1,1,1,1, 2,2,2,2, 3,3,3,3),
RegionID=c(1,1,1,2, 3,3,4,4, 5,5,5,5),
CityID=c(1,1,2,3, 4,5,6,6, 7,7,7,8),
Age=c(23,48,62,63, 25,41,45,19, 37,41,31,50),
Gender=factor(c("M","F","M","F", "M","F","M","F", "F","F","F","M")),
Income=c(31,42,71,65, 50,51,101,38, 47,50,55,23))
train
CountryID RegionID CityID Age Gender Income
1 1 1 1 23 M 31
2 1 1 1 48 F 42
3 1 1 2 62 M 71
4 1 2 3 63 F 65
5 2 3 4 25 M 50
6 2 3 5 41 F 51
7 2 4 6 45 M 101
8 2 4 6 19 F 38
9 3 5 7 37 F 47
10 3 5 7 41 F 50
11 3 5 7 31 F 55
12 3 5 8 50 M 23
Supponiamo ora di voler prevedere le entrate di una nuova persona che vive in Città 7. Il mio set di allenamento ha 3 campioni enormi con persone in Città 7 (supponiamo che questo sia molto) in modo da poter probabilmente usare il reddito medio in Città 7 per prevedere le entrate di questo nuovo individuo.
Ora supponiamo che io voglia prevedere il reddito di una nuova persona che vive in Città 2. Il mio set di allenamento ha solo 1 campione con Città 2, quindi il reddito medio in Città 2 probabilmente non è un predittore affidabile. Ma probabilmente posso usare il reddito medio nella Regione 1.
Estrapolando un po 'questa idea, posso trasformare il mio set di dati di allenamento come
Age Gender CountrySamples CountryIncome RegionSamples RegionIncome CitySamples CityIncome
1: 23 M 4 52.25 3 48.00 2 36.5000
2: 48 F 4 52.25 3 48.00 2 36.5000
3: 62 M 4 52.25 3 48.00 1 71.0000
4: 63 F 4 52.25 1 65.00 1 65.0000
5: 25 M 4 60.00 2 50.50 1 50.0000
6: 41 F 4 60.00 2 50.50 1 51.0000
7: 45 M 4 60.00 2 69.50 2 69.5000
8: 19 F 4 60.00 2 69.50 2 69.5000
9: 37 F 4 43.75 4 43.75 3 50.6667
10: 41 F 4 43.75 4 43.75 3 50.6667
11: 31 F 4 43.75 4 43.75 3 50.6667
12: 50 M 4 43.75 4 43.75 1 23.0000
Quindi, l'obiettivo è quello di combinare in qualche modo CityIncome, RegionIncome e CountryIncome utilizzando il numero di campioni di allenamento per ciascuno di essi per dare un peso / credibilità a ciascun valore. (Idealmente, includendo comunque le informazioni di Age and Gender.)
Quali sono i suggerimenti per risolvere questo tipo di problema? Preferisco usare modelli basati su alberi come la foresta casuale o il potenziamento del gradiente, ma ho difficoltà a farli funzionare bene.
AGGIORNARE
Per chiunque sia disposto a prendersi una mancia per questo problema, ho generato dati di esempio per testare la soluzione proposta qui .