Con el nuevo día vienen nuevas fuerzas y nuevos pensamientos – Eleanor Roosevelt
Todos nos hemos enfrentado a este problema de identificar las características relacionadas de un conjunto de datos y eliminar las características irrelevantes que no contribuyen mucho a nuestra variable objetivo para lograr una mejor precisión de nuestro modelo. todos nos hemos enfrentado a este problema de identificar las características relacionadas de un conjunto de datos y eliminar las características irrelevantes o menos importantes que no contribuyen mucho a nuestra variable objetivo con el fin de lograr una mejor precisión para nuestro modelo.
La selección de características es uno de los conceptos centrales en el aprendizaje automático que afecta enormemente al rendimiento de su modelo. Las características de los datos que utiliza para entrenar sus modelos de aprendizaje automático tienen una gran influencia en el rendimiento que puede lograr.
Las características irrelevantes o parcialmente relevantes pueden impactar negativamente en el rendimiento del modelo.
La selección de características y la limpieza de datos deben ser el primer y más importante paso de su diseño de modelos.
En este post, descubrirá las técnicas de selección de características que puede utilizar en el aprendizaje automático.
La selección de características es el proceso en el que usted selecciona automática o manualmente aquellas características que contribuyen más a su variable de predicción o salida en la que está interesado.
Tener características irrelevantes en sus datos puede disminuir la precisión de los modelos y hacer que su modelo aprenda basado en características irrelevantes.
¿Cómo seleccionar características y cuáles son los beneficios de realizar la selección de características antes de modelar sus datos?
– Reduce el sobreajuste: Menos datos redundantes significa menos oportunidades de tomar decisiones basadas en el ruido.
– Mejora la precisión: Menos datos engañosos significa que la precisión del modelado mejora.
– Reduce el tiempo de entrenamiento: menos puntos de datos reducen la complejidad del algoritmo y los algoritmos se entrenan más rápido.
Quiero compartir mi experiencia personal con esto.
Preparé un modelo seleccionando todas las características y obtuve una precisión de alrededor del 65%, lo cual no es muy bueno para un modelo predictivo, y después de hacer un poco de selección de características e ingeniería de características sin hacer ningún cambio lógico en el código de mi modelo, mi precisión saltó al 81%, lo cual es bastante impresionante
Ahora sabes por qué digo que la selección de características debe ser el primer y más importante paso de tu diseño de modelo.
Métodos de selección de características:
Compartiré 3 técnicas de selección de características que son fáciles de usar y también dan buenos resultados.
1. Selección univariante
2. Importancia de las características
3.Matriz de Correlación con Heatmap
Veamos estas técnicas una a una con un ejemplo
Puedes descargar el conjunto de datos desde aquí https://www.kaggle.com/iabhishekofficial/mobile-price-classification#train.csv
Descripción de las variables en el archivo anterior
Potencia_de_batería: Energía total que una batería puede almacenar en un tiempo medida en mAh
Azul: Tiene Bluetooth o no
clock_speed: la velocidad a la que el microprocesador ejecuta las instrucciones
dual_sim: Tiene soporte para dual sim o no
fc: Cámara frontal de megapíxeles
four_g: Tiene 4G o no
int_memory: Memoria interna en gigabytes
m_dep: Profundidad del móvil en cm
mobile_wt: Peso del móvil
n_cores: Número de núcleos del procesador
pc: Megapíxeles de la cámara principal
px_height
Altura de la resolución de píxeles
px_width: Ancho de la resolución de píxeles
ram: Memoria de acceso aleatorio en MegaBytes
sc_h: Altura de la pantalla del móvil en cm
sc_w: Ancho de pantalla del móvil en cm
talk_time: el mayor tiempo que durará una sola carga de la batería cuando esté
tres_g: Tiene 3G o no
pantalla_táctil: Tiene pantalla táctil o no
wifi: Tiene wifi o no
rango_de_precio: Es la variable objetivo con un valor de 0(coste bajo), 1(coste medio), 2(coste alto) y 3(coste muy alto).
1. Selección univariante
Se pueden utilizar pruebas estadísticas para seleccionar aquellas características que tienen la relación más fuerte con la variable de salida.
La biblioteca scikit-learn proporciona la clase SelectKBest que se puede utilizar con un conjunto de diferentes pruebas estadísticas para seleccionar un número específico de características.
El ejemplo siguiente utiliza la prueba estadística chi-cuadrado (chi²) para características no negativas para seleccionar 10 de las mejores características del conjunto de datos de predicción del rango de precios de los móviles.
import pandas as pd
import numpy as np
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2data = pd.read_csv("D://Blogs//train.csv")
X = data.iloc #independent columns
y = data.iloc #target column i.e price range#apply SelectKBest class to extract top 10 best features
bestfeatures = SelectKBest(score_func=chi2, k=10)
fit = bestfeatures.fit(X,y)
dfscores = pd.DataFrame(fit.scores_)
dfcolumns = pd.DataFrame(X.columns)
#concat two dataframes for better visualization
featureScores = pd.concat(,axis=1)
featureScores.columns = #naming the dataframe columns
print(featureScores.nlargest(10,'Score')) #print 10 best features
Importancia de la característica
Puede obtener la importancia de cada característica de su conjunto de datos utilizando la propiedad de importancia de la característica del modelo.
La importancia de la característica le da una puntuación para cada característica de sus datos, cuanto mayor sea la puntuación más importante o relevante es la característica hacia su variable de salida.
La importancia de la característica es una clase incorporada que viene con los Clasificadores Basados en Árbol, vamos a utilizar el Clasificador de Árbol Extra para extraer las 10 principales características para el conjunto de datos.
import pandas as pd
import numpy as np
data = pd.read_csv("D://Blogs//train.csv")
X = data.iloc #independent columns
y = data.iloc #target column i.e price range
from sklearn.ensemble import ExtraTreesClassifier
import matplotlib.pyplot as plt
model = ExtraTreesClassifier()
model.fit(X,y)
print(model.feature_importances_) #use inbuilt class feature_importances of tree based classifiers
#plot graph of feature importances for better visualization
feat_importances = pd.Series(model.feature_importances_, index=X.columns)
feat_importances.nlargest(10).plot(kind='barh')
plt.show()
3.Matriz de Correlación con Mapa de Calor
La correlación indica cómo las características están relacionadas entre sí o con la variable objetivo.
La correlación puede ser positiva (el aumento de un valor de la característica aumenta el valor de la variable objetivo) o negativa (el aumento de un valor de la característica disminuye el valor de la variable objetivo)
El mapa de calor facilita la identificación de las características que están más relacionadas con la variable objetivo, vamos a trazar el mapa de calor de las características correlacionadas utilizando la biblioteca seaborn.
import pandas as pd
import numpy as np
import seaborn as snsdata = pd.read_csv("D://Blogs//train.csv")
X = data.iloc #independent columns
y = data.iloc #target column i.e price range
#get correlations of each features in dataset
corrmat = data.corr()
top_corr_features = corrmat.index
plt.figure(figsize=(20,20))
#plot heat map
g=sns.heatmap(data.corr(),annot=True,cmap="RdYlGn")