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, comprobar cuáles no son útiles 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 es el valor p, mayor es la confianza de que la característica es relevante
En estadística, se establece un nivel de significancia, generalmente 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 ser útiles para el 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 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.
Los conjuntos de datos pequeños suelen producir valores p más altos (0.05–0.2) incluso para características significativas. Los valores p reflejan el nivel de confianza: con más datos, es más fácil distinguir las características realmente relevantes de las que solo aportan ruido.
¿Cómo eliminar características no relevantes?
Solo es necesario eliminar la columna relacionada con la característica de X_tilde. Esto se puede hacer con 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)
Y luego crear un nuevo objeto OLS usando 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