Selección de las Características
En muchas tareas, puedes tener muchas características y no saber si son útiles o no. Afortunadamente, puedes entrenar un modelo con todas ellas, observar cuáles no tienen impacto y luego volver a entrenar el modelo solo con las que sí son relevantes.
¿Por qué eliminar características del modelo?
Si agregas una característica al modelo que no tiene relación con el objetivo, generará ruido en el modelo, empeorando la predicción. Y cuando tienes muchas características inútiles, el ruido se acumula, haciendo que el rendimiento del modelo sea cada vez peor.
¿Cómo saber si las características son buenas o malas?
Como ya sabes, 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 se pueden encontrar 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 impactante.
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 el nivel de confianza en que la característica es relevante, y es natural que, mientras más instancias tengamos, sea más sencillo distinguir las características relevantes de las no relevantes.
Por ejemplo, si tienes datos que muestran que 9/10 de las personas altas que conoces comieron manzanas diariamente, ¿puedes estar seguro de que esto está relacionado? ¿Pero qué tal si fueran 9000/10000? Eso te daría mayor confianza.
¿Cómo eliminar características no deseadas?
Solo es necesario eliminar la columna relacionada con la característica de X_tilde
. Esto se puede hacer 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 CONSERVAR?
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, puedes tener muchas características y no saber si son útiles o no. Afortunadamente, puedes entrenar un modelo con todas ellas, observar cuáles no tienen impacto y luego volver a entrenar el modelo solo con las que sí son relevantes.
¿Por qué eliminar características del modelo?
Si agregas una característica al modelo que no tiene relación con el objetivo, generará ruido en el modelo, empeorando la predicción. Y cuando tienes muchas características inútiles, el ruido se acumula, haciendo que el rendimiento del modelo sea cada vez peor.
¿Cómo saber si las características son buenas o malas?
Como ya sabes, 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 se pueden encontrar 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 impactante.
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 el nivel de confianza en que la característica es relevante, y es natural que, mientras más instancias tengamos, sea más sencillo distinguir las características relevantes de las no relevantes.
Por ejemplo, si tienes datos que muestran que 9/10 de las personas altas que conoces comieron manzanas diariamente, ¿puedes estar seguro de que esto está relacionado? ¿Pero qué tal si fueran 9000/10000? Eso te daría mayor confianza.
¿Cómo eliminar características no deseadas?
Solo es necesario eliminar la columna relacionada con la característica de X_tilde
. Esto se puede hacer 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 CONSERVAR?
2. Elige la afirmación INCORRECTA.
¡Gracias por tus comentarios!