Cómo utilizar python para seleccionar las variables adecuadas para la ciencia de datos

La selección de las variables correctas en Python puede mejorar el proceso de aprendizaje de las ciencias de datos mediante la reducción de la cantidad de ruido (información inútil) que pueden influir en las estimaciones del alumno. La selección de variables, por lo tanto, puede reducir efectivamente la varianza de las predicciones. Con el fin de involucrar sólo las variables útiles en la formación y dejar de lado los redundantes, puede utilizar las siguientes técnicas:

  • enfoque univariado: Seleccionar las variables más relacionadas con el resultado objetivo.

  • enfoque codiciosos o hacia atrás: Mantener sólo las variables que se pueden eliminar del proceso de aprendizaje sin dañar su rendimiento.

Selección de medidas univariantes

Si decide seleccionar una variable por su nivel de asociación con su objetivo, la clase SelectPercentile proporciona un procedimiento automático para mantener sólo un cierto porcentaje de las mejores, características asociadas. Las métricas disponibles para la asociación están

  • f_regression: Se utiliza sólo para objetivos numéricos y con base en el desempeño de regresión lineal.

    Video: Como definir de Variables en Python 3.5 || Parte 1

  • f_classif: Se utiliza sólo para objetivos categóricos y con base en el análisis de varianza (ANOVA) prueba estadística.

  • Chi2: Realiza la estadística de chi-cuadrado para objetivos categóricos, que es menos sensible a la relación no lineal entre la variable predictiva y su objetivo.

    Video: analisis estadistico variables cualitativas nominales

Al evaluar los candidatos para un problema de clasificación, f_classif y Chi2 tienden a proporcionar el mismo conjunto de los principales variables. Todavía es una buena práctica para poner a prueba las selecciones de ambos las métricas de asociación.

Además de la aplicación de una selección directa de las asociaciones percentil más alto, SelectPercentile También puede clasificar las mejores variables para que sea más fácil decidir en qué percentil para excluir una característica de la participación en el proceso de aprendizaje. La clase SelectKBest es análoga en su funcionalidad, pero selecciona la parte superior k variables, donde k es un número, no un percentil.

de sklearn.feature_selection importación SelectPercentilefrom sklearn.feature_selection importación f_regressionselector_f = SelectPercentile (f_regression, percentil = 25) Selector_f.fit (x, y) para N, S en zip (boston.feature_names, Selector_f.scores _): print `F-score: % 3.2ft para la función% s `% (s, n) F-score: 88,15 para la función de CRIMF-score: 75,26 para la función de ZNF-score: 153.95 para la función de INDUSF-score: 15,97 para la función de CHASF-score: 112.59 para la función de NOXF -score: 471,85 RMF para la función de puntuación: 83.48 para la función AGEF-score: 33.58 para la función DISF-score: 85.91 para la función RADF-score: 141,76 TAXF para la función de puntuación: 175.11 para la función PTRATIOF-score: 63.05 para la función FB puntuación: 601.62 para la función LSTAT

Utilizando el nivel de salida de la asociación ayuda a elegir las variables más importantes para su modelo de máquina-aprendizaje, sino que debe mirar hacia fuera para estos posibles problemas:

  • Algunas variables con alta asociación también podrían estar altamente correlacionadas, la introducción de información duplicada, que actúa como ruido en el proceso de aprendizaje.

    Video: Curso de Python 3 [2- Variables y Tipo de Datos]

  • Algunas variables pueden ser penalizadas, especialmente binarios unos (variables que indican un estado o característica utilizando el valor 1 cuando está presente, 0 cuando no lo es). Por ejemplo, observe que la salida muestra la variable binaria CHAS como el menos asociado con la variable objetivo (pero usted sabe de los ejemplos anteriores que es influyente de la fase de validación cruzada).

El proceso de selección univariado le puede dar una ventaja real cuando se tiene un gran número de variables para seleccionar y todos los demás métodos a su vez computacionalmente imposible. El mejor procedimiento es reducir el valor de SelectPercentile a 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 tal como una búsqueda codiciosa.

Usando una búsqueda codiciosa

Cuando se utiliza una selección univariado, usted tiene que decidir por sí mismo el número de las variables que deben mantenerse: la selección Greedy reduce automáticamente el número de funciones relacionadas con un modelo de aprendizaje sobre la base de su contribución eficaz para el rendimiento medido por la medida de error.

los RFECV clase, ajustando los datos, puede proporcionarle información sobre el número de características útiles, señalarlas a usted, y transformar automáticamente el x de datos, por el método de la transformada, en un conjunto variable de reducción, como se muestra en el siguiente ejemplo:

de importación sklearn.feature_selection RFECVselector = RFECV (estimador = regresión, CV = 10, puntuación = `mean_squared_error`) selector.fit (X, Y) de impresión ( “número óptimo de características:% d”% selector.n_features_) número óptimo de características: 6

Es posible obtener un índice para el conjunto de variables óptima llamando el atributo apoyo_ desde el RFECV clase después de encajarlo.

boston.feature_names de impresión [selector.support _] [NOX ‘CHAS’ ‘’ ‘RM’ ‘DIS’ LSTAT ‘PTRATIO’ ‘’]

Darse cuenta de CHAS Ahora se incluye entre las características más predictivos, lo que contrasta con el resultado de la búsqueda univariado. los RFECV método puede detectar si una variable es importante, no importa si es binario, categórica o numérica, porque evalúa directamente el papel desempeñado por la función de la predicción.

los RFECV método es ciertamente más eficiente, en comparación con el enfoque univariado, porque considera características altamente correlacionadas y se sintoniza para optimizar la medida de evaluación (que por lo general no es Chi-cuadrado o F-score). Al ser un proceso codiciosos, es computacionalmente exigente y sólo puede aproximar el mejor conjunto de predictores.

Como RFECV aprende el mejor conjunto de variables de datos, la selección puede overfit, que es lo que sucede con todos los otros algoritmos de aprendizaje. Molesto RFECV en diferentes muestras de los datos de entrenamiento pueden confirmar las mejores variables para usar.

Artículos Relacionados