Selección de Características
Al trabajar con muchas características, a menudo no se sabe cuáles son relevantes. Se puede entrenar un modelo con todas ellas, identificar cuáles no aportan valor y luego volver a entrenar utilizando solo las que tienen impacto.
¿Por qué eliminar características del modelo?
Agregar una característica no relacionada con el objetivo introduce ruido y empeora las predicciones. Muchas características inútiles acumulan ruido y reducen aún más la calidad del modelo.
¿Cómo saber si las características son buenas o malas?
OLS proporciona pruebas estadísticas durante el entrenamiento. Cada característica recibe un resultado de prueba t, mostrado en la tabla summary(), que indica si afecta significativamente al objetivo.
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 en que la característica es relevante.
En estadística, se establece un nivel de significancia, usualmente 0.05. Si el valor p de una característica supera este umbral, se considera que no tiene impacto.
En la práctica, valores p ligeramente superiores a 0.05 aún pueden aportar al modelo. Es recomendable probar el modelo con y sin dicha característica. Sin embargo, si el valor p es muy alto (>0.4), se puede eliminar con confianza.
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 usualmente significa mayor a 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.
Los conjuntos de datos pequeños suelen producir valores p más altos (0.05–0.2) incluso para características relevantes. Los valores p reflejan el nivel de confianza: con más datos, es más fácil distinguir las características realmente significativas de aquellas que solo aportan ruido.
¿Cómo eliminar características no adecuadas?
Solo 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, crear 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 Características
Desliza para mostrar el menú
Al trabajar con muchas características, a menudo no se sabe cuáles son relevantes. Se puede entrenar un modelo con todas ellas, identificar cuáles no aportan valor y luego volver a entrenar utilizando solo las que tienen impacto.
¿Por qué eliminar características del modelo?
Agregar una característica no relacionada con el objetivo introduce ruido y empeora las predicciones. Muchas características inútiles acumulan ruido y reducen aún más la calidad del modelo.
¿Cómo saber si las características son buenas o malas?
OLS proporciona pruebas estadísticas durante el entrenamiento. Cada característica recibe un resultado de prueba t, mostrado en la tabla summary(), que indica si afecta significativamente al objetivo.
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 en que la característica es relevante.
En estadística, se establece un nivel de significancia, usualmente 0.05. Si el valor p de una característica supera este umbral, se considera que no tiene impacto.
En la práctica, valores p ligeramente superiores a 0.05 aún pueden aportar al modelo. Es recomendable probar el modelo con y sin dicha característica. Sin embargo, si el valor p es muy alto (>0.4), se puede eliminar con confianza.
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 usualmente significa mayor a 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.
Los conjuntos de datos pequeños suelen producir valores p más altos (0.05–0.2) incluso para características relevantes. Los valores p reflejan el nivel de confianza: con más datos, es más fácil distinguir las características realmente significativas de aquellas que solo aportan ruido.
¿Cómo eliminar características no adecuadas?
Solo 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, crear 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!