Je construis un modèle et je pense que la situation géographique est susceptible d'être très bonne pour prédire ma variable cible. J'ai le code postal de chacun de mes utilisateurs. Je ne suis pas tout à fait sûr de la meilleure façon d'inclure le code postal comme fonctionnalité de prédiction dans mon modèle. Bien que le code postal soit un nombre, cela ne signifie rien si le nombre augmente ou diminue. Je pourrais binariser les 30 000 codes postaux, puis les inclure en tant que fonctionnalités ou nouvelles colonnes (par exemple, {user_1: {61822: 1, 62118: 0, 62444: 0, etc.}}. Cependant, cela semble ajouter une tonne des fonctionnalités de mon modèle.
Avez-vous des réflexions sur la meilleure façon de gérer cette situation?
machine-learning
feature-construction
many-categories
captain_ahab
la source
la source
Réponses:
L'une de mes utilisations préférées des données de code postal est de rechercher des variables démographiques basées sur le code postal qui pourraient ne pas être disponibles au niveau individuel sinon ...
Par exemple, avec http://www.city-data.com/, vous pouvez rechercher la répartition des revenus, les tranches d'âge, etc., qui pourraient vous renseigner sur vos données. Ces variables continues sont souvent beaucoup plus utiles que le simple fait de se baser sur des codes postaux binarisés, au moins pour des quantités relativement limitées de données.
De plus, les codes postaux sont hiérarchiques ... si vous prenez les deux ou trois premiers chiffres et binarisez en fonction de ceux-ci, vous disposez d'une certaine quantité d'informations régionales, ce qui vous donne plus de données que les fermetures à glissière individuelles.
Comme l'a dit Zach, la latitude et la longitude utilisées peuvent également être utiles, en particulier dans un modèle basé sur un arbre. Pour un modèle linéaire régularisé, vous pouvez utiliser des arbres quadruples, divisant les États-Unis en quatre groupes géographiques, binarisés ceux-ci, puis chacune de ces zones en quatre groupes, et en incluant celles-ci comme variables binaires supplémentaires ... donc pour n régions foliaires totales vous se retrouver avec [(4n - 1) / 3 - 1] variables totales (n pour les plus petites régions, n / 4 pour le niveau supérieur suivant, etc.). Bien sûr, c'est multicollinéaire, c'est pourquoi une régularisation est nécessaire pour ce faire.
la source
Il y a 2 bonnes options que j'ai vues:
Personnellement, j'aime beaucoup les modèles arborescents (comme les forêts aléatoires ou les GBM), donc je choisis presque toujours l'option 2. Si vous voulez vraiment avoir de la fantaisie, vous pouvez utiliser le lat / lon du centre de population pour le code postal, plutôt que le centroïde du code postal. Mais cela peut être difficile à saisir.
la source
2
proposition.J'ai traité quelque chose de similaire lors de la formation d'un classificateur qui utilise la langue maternelle comme caractéristique (comment mesurez-vous la similitude entre l'anglais et l'espagnol?) Il existe de nombreuses méthodes pour déterminer la similitude entre les données non catégorielles .
Cela dépend de vos données, mais si vous trouvez que la distance géographique d'un code postal n'est pas aussi importante que si une entrée donnée contient des codes postaux particuliers, alors des méthodes non catégoriques peuvent vous aider.
la source
Si vous calculez la distance entre les enregistrements, comme dans le clustering ou K-NN, les distances entre les codes postaux dans leur forme brute peuvent être informatives. 02138 est beaucoup plus proche géographiquement du 02139 que du 45809.
la source
Vous pouvez transformer votre code postal en une variable nominale (chaîne / facteur). Cependant, pour autant que je m'en souvienne, le code postal peut contenir d'autres informations comme le comté, la région, etc. Ce que je ferais serait de comprendre comment le code postal code les informations et de les décoder en plusieurs fonctionnalités.
Quoi qu'il en soit, laisser le code postal comme variable numérique n'est pas une bonne idée car certains modèles peuvent considérer l'ordre numérique ou les distances comme quelque chose à apprendre.
la source
Je ferais une carte choroplèthe des résidus de votre modèle au niveau du code postal.
Le résultat est appelé une carte spatiale résiduelle et il peut vous aider à choisir une nouvelle variable explicative à inclure dans votre modèle. Cette approche est appelée analyse exploratoire des données spatiales (ESDA).
Un flux de travail potentiel:
la source
Vous pouvez personnaliser les codes postaux en utilisant les techniques ci-dessus, mais permettez-moi de suggérer une alternative. Supposons que nous ayons des étiquettes de classe binaires. Et dans les données, nous avons "n" codes postaux. Maintenant, nous prenons la probabilité d'occurrence de chaque code PIN dans les données, à condition qu'une étiquette de classe (soit 1 ou zéro). Donc, disons pour un code postal "j" ------ >>>> Nous obtenons une probabilité P_j comme: non. d'occurrences de "j" / Nombre total d'occurrences de "j", lorsque le libellé de classe est 1 ou 0. De cette façon, nous pouvons le convertir en une très belle interprétation proabiliste.
la source