Codificación de características categóricas en números para el aprendizaje automático

14

Muchos algoritmos de aprendizaje automático, por ejemplo, redes neuronales, esperan lidiar con los números. Entonces, cuando tiene datos categóricos, necesita convertirlos. Por categórico quiero decir, por ejemplo:

Marcas de automóviles: Audi, BMW, Chevrolet ... ID de usuario: 1, 25, 26, 28 ...

Aunque los ID de usuario son números, son solo etiquetas y no significan nada en términos de continuidad, como edad o suma de dinero.

Entonces, el enfoque básico parece usar vectores binarios para codificar categorías:

Audi: 1, 0, 0 ... BMW: 0, 1, 0 ... Chevrolet: 0, 0, 1 ...

Está bien cuando hay pocas categorías, pero más allá de eso parece un poco ineficiente. Por ejemplo, cuando tiene 10 000 ID de usuario para codificar, son 10 000 funciones.

La pregunta es, ¿hay una mejor manera? Tal vez uno con probabilidades?

Nucular
fuente
3
¿Por qué querrías incluir una identificación de usuario en un modelo predictivo? En cuanto a otras variables categóricas con cardinalidad más grande de lo que desea cuando usa la codificación de variables ficticias como lo describe, primero las ejecuto a través de un árbol de decisión como el único predictor, para colapsar los niveles. También puede volver a bin mediante la agrupación de los niveles "raros", etc
B_Miner
Esto suena interesante, como los efectos aleatorios en un modelo estadístico donde le interesan los efectos particulares de un individuo específico. Puedo imaginar situaciones en las que sería útil, por ejemplo, si ves a los mismos individuos una y otra vez y te gustaría predecir qué hará ese individuo en particular. Si puede, comparta más sobre sus planes. Además, puede considerar el modelado multinivel, aunque se usa más tradicionalmente en configuraciones inferenciales que en el aprendizaje automático.
Anne Z.
Recuerdo haber leído sobre un concurso de ML, donde algunos investigadores inteligentes detectaron que los identificadores de usuario en los datos se habían proporcionado en el momento de la creación de la cuenta de usuario. Por lo tanto, las marcas de tiempo, que han sido ofuscadas, fueron reveladas (influyendo positivamente en la predicción de la respuesta). Además de estos casos y los mencionados por Anne (sistemas de recomendación), no incluiría el ID de usuario.
steffen
Anne: ¿un modelo de efectos aleatorios no está realmente interesado en los individuos, por lo tanto, se consideran una muestra de una población?
B_Miner
No entiendo, si el problema de aprendizaje es predecir la categoría binaria rico / no rico, ¿por qué no tendría sentido tener una característica para la marca de automóvil de un usuario en particular? Las ID de usuario podrían usarse si se conoce la red social del individuo: por ejemplo, para demostrar que los amigos del usuario X son más propensos a ser ricos. ¿Hay algo malo con esta línea de pensamiento?
Vladtn

Respuestas:

6

Siempre puede tratar sus identificadores de usuario como una bolsa de palabras: la mayoría de los clasificadores de texto pueden manejar cientos de miles de dimensiones cuando los datos son escasos (muchos ceros que no necesita almacenar explícitamente en la memoria, por ejemplo, si utiliza Filas dispersas comprimidas representación para su matriz de datos).

Sin embargo, la pregunta es: ¿tiene sentido wrt su problema específico para tratar los identificadores de usuario como características? ¿No tendría más sentido desnormalizar sus datos de relación y utilizar las características del usuario (edad, ubicación, caracteres del apodo en línea, historial de transacciones ...) en lugar de sus identificadores?

También puede realizar la agrupación de sus vectores de usuario sin procesar y utilizar los N principales ID de centros más cercanos como características activadas en lugar de los identificadores de usuario.

ogrisel
fuente
De acuerdo, aunque esta es una pregunta más general, veo que la mayoría de ustedes se concentraron en el tema de los ID de usuario, así que he aquí por qué me gustaría usarlos. Veamos una de las competencias de Kaggle, sobre Grockit: kaggle.com/c/WhatDoYouKnow . El objetivo es predecir si un usuario responderá una pregunta correctamente. En mi opinión, es un problema similar al de los sistemas de recomendación, solo recibe preguntas en lugar de películas y correcciones / incorrecciones en lugar de calificaciones, además de algunos otros datos. Las
marcas de
1
En ese caso, puede suponer que el usuario es independiente y puede crear un clasificador por usuario entrenado solo en su propio historial.
ogrisel
1

La codificación equilátera es probablemente lo que está buscando cuando intenta codificar clases en una red neuronal. Tiende a funcionar mejor que la codificación "1 de n" a la que se hace referencia en otras publicaciones. Como referencia puedo sugerir: http://www.heatonresearch.com/wiki/Equilateral

Lucio
fuente
Esto parece estar relacionado con la codificación de los valores de salida, no con la codificación categorial de los valores de entrada, que es lo que pide el OP.
Alex