Feature engineering

Développer des modèles de Machine Learning pour la production

Sinan Ozdemir

Data Scientist and Author

Introduction au feature engineering

  • Transformer les données d'entraînement pour maximiser les performances du pipeline de Machine Learning
  • Réduire la complexité de calcul
  • Exemples
    • Agréger des données de plusieurs sources
    • Construire de nouvelles features
    • Appliquer des transformations de features

pipeline de feature engineering

1 https://www.manning.com/books/feature-engineering-bookcamp
Développer des modèles de Machine Learning pour la production

Agréger des données de plusieurs sources

  • Combiner des données issues de jeux de données différents
  • Utiliser plusieurs types de données (p. ex. numériques et catégorielles)

Cela permet de :

  • Améliorer la précision des modèles
  • Permettre l'usage de modèles plus complexes

graphiques sur un écran

Développer des modèles de Machine Learning pour la production

Exemple d'agrégation de données

class DataAggregator:
    def __init__(self):
        pass

    def fit(self, X, y=None):
        return self  # nothing to fit

    def transform(self, X, y=None):
        # Load data from multiple sources
        data1 = pd.read_csv('data1.csv')
        data2 = pd.read_csv('data2.csv')
        data3 = pd.read_csv('data3.csv')

        # Combine data from all sources (including X) into a single data frame
        aggregated_data = pd.concat([X, data1, data2, data3], axis=0)

        return aggregated_data  # Return aggregated data
Développer des modèles de Machine Learning pour la production

Construction de features

  • Créer de nouvelles features à partir de l'existant
  • Générer de nouvelles features depuis des données préexistantes
  • Améliorer les performances du modèle
  • Renforcer l'interprétabilité du modèle
Développer des modèles de Machine Learning pour la production

Exemple de construction de features

class FeatureConstructor:
    def __init__(self):
        pass

    def fit(self, X, y=None):
        return self

    def transform(self, X, y=None):
        # Calculate the mean of each column in the data
        mean_values = X.mean()

        # Create new features based on the mean values
        X['mean_col1'] = X['col1'] - mean_values['col1']
        X['mean_col2'] = X['col2'] - mean_values['col2']

        return X  # Return the augmented data set
Développer des modèles de Machine Learning pour la production

Transformations de features

Transformer des features existantes sur place

  • Normaliser les distributions
  • Supprimer les valeurs aberrantes
  • Améliorer la précision et les performances du modèle
```py
```py

Développer des modèles de Machine Learning pour la production

Sélection de features

Sélectionner un sous-ensemble de features à partir d'un ensemble plus large en supprimant les variables redondantes et non pertinentes

  • Réduit le surapprentissage
  • Améliore la précision et les performances du modèle
  • Renforce l'interprétabilité du modèle

sélection de features

1 https://www.manning.com/books/feature-engineering-bookcamp
Développer des modèles de Machine Learning pour la production

Exemple de feature engineering (suite)

```py
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.feature_selection import SelectKBest, chi2

from sklearn.pipeline import Pipeline

pipeline = Pipeline([  # Define feature engineering pipeline

    ('aggregate', DataAggregator()),  # Aggregate data from multiple sources
    ('construction', FeatureConstructor()),  # Feature Construction

    ('scaler', StandardScaler()),  # Feature Transformation

    ('select', SelectKBest(chi2, k=10)),  # Feature Selection
])
X_transformed = pipeline.fit_transform(X)  # Fit and transform data using pipeline
Développer des modèles de Machine Learning pour la production

Approfondir le feature engineering

livre sur le feature engineering

Développer des modèles de Machine Learning pour la production

Passons à la pratique !

Développer des modèles de Machine Learning pour la production

Preparing Video For Download...