Avec le nouveau jour vient une nouvelle force et de nouvelles pensées – Eleanor Roosevelt

Nous… avons tous pu être confrontés à ce problème d’identification des caractéristiques connexes à partir d’un ensemble de données et de suppression des caractéristiques non pertinentes ou moins importantes qui ne contribuent pas beaucoup à notre variable cible afin d’obtenir une meilleure précision pour notre modèle.

La sélection des caractéristiques est l’un des concepts fondamentaux de l’apprentissage automatique qui a un impact énorme sur les performances de votre modèle. Les caractéristiques des données que vous utilisez pour former vos modèles d’apprentissage automatique ont une énorme influence sur les performances que vous pouvez atteindre.

Les caractéristiques non pertinentes ou partiellement pertinentes peuvent avoir un impact négatif sur les performances du modèle.

La sélection des caractéristiques et le nettoyage des données devraient être la première et la plus importante étape de la conception de votre modèle.

Dans ce post, vous découvrirez les techniques de sélection des caractéristiques que vous pouvez utiliser dans l’apprentissage automatique.

La sélection de caractéristiques est le processus par lequel vous sélectionnez automatiquement ou manuellement les caractéristiques qui contribuent le plus à votre variable de prédiction ou à la sortie à laquelle vous vous intéressez.

Avoir des caractéristiques non pertinentes dans vos données peut diminuer la précision des modèles et faire en sorte que votre modèle apprenne sur la base de caractéristiques non pertinentes.

Comment sélectionner des caractéristiques et quels sont les avantages d’effectuer une sélection de caractéristiques avant de modéliser vos données ?

– Réduit le surajustement : Moins de données redondantes signifie moins d’opportunités de prendre des décisions basées sur le bruit.

– Améliore la précision : Moins de données trompeuses signifie que la précision de la modélisation s’améliore.

– Réduit le temps de formation : moins de points de données réduisent la complexité de l’algorithme et les algorithmes s’entraînent plus rapidement.

Je veux partager mon expérience personnelle à ce sujet.

J’ai préparé un modèle en sélectionnant toutes les caractéristiques et j’ai obtenu une précision d’environ 65% ce qui n’est pas très bon pour un modèle prédictif et après avoir fait de la sélection de caractéristiques et de l’ingénierie de caractéristiques sans faire aucun changement logique dans le code de mon modèle, ma précision a bondi à 81% ce qui est assez impressionnant

Maintenant vous savez pourquoi je dis que la sélection de caractéristiques devrait être la première et la plus importante étape de votre conception de modèle.

Méthodes de sélection de caractéristiques:

Je vais partager 3 techniques de sélection de caractéristiques qui sont faciles à utiliser et qui donnent également de bons résultats.

1. Sélection univariée

2. Importance des caractéristiques

3.Matrice de corrélation avec carte thermique

Voyons ces techniques une par une avec un exemple

Vous pouvez télécharger l’ensemble de données à partir d’ici https://www.kaggle.com/iabhishekofficial/mobile-price-classification#train.csv

Description des variables dans le fichier ci-dessus

puissance_batterie : Énergie totale qu’une batterie peut stocker en une fois mesurée en mAh

bleu : Possède Bluetooth ou non

clock_speed : la vitesse à laquelle le microprocesseur exécute les instructions

dual_sim : Possède le support dual sim ou non

fc : Mégapixels de la caméra frontale

four_g : Possède la 4G ou non

int_memory : Mémoire interne en gigaoctets

m_dep : Profondeur du mobile en cm

mobile_wt : Poids du téléphone mobile

n_cores : Nombre de cœurs du processeur

pc : Mégapixels de la caméra primaire

px_height

Hauteur de la résolution en pixels

px_width : Largeur de la résolution en pixels

ram : Mémoire vive en mégaoctets

sc_h : Hauteur d’écran du mobile en cm

sc_w : Largeur d’écran du mobile en cm

talk_time : la plus longue durée d’une seule charge de batterie lorsque vous êtes

three_g : Possède la 3G ou non

touch_screen : Possède un écran tactile ou non

wifi : Possède le wifi ou non

price_range : C’est la variable cible avec une valeur de 0(faible coût), 1(coût moyen), 2(coût élevé) et 3(coût très élevé).

1. Sélection univariée

Des tests statistiques peuvent être utilisés pour sélectionner les caractéristiques qui ont la relation la plus forte avec la variable de sortie.

La bibliothèque scikit-learn fournit la classe SelectKBest qui peut être utilisée avec une suite de différents tests statistiques pour sélectionner un nombre spécifique de caractéristiques.

L’exemple ci-dessous utilise le test statistique du chi carré (chi²) pour les caractéristiques non négatives pour sélectionner 10 des meilleures caractéristiques du jeu de données de prédiction de la gamme de prix des mobiles.

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

Top 10 Best Features using SelectKBest class

Feature Importance

Vous pouvez obtenir l’importance de chaque caractéristique de votre jeu de données en utilisant la propriété d’importance des caractéristiques du modèle.

L’importance de la caractéristique vous donne un score pour chaque caractéristique de vos données, plus le score est élevé plus la caractéristique est importante ou pertinente envers votre variable de sortie.

L’importance des caractéristiques est une classe intégrée qui vient avec les classificateurs basés sur l’arbre, nous allons utiliser le classificateur Extra Tree pour extraire les 10 meilleures caractéristiques pour le jeu de données.

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()

les 10 caractéristiques les plus importantes dans les données

3.Matrice de corrélation avec Heatmap

La corrélation indique comment les caractéristiques sont liées les unes aux autres ou à la variable cible.

La corrélation peut être positive (l’augmentation d’une valeur de caractéristique augmente la valeur de la variable cible) ou négative (l’augmentation d’une valeur de caractéristique diminue la valeur de la variable cible)

La carte thermique facilite l’identification des caractéristiques les plus liées à la variable cible, nous tracerons la carte thermique des caractéristiques corrélées à l’aide de la bibliothèque 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")

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.