Ingénierie et sélection de caractéristiques

Machine Learning de bout en bout

Joshua Stapleton

Machine Learning Engineer

Feature engineering

Créer des caractéristiques

  • Simplifie le problème
  • Améliore l’efficacité du modèle

Techniques

  • Modifier des caractéristiques existantes
  • Concevoir de nouvelles caractéristiques

Avantages

  • Déploiement, maintenance, entraînement facilités
  • Meilleure interprétabilité

Étape actuelle du cycle de vie du machine learning : feature engineering

Machine Learning de bout en bout

Normalisation

  • Met à l’échelle les variables numériques sur [0, 1]
  • Utile quand les variables ont des échelles/plages différentes
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import Normalizer

# Séparer les données
X_train, X_test = train_test_split(df, test_size=0.2, random_state=42)
# Créer l’objet normalizer, l’ajuster sur l’entraînement, normaliser et transformer le test
norm = Normalizer()
X_train_norm = norm.fit_transform(X_train)
X_test_norm = norm.transform(X_test)
Machine Learning de bout en bout

Standardisation

  • Met les données à moyenne = 0, variance = 1
  • Bénéfique pour les algorithmes supposant moyenne et variance similaires
from sklearn.preprocessing import StandardScaler

# Séparer les données
X_train, X_test = train_test_split(df, test_size=0.2, random_state=42)
# Créer un scaler et ajuster l’entraînement pour standardiser
sc = StandardScaler()
X_train_stzd = sc.fit_transform(X_train)
# Standardiser uniquement le test
X_test_stzd = sc.transform(X_test)
Machine Learning de bout en bout

Qu’est-ce qu’une bonne caractéristique ?

  • Utiliser des caractéristiques pertinentes
  • La météo le jour du rendez-vous n’influe pas sur le diagnostic

 

Photo de temps orageux illustrant la pertinence des caractéristiques en sélection

  • Utiliser des caractéristiques dissemblables (orthogonales)
  • Âge en mois et âge en années sont redondants

 

Schéma illustrant le principe d’orthogonalité en sélection de caractéristiques

Machine Learning de bout en bout

sklearn.feature_selection

 

from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_selection import SelectFromModel
from sklearn.model_selection import train_test_split

# Séparer d’abord en train/test pour éviter les fuites de données X_train, X_test, y_train, y_test = train_test_split( heart_disease_df_X, heart_disease_df_y, test_size=0.2, random_state=42)
Machine Learning de bout en bout

sklearn.feature_selection (suite)

 

# Définir et ajuster le modèle random forest
rf = RandomForestClassifier(n_jobs=-1, class_weight='balanced', max_depth=5)
rf.fit(X_train, y_train)

# Définir et exécuter la sélection de variables model = SelectFromModel(rf, prefit=True) features_bool = model.get_support() features = heart_disease_df.columns[features_bool]
Machine Learning de bout en bout

Passons à la pratique !

Machine Learning de bout en bout

Preparing Video For Download...