Retour au Blog
Machine Learning 25 octobre 2024 8 min de lecture

Algorithmes génétiques pour les problèmes d'optimisation réels

Utiliser des algorithmes génétiques pour la sélection de features, l'optimisation des hyperparamètres et la planification.

Quand utiliser les algorithmes génétiques

  • Problèmes combinatoires (sélection de features, planification)
  • Fonctions objectif non différentiables
  • Espaces de recherche multimodaux
  • Quand l'optimisation bayésienne est trop coûteuse

Sélection de features avec GA

from deap import base, creator, tools, algorithms

# Genome: binary vector (1=feature included, 0=excluded)
creator.create("FitnessMax", base.Fitness, weights=(1.0,))
creator.create("Individual", list, fitness=creator.FitnessMax)

def evaluate(individual):
    selected_features = [i for i, v in enumerate(individual) if v == 1]
    if not selected_features: return (0.0,)
    X_sel = X_train[:, selected_features]
    score = cross_val_score(model, X_sel, y_train, cv=3).mean()
    # Penalize using too many features
    penalty = len(selected_features) / len(individual) * 0.05
    return (score - penalty,)

Paramètres clés

  • Population : 50-200 individus
  • Taux de mutation : 0.01-0.05 par gène
  • Taux de croisement : 0.7-0.9
  • Générations : 100-500 (arrêt anticipé sur plateau)
Genetic AlgorithmOptimizationFeature SelectionEvolutionary Computing
O

Ossama Elhakki

Ingénieur IA & Systèmes ML — Maroc