Estoy construyendo un modelo y creo que es probable que la ubicación geográfica sea muy buena para predecir mi variable objetivo. Tengo el código postal de cada uno de mis usuarios. Sin embargo, no estoy completamente seguro de la mejor manera de incluir el código postal como una función de predicción en mi modelo. Aunque el código postal es un número, no significa nada si el número sube o baja. Podría binarizar todos los 30,000 códigos postales y luego incluirlos como características o nuevas columnas (por ejemplo, {user_1: {61822: 1, 62118: 0, 62444: 0, etc.}}. Sin embargo, esto parece que agregaría una tonelada de características para mi modelo.
¿Alguna idea sobre la mejor manera de manejar esta situación?
machine-learning
feature-construction
many-categories
captain_ahab
fuente
fuente
Respuestas:
Uno de mis usos favoritos de los datos del código postal es buscar variables demográficas basadas en el código postal que de otro modo podrían no estar disponibles a nivel individual ...
Por ejemplo, con http://www.city-data.com/ puede buscar distribución de ingresos, rangos de edad, etc., lo que podría decirle algo sobre sus datos. Estas variables continuas a menudo son mucho más útiles que simplemente basarse en códigos postales binarios, al menos para cantidades de datos relativamente finitas.
Además, los códigos postales son jerárquicos ... si toma los primeros dos o tres dígitos, y binariza en función de ellos, tiene cierta cantidad de información regional, que le proporciona más datos que las cremalleras individuales.
Como dijo Zach, la latitud y la longitud utilizadas también pueden ser útiles, especialmente en un modelo basado en árboles. Para un modelo lineal regularizado, puede usar cuadrúteros, dividiendo los Estados Unidos en cuatro grupos geográficos, binarizados, luego cada una de esas áreas en cuatro grupos e incluyéndolos como variables binarias adicionales ... así que para n regiones de hojas totales terminar con [(4n - 1) / 3 - 1] variables totales (n para las regiones más pequeñas, n / 4 para el siguiente nivel, etc.). Por supuesto, esto es multicolineal, por lo que se necesita regularización para hacer esto.
fuente
Hay 2 buenas opciones que he visto:
Personalmente, realmente me gustan los modelos basados en árboles (como el bosque aleatorio o GBM), por lo que casi siempre elijo la opción 2. Si quieres ponerte realmente elegante, puedes usar el lat / lon del centro de población para el código postal, en lugar del centroide de código postal. Pero eso puede ser difícil de conseguir.
fuente
2
propuesta.Al entrenar a un clasificador que usaba el idioma nativo como una característica (¿cómo se mide la similitud entre el inglés y el español?), Traté con algo similar. Existen muchos métodos para determinar la similitud entre los datos no categóricos .
Depende de sus datos, pero si encuentra que la distancia geográfica de un código postal no es tan importante como si una entrada dada contiene códigos postales particulares, entonces los métodos no categóricos podrían ayudar.
fuente
Si está calculando la distancia entre registros, como en clustering o K-NN, las distancias entre códigos postales en su forma sin formato pueden ser informativas. 02138 está mucho más cerca de 02139, geográficamente, que de 45809.
fuente
Puede transformar su código postal en una variable nominal (cadena / factor). Sin embargo, por lo que recuerdo, el código postal puede contener otra información como el condado, la región, etc. Lo que haría es entender cómo el código postal codifica la información y decodificarla en múltiples funciones.
De todos modos, dejar el código postal como una variable numérica no es una buena idea, ya que algunos modelos pueden considerar el orden numérico o las distancias como algo para aprender.
fuente
Haría un mapa coroplético de los residuos de su modelo en el nivel del código postal.
El resultado se denomina mapa residual espacial y puede ayudarlo a elegir una nueva variable explicativa para incluir en su modelo. Este enfoque se llama análisis exploratorio de datos espaciales (ESDA).
Un flujo de trabajo potencial:
fuente
Puede crear los códigos postales utilizando las técnicas anteriores, pero permítame sugerirle una alternativa. Supongamos que tenemos etiquetas de clase binarias. Y en los datos tenemos "n" códigos postales. Ahora tomamos la probabilidad de ocurrencia de cada código PIN en los datos, siempre que se proporcione alguna etiqueta de clase (ya sea 1 o cero). Entonces, digamos para un código postal "j" ------ >>>> Obtenemos una probabilidad P_j como: no. de ocurrencias de "j" / No total de ocurrencias de "j", cuando la etiqueta de clase es 1 o 0. De esta manera podemos convertirlo en una interpretación proabilística muy agradable.
fuente