Contexte pédagogique
Notre série ML ML/DataScienceWithAgents/01-Fondations/ et 02-Preprocessing/ couvre le gradient descent, SGD, Adam, RMSProp — mais reste sur l'optimisation différentiable continue. Les optimiseurs pour problèmes convexes structurés sont absents :
- SMO (Sequential Minimal Optimization) pour SVM : décomposition du QP dual en sous-problèmes 2-variables, KKT complementarity, working set selection.
- ADMM (Alternating Direction Method of Multipliers) : décomposition de problèmes contraints (Lasso, group Lasso, sparse logistic regression), update primal/dual alternés, pénalité augmentée.
- Proximal methods : ISTA/FISTA pour Lasso (
prox_{λ||·||₁}), forward-backward splitting, algorithmes du premier ordre pour la parcimonie.
Ces méthodes sont des piliers de la ML classique (avant le deep learning), encore utilisées pour les modèles linéaires sparse, SVM, et le compressed sensing. Elles sont absentes du dépôt.
Acceptance
Bloc A — from scratch (le geste fondateur)
- Notebook SMO-from-scratch : implémenter SMO pour SVM binaire (soft-margin, kernel RBF), décomposition 2-variables, working set selection (heuristic de Platt), critère d'arrêt (KKT + gap duality), comparaison accuracy/temps avec scikit-learn (validation référence). Sans
sklearn.svm.SVC.fit interne, on réimplémente la boucle SMO.
- Notebook ADMM-from-scratch : implémenter ADMM pour
min ½||Ax - b||² + λ||x||₁ (Lasso), update steps x^{k+1} = (AᵀA + ρI)⁻¹(Aᵀb + ρ(z^k - u^k)), z^{k+1} = soft_threshold(x^{k+1} + u^k, λ/ρ), u^{k+1} = u^k + x^{k+1} - z^{k+1}, mesure convergence objective + dual residual.
- Notebook Proximal-from-scratch : implémenter ISTA (forward-backward splitting, gradient step + soft-thresholding), FISTA (acceleration par momentum inertiel, taux de convergence O(1/k²)), comparaison ISTA vs FISTA sur Lasso sparse recovery (signal recovery from compressed measurements).
- Stack cohérente : PyTorch + numpy + scipy (pour solveurs linéaires). Pas de
cvxpy, pas de sklearn.svm pour l'optimisation interne, pas de sklearn.linear_model. On réimplémente.
Bloc B — geste SOTA / lib complémentaire (le pendant industriel)
- Notebook SVM-SOTA-comparison :
sklearn.svm.SVC (avec kernel RBF, soft-margin) sur le même dataset binaire que Bloc A.1. Comparaison accuracy / temps d'entraînement / nombre de support vectors trouvés. Justification : scikit-learn est l'implémentation SOTA standard, inclut SMO optimisé (LIBSVM backend).
- Notebook Lasso-SOTA-comparison :
sklearn.linear_model.Lasso (coordinate descent) + sklearn.linear_model.LassoCV (cross-validation du λ) sur le même problème que Bloc A.2 et A.3. Comparaison objective value / sparsité de la solution / temps. Justification : scikit-learn inclut les implémentations optimisées (coordinate descent pour Lasso, LARS, LASSO-LARS).
- Notebook CVXPY-OPT :
cvxpy formulation déclarative d'un problème Lasso et résolution via ECOS/SCS, comparaison avec les solutions ADMM/Proximal sur le même problème. Justification : cvxpy est l'API de modeling standard pour la convex optimization, sépare modeling de solving. Permet de valider que les solvers from scratch convergent vers le même optimum global.
- Comparaison explicite Bloc A vs Bloc B : tableau récapitulatif — objective value final, temps d'entraînement, nombre d'itérations, lignes de code, capacité à scaler (n features). Justifie le pourquoi du from scratch (compréhension convergence, dualité, parcimonie) et le quand du SOTA (production, gros problèmes).
Branchement pédagogique
À rattacher à ML/DataScienceWithAgents/01-Fondations/ : créer 1.5-Convex-Optimization-from-scratch/ (3 notebooks A) + 1.6-Convex-Optimization-SOTA/ (3 notebooks B). Les notebooks 1.1-1.4 couvrent gradient descent différentiable, ceux-ci étendent au non-différentiable.
Cohérence maison
- Notebooks en français, exécutables de bout en bout avec outputs, ≥3 exercices par notebook
- Dataset réduit : classification binaire synthétique (2D, 200 points), régression sparse synthétique (n=100, p=500)
- C.1 strict : pas d'erreur volontaire
- C.2 strict : outputs commités
Scope disjoint
- Pas de deep learning optimization (SGD/Adam déjà couverts en 1.3)
- Pas de second-order methods (Newton, quasi-Newton BFGS — autre sujet, non couvert)
- Pas de convex optimization sur GPU
- Pas d'élargissement silencieux de 1.1-1.4
Notes
- Le notebook SMO est l'opportunité de formaliser la dualité KKT et la complementarity condition — pont avec d'autres notebooks théoriques.
- Si une ramification .NET s'avère pertinente (Accord.NET a
SequentialMinimalOptimization), créer un jumeau C# ; sinon Python seul avec justification.
🤖 Generated with Claude Code
Contexte pédagogique
Notre série ML
ML/DataScienceWithAgents/01-Fondations/et02-Preprocessing/couvre le gradient descent, SGD, Adam, RMSProp — mais reste sur l'optimisation différentiable continue. Les optimiseurs pour problèmes convexes structurés sont absents :prox_{λ||·||₁}), forward-backward splitting, algorithmes du premier ordre pour la parcimonie.Ces méthodes sont des piliers de la ML classique (avant le deep learning), encore utilisées pour les modèles linéaires sparse, SVM, et le compressed sensing. Elles sont absentes du dépôt.
Acceptance
Bloc A — from scratch (le geste fondateur)
sklearn.svm.SVC.fitinterne, on réimplémente la boucle SMO.min ½||Ax - b||² + λ||x||₁(Lasso), update stepsx^{k+1} = (AᵀA + ρI)⁻¹(Aᵀb + ρ(z^k - u^k)),z^{k+1} = soft_threshold(x^{k+1} + u^k, λ/ρ),u^{k+1} = u^k + x^{k+1} - z^{k+1}, mesure convergence objective + dual residual.cvxpy, pas desklearn.svmpour l'optimisation interne, pas desklearn.linear_model. On réimplémente.Bloc B — geste SOTA / lib complémentaire (le pendant industriel)
sklearn.svm.SVC(avec kernel RBF, soft-margin) sur le même dataset binaire que Bloc A.1. Comparaison accuracy / temps d'entraînement / nombre de support vectors trouvés. Justification : scikit-learn est l'implémentation SOTA standard, inclut SMO optimisé (LIBSVM backend).sklearn.linear_model.Lasso(coordinate descent) +sklearn.linear_model.LassoCV(cross-validation du λ) sur le même problème que Bloc A.2 et A.3. Comparaison objective value / sparsité de la solution / temps. Justification : scikit-learn inclut les implémentations optimisées (coordinate descent pour Lasso, LARS, LASSO-LARS).cvxpyformulation déclarative d'un problème Lasso et résolution via ECOS/SCS, comparaison avec les solutions ADMM/Proximal sur le même problème. Justification :cvxpyest l'API de modeling standard pour la convex optimization, sépare modeling de solving. Permet de valider que les solvers from scratch convergent vers le même optimum global.Branchement pédagogique
À rattacher à
ML/DataScienceWithAgents/01-Fondations/: créer1.5-Convex-Optimization-from-scratch/(3 notebooks A) +1.6-Convex-Optimization-SOTA/(3 notebooks B). Les notebooks 1.1-1.4 couvrent gradient descent différentiable, ceux-ci étendent au non-différentiable.Cohérence maison
Scope disjoint
Notes
SequentialMinimalOptimization), créer un jumeau C# ; sinon Python seul avec justification.🤖 Generated with Claude Code