Selección de las Características
En muchas tareas, puede haber numerosas características cuya utilidad no se conoce con certeza. Afortunadamente, es posible entrenar un modelo con todas ellas, observar cuáles no tienen impacto y luego volver a entrenar el modelo utilizando únicamente las características relevantes.
¿Por qué eliminar características del modelo?
Si se añade una característica al modelo que no tiene relación con el objetivo, generará ruido en el modelo, empeorando la predicción. Cuando existen muchas características inútiles, el ruido se acumula, lo que provoca un rendimiento cada vez peor del modelo.
¿Cómo saber si las características son buenas o malas?
Como ya se ha mencionado, durante el entrenamiento, la clase OLS también calcula información estadística. Entre otras cosas, realiza una prueba t para determinar si cada característica tiene un impacto significativo en el objetivo. Los resultados de la prueba pueden encontrarse en la tabla summary()
como se muestra a continuación:
123456789import pandas as pd import statsmodels.api as sm file_link='https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/heights_two_feature.csv' df = pd.read_csv(file_link) # Open the file X,y = df[['Father', 'Mother']], df['Height'] # Assign the variables X_tilde = sm.add_constant(X) # Create X_tilde regression_model = sm.OLS(y, X_tilde).fit() # Initialize and train an OLS object print(regression_model.summary()) #Get the summary
Lo que nos interesa es el valor p para cada característica.
En resumen, cuanto menor sea el valor p, mayor será la confianza de que la característica es relevante.
En estadística, es necesario establecer el umbral del valor p, denominado nivel de significancia. Generalmente se fija en 0.05, y una vez que el valor p supera ese nivel de significancia, se considera que la característica no es relevante.
Sin embargo, en la práctica, las características con un valor p ligeramente superior a 0.05 suelen mejorar el modelo también. Por lo tanto, es preferible probar el modelo con y sin esa característica en lugar de eliminarla instantáneamente, a menos que tenga un valor p realmente alto (>0.4). En ese caso, se puede eliminar la característica de manera segura.
El valor p varía de 0 a 1, por lo que cuando hablamos de un valor p bajo nos referimos a menos de 0.05 y un valor p alto generalmente significa mayor que 0.3-0.5.
En nuestro ejemplo, obtuvimos valores p para la altura de la madre y la constante de 0.087 y 0.051. Si eliminamos las características con un valor p > 0.05, obtendremos el resultado que se muestra a continuación (a la izquierda).
Incluso visualmente, podemos notar que el modelo con constante (a la derecha) es mejor, por lo que es preferible no eliminarla del modelo.
Es común obtener valores p relativamente altos (0.05 a 0.2) para características relevantes cuando el conjunto de datos es pequeño. El valor p indica la confianza de que la característica es relevante, y es natural que, mientras más instancias tengamos, sea más fácil distinguir las características relevantes de las no relevantes.
Supongamos que tienes datos que muestran que 9/10 de las personas altas que conoces comían manzanas diariamente. ¿Puedes estar seguro de que esto está relacionado? ¿Pero qué pasaría si fueran 9000/10000? Eso te daría más confianza.
¿Cómo eliminar características no deseadas?
Simplemente es necesario eliminar la columna relacionada con la característica de X_tilde
. Esto se puede realizar utilizando el siguiente código:
X_tilde = X_tilde.drop(___, axis=1)
Por ejemplo, para eliminar las columnas 'const' y 'Mother' se utilizaría:
X_tilde = X_tilde.drop(['Mother', 'const'], axis=1)
Luego, cree un nuevo objeto OLS utilizando el X_tilde
actualizado:
regression_model=sm.OLS(y, X_tilde)
1. ¿Cuáles de las características deberías MANTENER?
2. Elige la afirmación INCORRECTA.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 5.26
Selección de las Características
Desliza para mostrar el menú
En muchas tareas, puede haber numerosas características cuya utilidad no se conoce con certeza. Afortunadamente, es posible entrenar un modelo con todas ellas, observar cuáles no tienen impacto y luego volver a entrenar el modelo utilizando únicamente las características relevantes.
¿Por qué eliminar características del modelo?
Si se añade una característica al modelo que no tiene relación con el objetivo, generará ruido en el modelo, empeorando la predicción. Cuando existen muchas características inútiles, el ruido se acumula, lo que provoca un rendimiento cada vez peor del modelo.
¿Cómo saber si las características son buenas o malas?
Como ya se ha mencionado, durante el entrenamiento, la clase OLS también calcula información estadística. Entre otras cosas, realiza una prueba t para determinar si cada característica tiene un impacto significativo en el objetivo. Los resultados de la prueba pueden encontrarse en la tabla summary()
como se muestra a continuación:
123456789import pandas as pd import statsmodels.api as sm file_link='https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/heights_two_feature.csv' df = pd.read_csv(file_link) # Open the file X,y = df[['Father', 'Mother']], df['Height'] # Assign the variables X_tilde = sm.add_constant(X) # Create X_tilde regression_model = sm.OLS(y, X_tilde).fit() # Initialize and train an OLS object print(regression_model.summary()) #Get the summary
Lo que nos interesa es el valor p para cada característica.
En resumen, cuanto menor sea el valor p, mayor será la confianza de que la característica es relevante.
En estadística, es necesario establecer el umbral del valor p, denominado nivel de significancia. Generalmente se fija en 0.05, y una vez que el valor p supera ese nivel de significancia, se considera que la característica no es relevante.
Sin embargo, en la práctica, las características con un valor p ligeramente superior a 0.05 suelen mejorar el modelo también. Por lo tanto, es preferible probar el modelo con y sin esa característica en lugar de eliminarla instantáneamente, a menos que tenga un valor p realmente alto (>0.4). En ese caso, se puede eliminar la característica de manera segura.
El valor p varía de 0 a 1, por lo que cuando hablamos de un valor p bajo nos referimos a menos de 0.05 y un valor p alto generalmente significa mayor que 0.3-0.5.
En nuestro ejemplo, obtuvimos valores p para la altura de la madre y la constante de 0.087 y 0.051. Si eliminamos las características con un valor p > 0.05, obtendremos el resultado que se muestra a continuación (a la izquierda).
Incluso visualmente, podemos notar que el modelo con constante (a la derecha) es mejor, por lo que es preferible no eliminarla del modelo.
Es común obtener valores p relativamente altos (0.05 a 0.2) para características relevantes cuando el conjunto de datos es pequeño. El valor p indica la confianza de que la característica es relevante, y es natural que, mientras más instancias tengamos, sea más fácil distinguir las características relevantes de las no relevantes.
Supongamos que tienes datos que muestran que 9/10 de las personas altas que conoces comían manzanas diariamente. ¿Puedes estar seguro de que esto está relacionado? ¿Pero qué pasaría si fueran 9000/10000? Eso te daría más confianza.
¿Cómo eliminar características no deseadas?
Simplemente es necesario eliminar la columna relacionada con la característica de X_tilde
. Esto se puede realizar utilizando el siguiente código:
X_tilde = X_tilde.drop(___, axis=1)
Por ejemplo, para eliminar las columnas 'const' y 'Mother' se utilizaría:
X_tilde = X_tilde.drop(['Mother', 'const'], axis=1)
Luego, cree un nuevo objeto OLS utilizando el X_tilde
actualizado:
regression_model=sm.OLS(y, X_tilde)
1. ¿Cuáles de las características deberías MANTENER?
2. Elige la afirmación INCORRECTA.
¡Gracias por tus comentarios!