Todos hemos visto los conjuntos de datos, en ocasiones pueden ser pequeños mientras que otros son tremendamente grandes en tamaño, en especial cuando cuentan con un gran número de características, ocasionando que sean muy difícil de procesar.
Cuando se tiene este de tipo de conjuntos de datos de alta dimensión y se utilizan todas para la creación de modelos de Machine Learning puede ocasionar:
- Las características adicionales actúan como un ruido para el cual el modelo de Machine Learning puede tener un rendimiento extremadamente bajo.
- El modelo tarda más tiempo en entrenarse.
- Asignación de recursos innecesarios para estas características.
Por todo esto, se debe implementar la selección de características en los proyectos de Machine Learning.
La Selección de Características es el proceso de seleccionar las más importante y/o relevante características de un conjunto de datos, con el objetivo de mejorar el rendimiento de predicción de los predictores, proporcionar predictores más rápidos y más rentables y proporcionar una mejor comprensión del proceso subyacente que generó los datos.
A continuación, analizaremos varias metodologías y técnicas que puedes utilizar para que tus modelos funcionen mejor y de manera más eficiente.
Métodos de Filtro
La siguiente imagen describe mejor los métodos de selección de características basados en filtros:
Los métodos de filtro se utilizan generalmente como un paso de preprocesamiento de datos, la selección de características es independiente de cualquier algoritmo de Machine Learning.
Las características se clasifican según los puntajes estadísticos que tienden a determinar la correlación de las características con la variable de resultado, ten en cuenta que la correlación es un término muy contextual y varía de un trabajo a otro.
En la siguiente tabla puedes utilizarla para definir los coeficientes de correlación para diferentes tipos de datos, en este caso, continuo y categórico.
Correlación de Pearson: se usa como una medida para cuantificar la dependencia lineal entre dos variables continuas X e Y, su valor varía de -1 a +1.
LDA: el análisis discriminante lineal se usa para encontrar una combinación lineal de características que caracteriza o separa dos o más clases, o niveles, de una variable categórica.
ANOVA: significa análisis de la varianza y es similar a LDA, excepto por el hecho de que opera mediante una o más funciones independientes categóricas y una función dependiente continua. Proporciona una prueba estadística de si las medias de varios grupos son iguales o no.
Chi-cuadrado: es una prueba estadística que se aplica a los grupos de características categóricas para evaluar la probabilidad de correlación o asociación entre ellos utilizando su distribución de frecuencia.
Una cosa que debes tener encuentra es que los métodos de filtro no eliminan la multicolinealidad, por lo tanto debes lidiar con ellos también antes de entrenar modelos para tus datos.
Métodos de envoltura
Al igual que los métodos de filtro, te muestro una gráfica en donde se explica mejor este método:
Como puedes observar, un método de envoltura necesita un algoritmo de Machine Learning y utiliza su rendimiento como criterio de evaluación. Este método busca una característica que sea más adecuada para el algoritmo y tiene como objetivo mejorar el rendimiento.
Por lo tanto, tratamos de usar un subconjunto de características y entrenamos un modelo usándolos, basándonos en las inferencias que extraemos del modelo anterior, decidimos agregar o eliminar características de su subconjunto. El problema se reduce esencialmente a un problema de búsqueda. Estos métodos suelen ser computacionalmente muy caros.
Algunos ejemplos comunes de Métodos de Envoltura son los siguientes:
Selección hacia delante (Forward Selection): es un método iterativo en el que comenzamos sin tener ninguna característica en el modelo. En cada iteración, seguimos agregando la función que mejor mejora nuestro modelo hasta que la adición de una nueva variable no mejore el rendimiento del modelo.
Eliminación hacia atrás (Backward Selection): comenzamos con todas las características y eliminamos la característica menos significativa en cada iteración, lo que mejora el rendimiento del modelo. Repetimos esto hasta que no se observe ninguna mejora en la eliminación de características.
Eliminación de características recursivas (Recursive Feature Elimination): es un algoritmo de optimización que busca encontrar el subconjunto de funciones con mejor rendimiento. Crea repetidamente modelos y deja de lado la mejor o la peor característica de rendimiento en cada iteración. Construye el siguiente modelo con las características de la izquierda hasta que se agotan todas las características, luego clasifica las características según el orden de su eliminación.
Métodos Integrados
Combina las cualidades de los métodos de filtro y envoltura. Se implementa mediante algoritmos que tienes sus propios métodos de selección de características incorporados.
Algunos de los ejemplos más populares de estos métodos son la regresión LASSO y RIDGE, que tienen funciones de penalización incorporadas para reducir el sobreajuste.
Diferencias entre métodos de filtro y envoltura
Las principales diferencias entre los métodos de filtro y envoltura para la selección de características son:
- Los métodos de filtro no incorporan un modelo de Machine Learning para determinar si una característica es buena o mala, mientras que métodos de envoltura si lo utilizan y lo capacitan para decidir si es esencial o no.
- Los métodos de filtro son mucho más rápidos en comparación con los métodos de envoltura, ya que no implican la capacitación de los modelos. Por otro lado, los métodos de envoltura son computacionalmente costosos, y en el caso de conjuntos de datos masivos, los métodos de envoltura no son el método de selección de características más efectivo a considerar.
- Los métodos de filtro pueden no encontrar el mejor subconjunto de características en situaciones en las que no hay suficiente datos para modelar la correlación estadística de las características, pero los métodos de envoltura siempre pueden proporcionar el mejor subconjunto de características debido a su naturaleza exhaustiva.
- El uso de características de los métodos de envoltura en su modelo final de Machine Learning puede llevar a un ajuste excesivo, ya que los métodos de envoltura ya capacitan a los modelos de Machine Learning con las características y afectan el verdadero poder del aprendizaje. Pero las características de los métodos de filtro no conducirán a sobreajustes en la mayoría de los casos.
Con esta entrada te has dado una buena idea de cómo puedes realizar la Selección de Características para obtener lo mejor de tus modelos. Estas son las categorías amplias que se usan comúnmente para la selección de características. Con esto puedes mejorar potencialmente tus modelos.
¿En un conjunto de datos que son las características? Por ejemplo de los datos usados para la regresión líneal, los datos de los precios de las casas de Londres, allí cuales son las características?
Hola, las características son aquellos datos que se utilizan para desarrollar un proyecto en Machine Learning, por ejemplo en un proyecto para predecir el precio de una casa, las características vendrían siendo los datos de ubicación, número de habitaciones, tamaño de la vivienda, entre otros; todos estos datos o características se utilizan para obtener la predicción del precio de la casa. Saludos.
Hola como estas, vi tu video y esta interesante, pero tengo una duda, como se sabe o como se determinan estas caracteristicas? hay algun ejemplo de cada uno de estos metodos?
Gracias por tu respuesta
Hola Jeisson, las características se encuentran en el conjunto de datos que vas a utilizar para la predicción, con estos métodos seleccionas, de esas características, las más adecuada para utilizar en Machine Learning. Saludos.
Hola Lidgi, cuando aplicas la selección de variables con RFE de sklearn, incluyes todas las variables independientes del dataset? o previamente haces una ‘preselección’ de estas para después filtrarlas con el algoritmo? Porque antes he probado y si de un dataset con 15 variables independientes incluyo las 15, me da todas un ranking 1, pero si antes filtro las que a mi parecer o por correlación debo usar (6 variables por ejemplo) sí que me hace un ranking con algunas 1 y otras 2 o 3. Gracias por aclararme esto.
Hola Roberto, por lo general con la selección de características podrás saber el peso que tiene cada una de la caracteristicas con respecto a la variable dependiente. Es muy díficil que se te eliminen todas, lo que puede ocurrir es que ciertamente esos datos no influyan tanto en lo que quieres predecir por lo que deberás buscar otras características y evaluarlas. Saludos.
Hola Ligdi: Ante todo quiero felicitarte por tu libro, lo he comprado y me parece genial. Solo quería hacerte 2 preguntas (disculpa si te escribo por varios medios):
1. Que hace exactamente esta parte del código: print(X_estandar[0:5,:]), es que no me queda bien claro.
2. Intento correr este código para procesar mis datos (y elegir las mejores características):
#Caractersiticas seleccionadas_ chi-cuadrado
caracteristicas = entrenamiento.transform(X)
print(caracteristicas[0:5,:])
Sin embargo, en mi resultado final, Python me muestra para las caracteristicas X (las que se supone seran mis caracteristicas de entrada), la columna de ‘Output’, cuando se supone que esta ya la había eliminado, al correr este código:
X = data.drop([‘Outcome’],axis=1)
print(X.head())
Que estoy haciendo mal?. Una vez mas muchas gracias por tu atención.
Hola! Ante todo muchas gracias por la información! son muy interesantes tus videos!
Me gustaría saber bajo en que escenario es más aconsejable utilizar técnicas de Feature Selection en lugar de técnicas de Feature extraction? mil gracias de antemano.
saludos;
Hola Virgina, utilizamos la extracción para obtener características útiles de los datos existentes, mientras que con la selección se elege un subconjunto del conjunto original de características. Debemos aplicar la selección de características, cuando se sospecha de redundancia o irrelevancia, ya que éstas afectan a la precisión del modelo o simplemente añaden ruido. Por su parte la extracción de características siempre es necesario para reducir la dimensionalidad y eliminar la redundancia si ese fuera el caso. Espero que te haya aclarado tu duda. Saludos.
Hola Ligdi,
En primer lugar felicitarte por el gran trabajo que realizas en cada video y en segundo lugar contarte un poco en el proyecto que estoy trabajando mira estoy que realizo un modelo de machine learning pero lo que sucede es que mi data set presenta aproximadamente 1000 características de las cuales podemos encontrar características continuas,, discretas, categóricas y etc que método me recomendarías usar para poder quedarme con las mejores características? También mencionarte que la mayoría de variables presenta missing algunos en 1% y otros hasta un 75% habría algún problemas con esas variables si desearía usar el método envoltura?
obs: Hay veces que los missing en ciertas variables dan un sentido a la variable
Hola Ligdi,
En primer lugar felicitarte por el gran trabajo que realizas en cada video y en segundo lugar contarte un poco en el proyecto que estoy trabajando mira estoy que realizo un modelo de machine learning pero lo que sucede es que mi data set presenta aproximadamente 1000 características de las cuales podemos encontrar características continuas,, discretas, categóricas y etc que método me recomendarías usar para poder quedarme con las mejores características? También mencionarte que la mayoría de variables presenta missing algunos en 1% y otros hasta un 75% habría algún problemas con esas variables si desearía usar el método envoltura?
obs: Hay veces que los missing en ciertas variables dan un sentido a la variable
Hola Alex, tendrías que probar los distintos métodos para ver con cuál tienes mejor resultado. De igual forma si tienes datos perdidos tienes que de alguna forma rellenarlos, bien sea con 0 o algún otro valor ya que los algoritmos de Machine Learning dan error cuando se utilizan conjuntos de datos incompletos. Saludos.
Buen día,
Interesante y buen trabajo de forma introductoria, he estado investigando este tema mas formalmente, pero aun me quedan varias dudas, tienes algún curso completo, pues entiendo que para este tema en particular hay bastante métodos que se emplean, desde aprendizaje supervisado, no supervisado, deep learning, Bioinspirados, Computacion Genetica, etc… entonces me gustaría ahondar en dichos temas para entender en que se diferencian y en donde es mejor emplear unos que otros, algún curso o bibliografía que me recomiendes?
Saludos..!
Hola Raúl, en que tema exactamente te gustaría profundizar, en estos momentos cuento con varios cursos, en su mayoría gratis, que están publicados pero si me indicas exactamente el tema de interes te puedo ayudar mejor. Saludos.