1 votos

LabelEncoder con un Perceptrón Multicapa?

Así que estamos trabajando en un proyecto de aprendizaje automático en el trabajo y es la primera vez que estoy trabajando con un equipo real en esto. Obtuve muy buenos resultados con un modelo que utiliza el siguiente pipeline de SKLearn:

Datos -> LabelEncoder -> MinMaxScaler (entre 0-1) -> PCA (paso de 130 columnas a 50 componentes principales que cubren la varianza) -> MLPRegressor

Uno de mis colegas mencionó que normalmente no debería usar LabelEncoder para codificar los datos de entrenamiento, ya que está pensado para codificar la variable objetivo. He investigado un poco y ahora entiendo por qué

LabelEncoder sólo no es una buena opción, ya que aporta una ordenación de las diferentes clases.

Sin embargo, mi colega mencionó que en este caso no debería haber mucha diferencia ya que estoy usando una red neuronal (~MLPRegressor). Mi pregunta es - (si tiene razón - es él?) ¿por qué? Básicamente me elogió diciendo que esto normalmente sería una mala idea pero en este caso debería funcionar.

Intentaré pasarme a la codificación de un solo punto (actualmente sólo estoy atascado con ella porque me quedo sin memoria al hacer PCA en tantas columnas, pero esa es otra cuestión y haré una investigación al respecto por separado), pero por ahora me gustaría saber si usar este tipo de codificación puede dar lugar a resultados inexactamente buenos (estoy teniendo una puntuación r^2 de alrededor de 0,9 y mi jefe literalmente no se cree que haya conseguido un resultado tan bueno jaja).

1voto

No, independientemente del modelo que utilices, no es una buena idea. No es el caso que MLP maneja o entiende lo La imposición de un ordenamiento puede crear problemas inesperados. El rendimiento de su modelo es probablemente bueno debido a otro subconjunto de características.

1voto

toddsundsted Puntos 2482

Bueno, puedes usar un codificador de etiquetas en los datos de entrenamiento, pero yo normalmente no lo hago. Sin embargo, si hay más de dos categorías y las categorías no representan una escala ordinal como los billetes (los billetes pueden ser de primera clase, de segunda clase y de tercera clase), entonces probablemente deberías codificar con una sola etiqueta, tal y como sugiere el artículo que has enlazado. Si los valores representan realmente datos ordinales, se puede utilizar un OrdinalEncoder .

En términos del MLPRegressor, si se ejecuta un codificador de etiquetas en una columna categórica de múltiples valores que ha sido codificada con etiquetas, y las categorías no representan datos ordinales, la NN no tiene idea de saber que los valores representados no son significativos en términos de magnitud. Los buenos resultados que se obtienen son a pesar de el uso del codificador de etiquetas.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X