Je vais expliquer mon problème avec un exemple. Supposons que vous souhaitiez prédire le revenu d'un individu en fonction de certains attributs: {âge, sexe, pays, région, ville}. Vous avez un ensemble de données de formation comme ça
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
Supposons maintenant que je veux prédire le revenu d'une nouvelle personne qui vit dans la ville 7. Mon ensemble de formation contient 3 échantillons avec des gens de la ville 7 (supposons que c'est beaucoup), donc je peux probablement utiliser le revenu moyen de la ville 7 pour prédire le revenu de cette nouvelle personne.
Supposons maintenant que je veuille prédire le revenu d'une nouvelle personne qui habite dans la ville 2. Mon ensemble de formation n'a qu'un seul échantillon avec la ville 2, donc le revenu moyen dans la ville 2 n'est probablement pas un prédicteur fiable. Mais je peux probablement utiliser le revenu moyen de la région 1.
En extrapolant un peu cette idée, je peux transformer mon jeu de données d'entraînement en
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
Ainsi, l'objectif est de combiner en quelque sorte le CityIncome moyen, le RegionIncome et le CountryIncome tout en utilisant le nombre d'échantillons de formation pour chacun pour donner un poids / crédibilité à chaque valeur. (Idéalement, toujours avec des informations sur l'âge et le sexe.)
Quels sont les conseils pour résoudre ce type de problème? Je préfère utiliser des modèles basés sur des arbres comme la forêt aléatoire ou le renforcement du gradient, mais j'ai du mal à les faire fonctionner correctement.
MISE À JOUR
Pour tous ceux qui souhaitent essayer ce problème, j'ai généré des exemples de données pour tester la solution proposée ici .