Estou construindo um modelo e acho que a localização geográfica provavelmente será muito boa em prever minha variável de destino. Eu tenho o CEP de cada um dos meus usuários. No entanto, não tenho muita certeza da melhor maneira de incluir o CEP como um recurso preditivo no meu modelo. Embora o CEP seja um número, isso não significa nada se o número aumentar ou diminuir. Eu poderia binarizar todos os 30.000 códigos postais e incluí-los como recursos ou novas colunas (por exemplo, {user_1: {61822: 1, 62118: 0, 62444: 0, etc.}}. No entanto, isso parece adicionar uma tonelada de recursos para o meu modelo.
Alguma idéia sobre a melhor maneira de lidar com essa situação?
machine-learning
feature-construction
many-categories
captain_ahab
fonte
fonte
Respostas:
Um dos meus usos favoritos dos dados do CEP é procurar variáveis demográficas com base no CEP que talvez não estejam disponíveis no nível individual, caso contrário ...
Por exemplo, com http://www.city-data.com/, você pode procurar distribuição de renda, faixas etárias etc., o que pode lhe dizer algo sobre seus dados. Essas variáveis contínuas costumam ser muito mais úteis do que apenas basear-se em códigos postais binários, pelo menos para quantidades relativamente finitas de dados.
Além disso, os códigos postais são hierárquicos ... se você pegar os dois ou três primeiros dígitos e se binarizar com base nesses dados, você tem alguma quantidade de informações regionais, o que fornece mais dados do que os zips individuais.
Como Zach disse, latitude e longitude usadas também podem ser úteis, especialmente em um modelo baseado em árvore. Para um modelo linear regularizado, você pode usar quadríceps, dividindo os Estados Unidos em quatro grupos geográficos, binarizados e, em seguida, cada uma dessas áreas em quatro grupos e incluindo aqueles como variáveis binárias adicionais ... portanto, para n regiões totais de folhas você termine com [(4n - 1) / 3 - 1] variáveis totais (n para as regiões menores, n / 4 para o próximo nível acima, etc). É claro que isso é multicolinar, e é por isso que a regularização é necessária para fazer isso.
fonte
Há duas boas opções que eu já vi:
Pessoalmente, gosto muito de modelos baseados em árvores (como floresta aleatória ou GBMs), então quase sempre escolho a opção 2. Se você quiser ser realmente chique, pode usar o lat / lon do centro da população para o CEP, em vez do centróide do CEP. Mas isso pode ser difícil de entender.
fonte
2
proposta.Eu lidei com algo semelhante ao treinar um classificador que usava o idioma nativo como um recurso (como você mede a similaridade entre inglês e espanhol?) Existem muitos métodos disponíveis para determinar a similaridade entre dados não categóricos .
Depende dos seus dados, mas se você achar que a distância geográfica de um CEP não é tão importante quanto se uma determinada entrada contém códigos postais específicos, métodos não categóricos podem ajudar.
fonte
Se você estiver calculando a distância entre registros, como em cluster ou K-NN, as distâncias entre códigos postais em sua forma bruta podem ser informativas. 02138 está muito mais próximo de 02139, geograficamente, do que de 45809.
fonte
Você pode transformar seu código postal em uma variável nominal (string / fator). No entanto, tanto quanto me lembro, o código postal pode conter outras informações, como município, região etc. O que eu faria é entender como o código postal codifica as informações e as decodifica em vários recursos.
De qualquer forma, deixar o CEP como uma variável numérica não é uma boa ideia, pois alguns modelos podem considerar a ordenação numérica ou as distâncias como algo a aprender.
fonte
Eu faria um mapa detalhado dos resíduos do seu modelo no nível do código postal.
O resultado é chamado de mapa residual espacial e pode ajudá-lo a escolher uma nova variável explicativa para incluir em seu modelo. Essa abordagem é chamada de análise exploratória de dados espaciais (ESDA).
Um fluxo de trabalho potencial:
fonte
Você pode caracterizar os códigos postais usando as técnicas acima, mas deixe-me sugerir uma alternativa. Suponha que tenhamos rótulos de classe binária. E nos dados, temos "n" códigos postais. Agora tomamos a probabilidade de ocorrência de cada código PIN nos dados, desde que algum rótulo de classe (1 ou zero). Então, digamos para um CEP "j" ------ >>>> Temos uma probabilidade P_j como: não. de ocorrências de "j" / número total de ocorrências de "j", quando o rótulo da classe é 1 ou 0. Dessa forma, podemos convertê-lo em uma interpretação proabilística muito boa.
fonte