Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
"\n",
"## Navigation\n",
"\n",
"| précédent | Suivant |\n",
"| Précédent | Suivant |\n",
"|-----------|--------|\n",
"| [Infer-2-Gaussian-Mixtures](Infer-2-Gaussian-Mixtures.ipynb) | [Infer-3-Factor-Graphs](Infer-3-Factor-Graphs.ipynb) |\n",
"\n",
Expand Down Expand Up @@ -393,7 +393,7 @@
"1. L'observation est déterministe (`ObservedValue`)\n",
"2. Le prior est suffisamment large pour \"accepter\" cette valeur\n",
"\n",
"> **règle pratique** : Si votre prior a une precision `prec`, alors les observations situees a plus de `3/sqrt(prec)` ecarts-types du centre auront un support quasi-nul. Avec `prec=1000`, cela represente environ `0.1` unites autour de la moyenne."
"> **règle pratique** : Si votre prior a une precision `prec`, alors les observations situees a plus de `3/sqrt(prec)` unites (soit 3 ecarts-types) du centre auront un support quasi-nul. Avec `prec=1000`, cela represente environ `0.1` unites autour de la moyenne."
]
},
{
Expand Down Expand Up @@ -1091,6 +1091,37 @@
"> **Leçon de debugging** : face à un résultat EP surprenant, **augmentez `NumberOfIterations` et observez la trajectoire** plutôt que le seul point final. Une oscillation précoce qui se stabilise (EP ici) se distingue d'une divergence franche (valeurs NaN/Inf, ou croissance monotone non bornée). Le réflexe « EP = instable » est juste mais doit être **diagnostiqué, jamais présupposé** : sur modèle conjugué EP est impeccable (cf. §3 ci-dessus), sur modèle non-conjugué elle oscille mais converge si le modèle est bien posé. C'est cette nuance que la simple ligne de tableau ne pouvait pas capturer.\n"
]
},
{
"cell_type": "markdown",
"id": "c3138f24",
"metadata": {
"papermill": {
"duration": 0.006957,
"end_time": "2026-06-06T14:50:44.751168+00:00",
"exception": false,
"start_time": "2026-06-06T14:50:44.744211+00:00",
"status": "completed"
},
"tags": []
},
"source": [
"## Exercice 1 : Diagnostic d'un modèle de melange gaussien\n",
"\n",
"**Objectif** : Identifiez et corrigez les problemes dans un modèle de melange gaussien a 2 composantes.\n",
"\n",
"**Contexte** : Un modèle de melange gaussien tente de separer des données issues de deux distributions distinctes, mais l'inference produit des résultats inattendus (moyennes identiques ou divergence).\n",
"\n",
"**étapes** :\n",
"1. Analysez le modèle fourni et identifiez au moins 2 problemes parmi : prior symetrique, algorithme mal adapte, observation hors-support\n",
"2. Corrigez chaque problème en vous basant sur les bonnes pratiques vues dans ce notebook\n",
"3. Comparez les résultats obtenus avec EP et VMP sur votre modèle corrige\n",
"\n",
"**Indices** :\n",
"- **Indice** 1 : Les composantes d'un melange doivent avoir des priors distincts pour eviter le label switching\n",
"- **Indice** 2 : Testez avec `engine.ShowProgress = true` pour observer la convergence\n",
"- **Indice** 3 : Utilisez `DiagnosticGaussian()` pour verifier la sante des posterieurs"
]
},
{
"cell_type": "code",
"execution_count": 8,
Expand Down Expand Up @@ -1145,37 +1176,6 @@
"Console.WriteLine(\"Exercice a completer : diagnostiquer et corriger le melange gaussien\");"
]
},
{
"cell_type": "markdown",
"id": "c3138f24",
"metadata": {
"papermill": {
"duration": 0.006957,
"end_time": "2026-06-06T14:50:44.751168+00:00",
"exception": false,
"start_time": "2026-06-06T14:50:44.744211+00:00",
"status": "completed"
},
"tags": []
},
"source": [
"## Exercice 1 : Diagnostic d'un modèle de melange gaussien\n",
"\n",
"**Objectif** : Identifiez et corrigez les problemes dans un modèle de melange gaussien a 2 composantes.\n",
"\n",
"**Contexte** : Un modèle de melange gaussien tente de separer des données issues de deux distributions distinctes, mais l'inference produit des résultats inattendus (moyennes identiques ou divergence).\n",
"\n",
"**étapes** :\n",
"1. Analysez le modèle fourni et identifiez au moins 2 problemes parmi : prior symetrique, algorithme mal adapte, observation hors-support\n",
"2. Corrigez chaque problème en vous basant sur les bonnes pratiques vues dans ce notebook\n",
"3. Comparez les résultats obtenus avec EP et VMP sur votre modèle corrige\n",
"\n",
"**Indices** :\n",
"- **Indice** 1 : Les composantes d'un melange doivent avoir des priors distincts pour eviter le label switching\n",
"- **Indice** 2 : Testez avec `engine.ShowProgress = true` pour observer la convergence\n",
"- **Indice** 3 : Utilisez `DiagnosticGaussian()` pour verifier la sante des posterieurs"
]
},
{
"cell_type": "code",
"execution_count": 9,
Expand Down Expand Up @@ -1737,6 +1737,34 @@
"> La force de l'effet du prior depend du ratio entre les pseudo-observations du prior ($\\alpha + \\beta$) et les observations reelles (5 dans cet exemple)."
]
},
{
"cell_type": "markdown",
"id": "835a51ef",
"metadata": {
"papermill": {
"duration": 0.006704,
"end_time": "2026-06-06T14:50:47.315549+00:00",
"exception": false,
"start_time": "2026-06-06T14:50:47.308845+00:00",
"status": "completed"
},
"tags": []
},
"source": [
"### Exercice 2 : Impact du prior sur un diagnostic medical\n",
"\n",
"**Objectif** : Modeliser un test de depistage avec des priors différents et observer l'impact sur le diagnostic posterieur.\n",
"\n",
"**Contexte** : Un test medical a un taux de faux positifs de 5% et un taux de sensibilite de 90%. La prevalence de la maladie est de 1%. Vous observez un test positif. Quelle est la probabilite que le patient soit reellement malade ?\n",
"\n",
"**Indices** :\n",
"- **Indice** 1 : Modelisez la probabilite de maladie avec `Variable.Beta(alpha, beta)` ou `Variable.Bernoulli(prevalence)`\n",
"- **Indice** 2 : Testez avec `Beta(1, 99)` (prevalence 1%), puis `Beta(10, 90)` (prevalence 10%)\n",
"- **Étape** 1 : définir le modèle avec la probabilite de maladie comme variable latente\n",
"- **Étape** 2 : Ajouter la vraisemblance du test (sensibilite et taux de faux positifs)\n",
"- **Étape** 3 : Observer un test positif et calculer le posterieur pour différentes prevalences"
]
},
{
"cell_type": "code",
"execution_count": 13,
Expand Down Expand Up @@ -1772,34 +1800,6 @@
"Console.WriteLine(\"Exercice a completer : test de depistage medical\");"
]
},
{
"cell_type": "markdown",
"id": "835a51ef",
"metadata": {
"papermill": {
"duration": 0.006704,
"end_time": "2026-06-06T14:50:47.315549+00:00",
"exception": false,
"start_time": "2026-06-06T14:50:47.308845+00:00",
"status": "completed"
},
"tags": []
},
"source": [
"### Exercice 2 : Impact du prior sur un diagnostic medical\n",
"\n",
"**Objectif** : Modeliser un test de depistage avec des priors différents et observer l'impact sur le diagnostic posterieur.\n",
"\n",
"**Contexte** : Un test medical a un taux de faux positifs de 5% et un taux de sensibilite de 90%. La prevalence de la maladie est de 1%. Vous observez un test positif. Quelle est la probabilite que le patient soit reellement malade ?\n",
"\n",
"**Indices** :\n",
"- **Indice** 1 : Modelisez la probabilite de maladie avec `Variable.Beta(alpha, beta)` ou `Variable.Bernoulli(prevalence)`\n",
"- **Indice** 2 : Testez avec `Beta(1, 99)` (prevalence 1%), puis `Beta(10, 90)` (prevalence 10%)\n",
"- **Étape** 1 : définir le modèle avec la probabilite de maladie comme variable latente\n",
"- **Étape** 2 : Ajouter la vraisemblance du test (sensibilite et taux de faux positifs)\n",
"- **Étape** 3 : Observer un test positif et calculer le posterieur pour différentes prevalences"
]
},
{
"cell_type": "markdown",
"id": "68678e15",
Expand Down
6 changes: 3 additions & 3 deletions MyIA.AI.Notebooks/Probas/Infer/Infer-Glossary.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ Ce glossaire recapitule les termes techniques utilises dans la serie de notebook
| Terme | Definition | Notebook(s) |
|-------|------------|-------------|
| **EP (Expectation Propagation)** | Algorithme d'inference approchee qui propage des messages gaussiens entre facteurs. Rapide mais peut diverger. | Tous |
| **VMP (Variational Message Passing)** | Algorithme variationnel qui minimise la divergence KL. Plus stable que EP, mais sous-estime l'incertitude. | Infer-2, Infer-11 |
| **Gibbs Sampling** | Methode MCMC qui echantillonne chaque variable conditionnellement aux autres. Exact asymptotiquement mais lent. | Infer-13 |
| **VMP (Variational Message Passing)** | Algorithme variationnel qui minimise la divergence KL. Plus stable que EP, mais sous-estime l'incertitude. | Infer-1b, Infer-2, Infer-2b, Infer-10, Infer-11 |
| **Gibbs Sampling** | Methode MCMC qui echantillonne chaque variable conditionnellement aux autres. Exact asymptotiquement mais lent. | Infer-1 |
| **Message Passing** | Paradigme ou les distributions sont propagees entre variables via des "messages". | Infer-3, Infer-2b |

---
Expand All @@ -23,7 +23,7 @@ Ce glossaire recapitule les termes techniques utilises dans la serie de notebook
| **Beta** | [0, 1] | alpha, beta | Prior sur probabilités |
| **Gaussian** | R | mean, precision | Valeurs continues |
| **TruncatedGaussian** | [a, b] | mean, variance, lower, upper | Valeurs contraintes |
| **Gamma** | R+ | shape, scale | Prior sur precisions |
| **Gamma** | R+ | shape, rate (`GammaFromShapeAndRate`) | Prior sur precisions |
| **Dirichlet** | Simplex | alpha[] | Prior sur poids de mélange |
| **Discrete** | {0, ..., K-1} | probs[] | Variables categoriques |

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
date: '2026-10-08'
by: myia-po-2027:CoursIA
python_sha: bf93bf3fd1522445e6a1ecce8c5d8e65303aff6e
csharp_sha: f6bb9db7c5fbcf8e6c640a3b360e7553586b5246
content_python_sha: 1bbe48aeb3a65546ff1de2d0e001cf286fe1cb0082621919c196495c890704b9
content_csharp_sha: ae4dfbaf07293ce9bcd1bffbdae79da1417be5c8e328215a44e119b298dae997
Loading