Saltar al contenido
Machine Learning con Python

Selección de características

Introducción

La Selección de Características es una técnica utilizada en el Machine Learning para elegir las mejores características (variables) para un modelo de predicción. El objetivo es eliminar características irrelevantes o redundantes y conservar aquellas que tengan un mayor impacto en la precisión de la predicción.

La Selección de Características es importante porque puede mejorar la precisión del modelo, reducir el tiempo de entrenamiento y aumentar la interpretabilidad del modelo. Hay varias técnicas de Selección de Características, incluyendo métodos estadísticos, métodos basados en modelos y métodos de búsqueda.

Los métodos estadísticos se basan en la relación entre cada característica y la variable de salida, mientras que los métodos basados en modelos entrenan varias modelos de predicción y observan su precisión con diferentes conjuntos de características.

Finalmente, los métodos de búsqueda evalúan todas las posibles combinaciones de características para encontrar la mejor combinación.

En resumen, la Selección de Características es una técnica clave para mejorar la precisión y la interpretación de los modelos de Machine Learning, ayudándonos a identificar las características más importantes para nuestro problema de predicción.

Resumen

La selección de características es un proceso fundamental en el aprendizaje automático (Machine Learning) que implica elegir las variables más relevantes que se deben considerar para construir un modelo de aprendizaje automático.

En otras palabras, se trata de identificar aquellas características (o atributos) de los datos que son más significativas para predecir una variable objetivo o salida. Existen diferentes técnicas de selección de características que se pueden utilizar, entre las más comunes se encuentran:

- Selección de características basada en filtro: Esta técnica se basa en medidas estadísticas para evaluar la importancia de cada característica individual. Por ejemplo, se puede utilizar la correlación entre la característica y la variable objetivo o el análisis de varianza (ANOVA) para seleccionar las características más relevantes.

- Selección de características basada en wrapper: Esta técnica se basa en la construcción de modelos de aprendizaje automático para evaluar la importancia de cada característica. Se prueban diferentes combinaciones de características y se mide el rendimiento del modelo en función de la precisión, el tiempo de entrenamiento, etc. El resultado es un conjunto óptimo de características que se utilizarán para construir el modelo final.

- Selección de características basada en incrustación: Esta técnica incorpora la selección de características en el proceso de entrenamiento del modelo de aprendizaje automático. En otras palabras, la selección de características se integra en el modelo mediante la inclusión de métodos que automatizan la selección de características, como LASSO, Ridge Regression, entre otros.

Es importante destacar que la selección de características puede mejorar significativamente el rendimiento del modelo de aprendizaje automático, ya que elimina características irrelevantes o redundantes y se enfoca en las más importantes, lo que puede reducir el tiempo de entrenamiento y mejorar la precisión de las predicciones.

Aplicación teórica

La selección de características es un proceso importante en el aprendizaje automático porque ayuda a reducir la complejidad del modelo al eliminar las características irrelevantes o redundantes y, por lo tanto, mejora la precisión y la generalización del modelo.

Por ejemplo, si estamos trabajando en un conjunto de datos que contiene información del tráfico de un sitio web (el número de visitantes al sitio, la duración de la visita, la página visitada, etc.), podríamos querer determinar qué características tienen más relevancia en la predicción del número de visitantes.

Podemos usar el algoritmo de selección de características para identificar las características más importantes y eliminar las que no son relevantes. Para hacer esto, primero construimos un modelo de aprendizaje automático utilizando todas las características disponibles en nuestros datos.

Luego, podemos utilizar técnicas como la eliminación por umbral o la eliminación recursiva de características para identificar las características más relevantes y eliminar las características menos importantes.

Por ejemplo, podemos empezar con 10 características y usar la eliminación recursiva de características para reducir el conjunto a las 6 características más importantes.

Luego, podemos entrenar un nuevo modelo de aprendizaje automático utilizando solo estas 6 características y comparar su precisión y rendimiento con el modelo original que utilizaba las 10 características.

Si el modelo simplificado funciona igual de bien o incluso mejor que el modelo original, podemos concluir que las 6 características que hemos seleccionado son las más importantes para predecir el número de visitantes en nuestro sitio web.

Aplicación práctica

Un ejemplo práctico de selección de características. En este ejemplo utilizaremos el conjunto de datos de cancer de mama de scikit-learn.

El objetivo es predecir si un tumor es benigno o maligno en función de varias características. Primero, importamos las bibliotecas necesarias:


import numpy as np 
import pandas as pd 
from sklearn.datasets import load_breast_cancer 
from sklearn.feature_selection import SelectKBest 
from sklearn.feature_selection import f_classif 

Luego cargamos los datos.


data = load_breast_cancer() 
df = pd.DataFrame(np.c_[data['data'], data['target']],columns = np.append(data['feature_names'], ['target']))

Ahora, dividimos los datos en características y etiquetas.



X = df.iloc[:, :-1] 
# características 
y = df.iloc[:, -1] 
# etiquetas 

A continuación, seleccionaremos las mejores características basándonos en la prueba F de ANOVA. En este caso, seleccionaremos las 10 mejores características.


selector = SelectKBest(f_classif, k=10) 
# seleccionamos las 10 mejores características 
X_new = selector.fit_transform(X, y)

Finalmente, imprimimos las características seleccionadas y sus correspondientes puntajes.


scores = -np.log10(selector.pvalues_) 
indices = np.argsort(scores)[::-1] 
print('Características seleccionadas:') 
for i in range(10): 
  print(' - %s (%f)' % (data.feature_names[indices[i]], scores[indices[i]]))

Este es un ejemplo básico de cómo se puede realizar una selección de características utilizando python y scikit-learn. Como resultado, obtendrás las características más relevantes para predecir si un tumor es benigno o maligno.