Tengo una red neuronal configurada para predecir algo donde la variable de salida es ordinal. Describiré a continuación usando tres salidas posibles A <B <C.
Es bastante obvio cómo usar una red neuronal para generar datos categóricos: la salida es solo un softmax de la última capa (generalmente completamente conectada), una por categoría, y la categoría predicha es la que tiene el mayor valor de salida (esto es el valor predeterminado en muchos modelos populares). He estado usando la misma configuración para valores ordinales. Sin embargo, en este caso, las salidas a menudo no tienen sentido, por ejemplo, las salidas de red para A y C son altas pero B es baja: esto no es plausible para los valores ordinales.
Tengo una idea para esto, que es calcular la pérdida en base a la comparación de las salidas con 1 0 0 para A, 1 1 0 para B y 1 1 1 para C. Los umbrales exactos se pueden ajustar más tarde usando otro clasificador (p. Ej. Bayesiano ) pero esto parece capturar la idea esencial de un ordenamiento de entradas, sin prescribir ninguna escala de intervalo específica.
¿Cuál es la forma estándar de resolver este problema? ¿Existe alguna investigación o referencia que describa los pros y los contras de los diferentes enfoques?
fuente
Respuestas:
Pero algunas personas han logrado inventar una codificación inteligente para sus clases ordinales (vea esta respuesta de stackoverflow ). Es una especie de codificación única,
la clase 1 se representa como [0 0 0 0 ...]
la clase 2 se representa como [1 0 0 0 ...]
la clase 3 se representa como [1 1 0 0 ...]
np.sum
Esta estrategia se asemeja al conjunto de Frank y Hall , y creo que esta es la primera publicación de tal.
fuente