Cómo combinar características de entrada categóricas y continuas para el entrenamiento de redes neuronales

16

Supongamos que tenemos dos tipos de características de entrada, categóricas y continuas. Los datos categóricos pueden representarse como un código de acceso directo A, mientras que los datos continuos son solo un vector B en el espacio de dimensión N. Parece que simplemente usar concat (A, B) no es una buena opción porque A, B son tipos de datos totalmente diferentes. Por ejemplo, a diferencia de B, no hay un orden numérico en A. Por lo tanto, mi pregunta es cómo combinar estos dos tipos de datos o hay algún método convencional para manejarlos.

De hecho, propongo una estructura ingenua como se presenta en la imagen

ingrese la descripción de la imagen aquí

Como puede ver, las primeras capas se usan para cambiar (o asignar) datos A a una salida media en espacio continuo y luego se concatenan con datos B que forman una nueva característica de entrada en espacio continuo para capas posteriores. Me pregunto si es razonable o es solo un juego de "prueba y error". Gracias.

JunjieChen
fuente

Respuestas:

5

Hay tres enfoques principales para resolver esto:

  1. Construir dos modelos por separado y luego entrenar un algoritmo de conjunto que recibe la salida de los dos modelos como entrada
  2. Concatenar todos los datos en un solo vector / tensor como un paso de preprocesamiento y luego entrenar una simple entrada NN
  3. La arquitectura NN de entrada múltiple que propuso

El enfoque de conjunto es la opción más directa y producirá resultados decentes, sin embargo, no funcionará tan bien como la opción que propuso porque la red de conjunto solo recibe las probabilidades de clase de las dos redes como una entrada y lo hará en comparación con su enfoque se pierda las relaciones más complejas entre los tipos de datos.

En teoría, el segundo enfoque no es tan diferente del enfoque propuesto, con la diferencia de que supone que la red descubrirá por sí misma que la entrada consta de dos tipos de datos (ya que ambos están en el mismo vector / tensor ) La red tardará mucho tiempo en aprender eso y es posible que te quedes atrapado en un mínimo local antes de que eso suceda.

Según mi experiencia personal, la red que propuso es la mejor opción, y es probable que tenga el menor tiempo de tren y una vez que obtenga la arquitectura correcta, le resultará muy fácil entrenar y mantener la red en producción, así como solo tendrá que volver a entrenar un solo modelo.

Tadej Magajna
fuente
0

He estado usando la ingenua estructura propuesta por ustedes por bastante tiempo. En un problema bien enmarcado y con suficientes datos, este tipo de arquitectura funciona bastante bien. Sin embargo, aquí hay algunas cosas que aprendí:

  1. Los algoritmos basados ​​en árbol (RF, XGB) generalmente funcionan bien con clases mixtas a menos que tenga algunos requisitos de salida específicos o una función de pérdida que sea más fácil de implementar a través de redes neuronales.
  2. Si se decide utilizar la red neuronal, esta arquitectura funciona mejor en comparación con otro tipo de formas de codificación de cadenas.
  3. Este enfoque también funciona con datos de series temporales de entrada mixtas, mucho mejor que cualquier enfoque clásico de series temporales.

El diseño clave sería la capa de concatenación y dónde le gustaría colocarla en la arquitectura. También el uso de capas de incrustación le brinda un beneficio adicional de usar esas incrustaciones aprendidas en otras tareas / visualizaciones.

Este tipo de arquitectura se ha utilizado en competiciones de Kaggle [1] y también es enseñado en el curso Fast.ai por el Prof. Jeremy Howard [2].

  1. https://yashuseth.blog/2018/07/22/pytorch-neural-network-for-tabular-data-with-categorical-embeddings/
  2. https://www.fast.ai/2019/01/24/course-v3/
Soumyajit
fuente