Tabla de contenido:
- Seleccionar por medidas univariadas
- Al usar una selección univariada, debe decidir por sí mismo cuántas variables conservar: la selección codiciosa reduce automáticamente el número de características involucradas en un modelo de aprendizaje sobre la base de su contribución efectiva al rendimiento medido por la medida de error.
Video: 5. Programación en C++ || Ejercicio - Pedir datos al usuario y mostrarlos en pantalla 2024
Seleccionar las variables correctas en Python puede mejorar el proceso de aprendizaje en la ciencia de datos al reducir la cantidad de ruido (inútil información) que puede influir en las estimaciones del alumno. La selección de variables, por lo tanto, puede reducir efectivamente la varianza de las predicciones. Para involucrar solo las variables útiles en el entrenamiento y dejar de lado las redundantes, puede usar estas técnicas:
-
Enfoque univariado: Seleccione las variables más relacionadas con el resultado del objetivo.
-
Enfoque codicioso o atrasado: Conserve solo las variables que puede eliminar del proceso de aprendizaje sin dañar su rendimiento.
Seleccionar por medidas univariadas
Si decide seleccionar una variable por su nivel de asociación con su objetivo, la clase SelectPercentile proporciona un procedimiento automático para mantener solo un cierto porcentaje de las mejores características asociadas. Las métricas disponibles para la asociación son
-
f_regresión: se usa solo para objetivos numéricos y en función del rendimiento de regresión lineal.
-
f_classif: se usa solo para objetivos categóricos y se basa en la prueba estadística de análisis de la varianza (ANOVA).
-
chi2: realiza la estadística de chi-cuadrado para los objetivos categóricos, que es menos sensible a la relación no lineal entre la variable de predicción y su objetivo.
Al evaluar a los candidatos para un problema de clasificación, f_classif y chi2 tienden a proporcionar el mismo conjunto de variables principales. Sigue siendo una buena práctica probar las selecciones de ambas métricas de asociación.
Además de aplicar una selección directa de las asociaciones percentiles superiores, SelectPercentile también puede clasificar las mejores variables para que sea más fácil decidir en qué percentil excluir una característica de participar en el proceso de aprendizaje. La clase SelectKBest es análoga en su funcionalidad, pero selecciona las principales variables k, donde k es un número, no un percentil.
de sklearn. feature_selection import SelectPercentile from sklearn. feature_selection import f_regression Selector_f = SelectPercentile (f_regresión, percentil = 25) Selector_f. fit (X, y) para n, s en zip (boston. feature_names, Selector_f. scores_): print 'F-score:% 3. 2 pies para la característica% s '% (s, n) F-score: 88. 15 para la característica CRIM F-score: 75. 26 para la característica ZN F-score: 153. 95 para la característica INDUS F-score: 15. 97 para característica CHAS F-score: 112. 59 para la característica NOX F-score: 471. 85 para la característica RM F-score: 83.48 para la característica AGE F-score: 33. 58 para la característica DIS F-score: 85. 91 para la característica RAD F-score: 141. 76 para la característica TAX F-score: 175. 11 para la característica PTRATIO F-score: 63. 05 para la característica B F-score: 601. 62 para la función LSTAT
Usar el nivel de salida de la asociación lo ayuda a elegir las variables más importantes para su modelo de aprendizaje automático, pero debe tener cuidado con estos posibles problemas: > Algunas variables con alta asociación también podrían estar altamente correlacionadas, introduciendo información duplicada, que actúa como ruido en el proceso de aprendizaje.
-
Algunas variables pueden ser penalizadas, especialmente las binarias (variables que indican un estado o característica que usa el valor 1 cuando está presente, 0 cuando no lo está). Por ejemplo, observe que el resultado muestra la variable binaria CHAS como la menos asociada con la variable objetivo (pero usted sabe de ejemplos anteriores que es influyente desde la fase de validación cruzada).
-
El proceso de selección univariable puede darle una ventaja real cuando tiene una gran cantidad de variables para seleccionar y todos los demás métodos no son factibles computacionalmente. El mejor procedimiento es reducir el valor de SelectPercentile en la mitad o más de las variables disponibles, reducir el número de variables a un número manejable y, en consecuencia, permitir el uso de un método más sofisticado y más preciso, como una búsqueda ambiciosa.
Uso de una búsqueda codiciosa
Al usar una selección univariada, debe decidir por sí mismo cuántas variables conservar: la selección codiciosa reduce automáticamente el número de características involucradas en un modelo de aprendizaje sobre la base de su contribución efectiva al rendimiento medido por la medida de error.
La clase RFECV, que se ajusta a los datos, puede proporcionarle información sobre la cantidad de funciones útiles, señalarlas y transformar automáticamente los datos X, mediante la transformación del método, en un conjunto de variables reducidas, como se muestra en el siguiente ejemplo:
de sklearn. feature_selection import RFECV selector = RFECV (estimador = regresión, cv = 10, puntuación = "mean_squared_error") selector. impresión de ajuste (X, y) ("Número óptimo de características:% d"% selector. n_features_) Número óptimo de características: 6
Es posible obtener un índice para la variable óptima establecida llamando al atributo support_ de la RFECV clase después de que encaja.
imprimir Boston. feature_names [selector. support_] ['CHAS' NOX 'RM' DIS 'PTRATIO' LSTAT ']
Observe que CHAS ahora se incluye entre las características más predictivas, lo que contrasta con el resultado de la búsqueda univariada. El método RFECV puede detectar si una variable es importante, no importa si es binario, categórico o numérico, porque evalúa directamente el rol que desempeña la característica en la predicción.
El método RFECV es ciertamente más eficiente, en comparación con el enfoque "univariado", porque considera características altamente correlacionadas y está optimizada para optimizar la medida de evaluación (que generalmente no es Chi-cuadrado o F-score). Siendo un proceso ambicioso, es computacionalmente exigente y solo puede aproximarse al mejor conjunto de predictores.
A medida que RFECV aprende el mejor conjunto de variables de los datos, la selección puede sobreajustarse, que es lo que sucede con todos los demás algoritmos de aprendizaje automático. Probar RFECV en diferentes muestras de los datos de entrenamiento puede confirmar las mejores variables para usar.