Mini-projets
Chaque mini-projet mobilise les outils d'un chapitre du cours sur un problème complet, du modèle à la conclusion chiffrée. La règle est celle de tout le cours : un résultat ne se croit que vérifié par simulation, et chaque résultat analytique est confronté à sa contrepartie Monte-Carlo.
Chapitre 1, Probabilités
- Les lois usuelles en NumPy, recoder l'interface de
scipy.statsà la main : PMF, CDF, tirages par transformation inverse, moments, puis validation contre la bibliothèque. - TP, Le théorème central limite, voir la Gaussienne émerger de sommes de dés, d'exponentielles et d'événements rares, mesurer la loi en
de la moyenne, et rencontrer la loi qui résiste au théorème. - Roulette et martingale, l'espérance d'une stratégie de jeu : la martingale semble gagner à tous les coups, le calcul et la simulation disent le contraire.
- Codage de Huffman, l'espérance comme critère de compression : coder les caractères fréquents court, les rares long, et mesurer le gain.
- Taux d'erreur symbole en canal Gaussien, la loi normale au travail : prédire analytiquement le taux d'erreur d'une transmission numérique et le vérifier par Monte-Carlo.
Chapitre 2, Estimation
Direction d'arrivée (DOA), localiser une source sonore avec deux microphones : estimer un retard par corrélation, le convertir en angle, quantifier l'incertitude.
Analyse spectrale, la fréquence d'une sinusoïde dans du bruit : séparation des variables linéaires, recherche sur grille et descente de gradient à la main, outils
scipy, et la stratégie en deux temps qui les combine.La PCA comme moindres carrés, que devient le modèle linéaire quand la matrice
est inconnue ? Moindres carrés alternés à la main, SVD et sklearn, et la réduction de dimension comprise comme un argmin.
Chapitre 3, Détection
- Décodeur DTMF, décoder un numéro de téléphone composé en fréquences vocales : segmentation par détecteur d'énergie calibré, banque de corrélateurs sur les seize touches, et le compromis de fenêtrage qui les relie.
- Les tests classiques comme GLRT, dériver le test t, le
et l'ANOVA depuis le rapport de vraisemblance, vérifier leurs lois par Monte-Carlo, et mesurer leur puissance.
Modalités communes
Tous les notebooks suivent la même structure, imposée, celle du cours :
- le modèle, une classe au gabarit de
scipy.stats: les paramètres à la construction, une méthodervs(size, rng)pour simuler, et les méthodes analytiques du problème ; - le critère, une fonction séparée : la loss d'un problème d'estimation, le comptage d'un problème de probabilité ;
- l'algorithme à la main, implémenté et compris ;
- le bon outil, la fonction de bibliothèque qui fait la même chose, confrontée à votre implémentation ;
- la validation Monte-Carlo, systématique ;
- les tests, systématiques.
Les tests. Chaque classe et chaque fonction s'accompagne d'au moins un test automatique : une cellule qui vérifie une propriété connue et s'arrête (assert) si elle échoue. Trois familles de tests reviennent dans tous les projets : la moyenne d'ensemble contre la moyenne théorique, un cas limite calculable à la main, une propriété structurelle (une PMF somme à 1, un code se décode, une loss est nulle sans bruit). Le gabarit du premier est commun :
def test_mean(law, m=200_000, k=4):
"""Ensemble mean against theoretical mean, within k standard errors."""
rng = np.random.default_rng(0)
x = law.rvs(size=m, rng=rng)
tol = k * np.sqrt(law.var() / m) # std of the empirical mean: sigma / sqrt(m)
assert abs(x.mean() - law.mean()) < tolLa tolérance n'est pas un nombre magique : l'écart-type de la moyenne empirique vaut
Le livrable est un notebook reproductible : exécutable de bout en bout, graine aléatoire fixée en première cellule, chaque figure accompagnée d'une phrase de conclusion. Le code suit les conventions du cours, identifiants et commentaires en anglais, boucles explicites, valeurs numériques vérifiées.
