es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Deberían las categorías numéricas nominales ser codificadas como un solo conjunto de variables binarias (OneHotEncoded) o dejarse tal como están (similar a la codificación ordinal)?

He encontrado una publicación similar a mi pregunta: https://stackoverflow.com/questions/55688039/xgboost-country-feature-should-be-labeld-or-one-hot-encoded

Tengo 2 columnas (color, día de la semana) que están codificadas como 1,2,3,…6,7.

En teoría, si no las codifico en OHE, causaría que el algoritmo piense que hay un orden numérico, por ejemplo, 1>2>3. Para evitar esto, debería codificarlas en OHE.

Entonces creo 2 tuberías, una con OHE y otra sin ella, ejecutando varios algoritmos:

for k,v in model_dict.items():
    pipeline_dict[k] = Pipeline([('preprocesador', ct['ohe']),('modelo', v)])

for k,v in model_dict.items():
    pipeline_dict_no_ohe[k] = Pipeline([('modelo', v)])

Los resultados para KNN, Gaussian Naive Bayees, XGB, RandomForest, DecisionTree son:

Con OHE: knn = 0.73622, gnb = 0.65814, xgb = 0.78996, rf = 0.79015, dt = 0.79041
Sin OHE: knn = 0.77133, gnb = 0.70049, xgb = 0.94987, rf = 0.94138, dt = 0.83169

Muy sorprendente para mí. Según los resultados, elegiría sin OHE. Pero esto suena muy incorrecto ya que no parece ser lo correcto.

Preguntas:

  1. ¿Cuál es la razón de obtener mejores resultados sin OHE?
  2. ¿Realmente el algoritmo piensa que hay un orden en el color y en el día de la semana?
  3. ¿Podría causar problemas en el futuro si el modelo cree que hay un orden en los datos?

La razón por la que estoy preocupado es que recientemente, en una prueba, he corrompido mi DataFrame ¡pero dio resultados fantásticos! Por eso pregunté para tener una mejor confianza en el modelo que estoy creando.

¡Muchas gracias!

Tags:  , ,

Answer

  1. Avatar for davy.ai
    1. Es posible que sin codificación one-hot (OHE), el algoritmo sea capaz de capturar patrones o relaciones subyacentes entre la codificación numérica del color y el día de la semana que no son evidentes cuando estas características están codificadas de forma one-hot. También es posible que la codificación OHE esté introduciendo algo de ruido en los datos, lo que lleva a un peor rendimiento de los algoritmos.
    2. Sí, si las características no están codificadas de forma one-hot, el algoritmo puede asumir que hay un ordenamiento en los valores. Por ejemplo, si el día de la semana se codifica como 1, 2, 3,… 6, 7 sin OHE, el algoritmo puede asumir que el domingo está más cerca del lunes que del sábado, lo cual puede no ser cierto.

    3. Podría potencialmente generar problemas en el futuro si el modelo cree que hay un ordenamiento cuando en realidad no lo hay. Esto podría llevar a predicciones incorrectas o sesgos en el modelo. En general, es una buena idea codificar las características categóricas de forma one-hot para evitar este problema, pero en algunos casos puede valer la pena experimentar con diferentes esquemas de codificación para ver cuál funciona mejor para un conjunto de datos y algoritmo particular.

    En general, es importante ser cauteloso al interpretar los resultados y evaluar minuciosamente los modelos para asegurar que estén funcionando bien y no solo tuvieran “suerte” en un conjunto de datos específico.

Comments are closed.