From 2b1e513c24a2805a6b7ea20b7e113a77969e31c8 Mon Sep 17 00:00:00 2001 From: Woodpecker CI Date: Tue, 23 Dec 2025 12:51:44 +0000 Subject: [PATCH] Deploy site [CI SKIP] --- index.html | 52 ++++++------- search.json | 4 +- suivi/2025-13/2025-13.html | 2 +- suivi/2025-14/2025-14.html | 2 +- suivi/2025-15/2025-15.html | 2 +- suivi/2025-16/2025-16.html | 2 +- suivi/2025-17/2025-17.html | 2 +- suivi/2025-18/2025-18.html | 2 +- suivi/2025-19/2025-19.html | 2 +- suivi/2025-20/2025-20.html | 2 +- suivi/2025-21/2025-21.html | 2 +- suivi/2025-22/2025-22.html | 2 +- suivi/2025-24/2025-24.html | 2 +- suivi/2025-25/2025-25.html | 2 +- suivi/2025-27/2025-27.html | 2 +- suivi/2025-29/2025-29.html | 2 +- suivi/2025-33/2025-33.html | 2 +- suivi/2025-35/2025-35.html | 2 +- suivi/2025-38/2025-38.html | 2 +- suivi/2025-43/2025-43.html | 2 +- suivi/2025-44/2025-44.html | 2 +- suivi/2025-45/2025-45.html | 2 +- suivi/2025-50/2025-50.html | 2 +- suivi/2025-51/2025-51.html | 154 ++++++++++++++++++++++++++++++++----- 24 files changed, 182 insertions(+), 70 deletions(-) diff --git a/index.html b/index.html index 8fb680b..27eedac 100644 --- a/index.html +++ b/index.html @@ -224,14 +224,14 @@ window.Quarto = {
Date de publication
-

15 décembre 2025

+

23 décembre 2025

Modifié
-

15 décembre 2025

+

23 décembre 2025

@@ -263,7 +263,7 @@ Agenda

Journaux

-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+

Baldock iid

diff --git a/search.json b/search.json index 5e1e97c..a3732de 100644 --- a/search.json +++ b/search.json @@ -634,14 +634,14 @@ "href": "suivi/2025-51/2025-51.html", "title": "Bilan semaine 51 2025 : 15 décembre - 19 décembre", "section": "", - "text": "Passer version article flat dans Gitlab du papier et nettoyer au minimum sur une branche clean.\n⚠️ IL Y A UNE TYPO SUR LE SIGNE DE L’ENTROPIE POUR LE PAPIER: - \\mathcal{H} au lieu de +\\mathcal{H}\nFaire tourner clustering sur Trojelsgaard\nPetites opérations sur les OTUs (regarder la matrice dans les yeux):\n\nRanger les OTUs par variances (i.e. sd(OTU_j))\nDessiner les graphiques : \\mathbb{V}[OTU] = f(\\mathbb{E}[OTU]), \\frac{\\mathbb{V}[OTU]}{\\mathbb{E}[OTU]^2} = f(\\mathbb{E}[OTU]) et \\frac{\\mathbb{V}[OTU]}{\\mathbb{E}[OTU]} = f(\\mathbb{E}[OTU]) (\\approx 1) si les données suivent une loi de Poisson.\nRegarder la proportion de 1. taxon rares, 2. zeros.\nFaire des coupures selon niveaux taxonomiques et regarder si \\mathbb{V}_{\\text{intra}} \\approx \\mathbb{V}_{\\text{inter}}\nBonus: faire ça dans qmd et voir si forge permet gitlab pages\n\nFaire tourner un LBM sur Human Gut et voir si ça plante sinon:\n\nFaire LBM sur niveau taxonomique grossier, initialiser avec le résultat pour un niveau plus fin et ainsi de suite.\n\nRelire Peixoto (2014)\n\nRegarder les gens qui citent les travaux de Peixoto\n\nImplémentation blockmodels LBM avec covariables sur proportions (voir Équation 1)\n\n\n\n\n\n\n\nIdées\n\n\n\n\nTravailler sur Fungus Tree network\nComparaison covar prop avec GREMLINS multipartite sur (log(dist_phylo), fungus-tree)\nTrouver manière de faire un compromis : \\ell(Y,Z,W;\\theta) - \\lambda d(C(W),C_0) avec C(W) le clustering seulement sur la base de la structure LBM et C_0 le clustering de l’arbre. Problème d est une distance entre partition, comment optimiser dessus ?\nMise à jour partielle des \\tau : ce qui pose soucis c’est les gros calculs matriciels (c’est vraiment vrai?). Donc sorte de “stochastic” VEM où on update seulement une partie des \\tau à chaque itération. Et échantillonnage stratifié selon l’arbre ?\nChercher à formuler le problème dual (s’il existe?) de l’optimisation du LBM. Peut-être possible d’aller plus vite alors ?\n\n\n\n\nClustering unipartite j’ai cassé une fonction de distance à vérifier et réparer\nCodes pour le papier :\n\nNettoyer les scripts\nFaire un joli README\n❓Faire des notebooks\n\nRéussir à reproduire résultat de Abramov et al. (s. d.)\nMaitriser graphtools de Peixoto pour essayer d’utiliser l’arbre taxonomique sur graphe de cooccurence inférer par SparCC\nMaitriser SparCC\n👶 (délégué à Mona) Clustering sur Doré :\n\nRegarder pour les couples date+nom les études et le nombre de réseaux analysables (Possible demander à Élisa)\n\n⌛ Chamberlain et al semble intéressant à regarder ! Voir le Rmarkdown\n\nClusteriser sur la base des noms et voir parmi les réseaux Européens (désagrégés ?)\nSi M > 10, alors voir si je retrouve les mêmes résultats que dans les études.\nRegarder Largest gap sur réseaux Doré\n⌛ Essayer clustering sur supinfo\n\nCAH et Kmeans tendent vers faire K = 13 clusters sur les supinfos\nEnrichir avec des métriques sur les réseaux (nestedness, connectance autres ?)\nDemander à Elisa pour la signification des métadonnées\nDemander à Elisa une fois vu cohérences de groupe voir pour interprétation écologiques ?\nAlgo de clustering sur les groupes trouvés\n\n\n\n\n\n\n\nToujours modèle LBM mais avec probas d’appartenance pour les colonnes variables:\n\\begin{align*}\nZ_i &\\sim \\mathcal{M}(1; \\pi_1, \\dots, \\pi_Q), \\sum_{q=1}^{Q} \\pi_q = 1\\\\\nW_j &\\sim \\mathcal{M}(1; \\rho_1^j, \\dots, \\rho_R^j), \\sum_{r=1}^{R} \\rho_r^j = 1\\\\\nY_{i,j}&\\mid Z_i = q, W_j = r \\sim \\mathcal{F}(\\alpha_{qr})\n\\end{align*}\nInférence variationnelle donc \\ell(Y;\\pmb{\\theta}) \\geq \\mathcal{J}(\\mathcal{R},\\pmb{\\theta}) avec\n\n\\mathcal{J}(\\mathcal{R},\\pmb{\\theta})= \\sum_{i = 1}^{n_1}\\sum_{j=1}^{n_2}\\sum_{q \\in \\mathcal{Q}_1} \\sum_{r \\in \\mathcal{Q}_2} \\tau_{iq}^{1} \\tau_{jr}^{2} \\log f(Y_{ij}; \\alpha_{qr})\n + \\sum_{i=1}^{n_1} \\sum_{q \\in \\mathcal{Q}_1} \\tau_{iq}^{1} \\log \\pi_{\\color{black}q} + \\sum_{j=1}^{n_2} \\sum_{r \\in \\mathcal{Q}_2} \\tau_{jr}^{2} \\log \\rho_{\\color{black}r} \\\\\n - \\sum_{i=1}^{n_1} \\tau_{iq}^{1} \\log \\tau_{iq}^{1} - \\sum_{j=1}^{n_2} \\tau_{jr}^{2} \\log \\tau_{jr}^{2}\n\nPlusieurs possibilités pour la définition de \\rho_r^j\n\n\nDénominateur pas correct, ne somme pas à 1.\n\\rho_r^j = \\frac{\\exp{\\beta_r X_j\\mathbf{1}_{\\{r\\neq R\\}}}}{1+\\sum_{s=1}^{R-1} \\beta_s X_j}, \\beta_R = 0 et \\rho_R^{j} = \\frac{1}{1+\\sum_{s=1}^{R-1} \\beta_s X_j} (pas de compréhension intuitive)\nLa partie pertinente de l’ELBO devient: \n P((\\beta_r)_{r=1,\\dots,R}, (X_j)_{j=1,\\dots,n_2}, (\\tau_{jr})_{\\substack{j=1,\\dots,n_2\\\\r=1,\\dots,R}} ) = \\sum_{j=1}^{n_2} \\sum_{r=1}^{R} [\\tau_{jr} (\\beta_r X_j \\mathbb{1}_{r\\neq R} - \\log (1+\\sum_{s=1}^{R-1} \\beta_s X_j))]\n\nEt on obtient la dérivée partielle par rapport à \\beta_t comme: \\begin{align*}\n\\dfrac{\\partial P}{\\partial \\beta_t}&((\\beta_r)_{r=1,\\dots,R}, (X_j)_{j=1,\\dots,n_2}, (\\tau_{jr})_{\\substack{j=1,\\dots,n_2\\\\r=1,\\dots,R}} ) = \\sum_{j=1}^{n_2} \\biggl[ \\tau_{jt} X_j - \\frac{X_j}{1+\\sum_{s=1}^{R-1} \\exp{\\beta_s X_j}} \\biggr]\\\\\n& = \\sum_{j=1}^{n_2} \\biggl[\\bigl(\\tau_{jt} - \\frac{1}{1+\\sum_{s=1}^{R-1} \\beta_s X_j} \\bigr) X_j\\biggr] = \\sum_{j=1}^{n_2} \\biggl[\\bigl(\\tau_{jt} - \\rho_R^j \\bigr) X_j\\biggr]\n\\end{align*}\n❓ Gradient mesure l’écart entre probas a posteriori et la proba a priori du groupe de référence ?\nConclusion: Il manque l’exponentielle cette formulation ne somme pas à 1.\n\n\n\nAvec \\rho_r^j = \\frac{\\exp{\\beta_r X_j}}{\\sum_{s=1}^{R} \\exp{\\beta_s X_j}} = \\sigma(\\pmb{\\beta} \\pmb{X})_{r,j}, où \\sigma désigne le softmax. Mais il y a besoin de poser une contrainte sur l’un des (\\beta_r)_{r=1,\\dots,R}, ici \\beta_R = 0.\nLa partie pertinente de l’ELBO devient: \n P((\\beta_r)_{r=1,\\dots,R}, (X_j)_{j=1,\\dots,n_2}, (\\tau_{jr})_{\\substack{j=1,\\dots,n_2\\\\r=1,\\dots,R}} ) = \\sum_{j=1}^{n_2} \\sum_{r=1}^{R} [\\tau_{jr} (\\beta_r X_j - \\log (\\sum_{s=1}^{R} \\exp{\\beta_s X_j}))]\n\\tag{1}\nEt on obtient la dérivée partielle par rapport à \\beta_t comme: \\begin{align*}\n\\dfrac{\\partial P}{\\partial \\beta_t}&((\\beta_r)_{r=1,\\dots,R}, (X_j)_{j=1,\\dots,n_2}, (\\tau_{jr})_{\\substack{j=1,\\dots,n_2\\\\r=1,\\dots,R}} ) = \\sum_{j=1}^{n_2} \\biggl[ \\tau_{jt} X_j - \\frac{X_j \\exp{\\beta_t X_j}}{\\sum_{s=1}^{R} \\exp{\\beta_s X_j}} \\biggr]\\\\\n& = \\sum_{j=1}^{n_2} \\biggl[\\bigl(\\tau_{jt} - \\sigma(\\pmb{\\beta} \\pmb{X})_{t,j}\\bigr) X_j\\biggr] = \\sum_{j=1}^{n_2} \\biggl[\\bigl(\\tau_{jt} - \\rho_t^j \\bigr) X_j\\biggr]\n\\end{align*}\n\n\n\n\n\nLire article multi-niveaux Saint-Clair\n🆕 🔎 Trouver des papiers:\n\nLBM Negative Binomial\nNetwork inference through sample comparison\n\nIdée des groupes sur la base de distance phylogénétique:\n\nEn train de comprendre les distances que phyloseq permet de calculer sur notre exemple\nEn train de lire sur Principle coordinate analysis : https://openplantpathology.github.io/OPP_Workshop_Multivariate/2-MV_PCO.html\nParametric t-SNE pour avoir une unique représentation latente (inconvénient utilise du Deep Learning)\nLire Papier UniFrac\n\n\n\n\n\n\neasy16s : se renseigner sur\n\n\\alpha, \\beta diversité\nHeatmap\n\nRegarder SPARTA Rennes\nEcrire et étudier les modèles pour différents niveaux taxonomiques.\n🆕 Regarder NetComi\n🆕 Regarder OneNet car aggrégation plus robuste\n🆕 Réfléchir sens d’aggréger les données ou de les diviser\n\n\n\n\n\nLancer colBiSBM sur OTU\\times Sample → problème du chargement en mémoire des données à voir\nLancer colSBM sur OTU\\times OTU\nTabNet pratiquer les exercices\n🆕 SparCC à différent niveaux\n🆕 SBM à différent niveaux\n🆕⌛ Tree-PLN à différents niveaux\n\n\n\n\nPlus sur le temps long, à regarder\n\nGT causalité\nDaria Bystrova lire présentation Bystrova (s. d.) (Meek rules, V-structure)" + "text": "✅ C’est fait Passer version article flat dans Gitlab du papier et nettoyer au minimum sur une branche clean.\n✅ Corrigée !⚠️ IL Y A UNE TYPO SUR LE SIGNE DE L’ENTROPIE POUR LE PAPIER: - \\mathcal{H} au lieu de +\\mathcal{H}\nFaire tourner clustering sur Trojelsgaard\nPetites opérations sur les OTUs (regarder la matrice dans les yeux):\n\nRanger les OTUs par variances (i.e. sd(OTU_j))\n✅ Dans un RMD sur Human Microbiome Compendium Dessiner les graphiques : \\mathbb{V}[OTU] = f(\\mathbb{E}[OTU]), \\frac{\\mathbb{V}[OTU]}{\\mathbb{E}[OTU]^2} = f(\\mathbb{E}[OTU]) et \\frac{\\mathbb{V}[OTU]}{\\mathbb{E}[OTU]} = f(\\mathbb{E}[OTU]) (\\approx 1) si les données suivent une loi de Poisson.\n\nHMC sur-dispersés (au-dessus bissectrice)\nEnterotype phyloseq sous-disp\n\nRegarder la proportion de 1. taxon rares, 2. zeros.\nFaire des coupures selon niveaux taxonomiques et regarder si \\mathbb{V}_{\\text{intra}} \\approx \\mathbb{V}_{\\text{inter}}\nBonus: faire ça dans qmd et voir si forge permet gitlab pages\n\n✅ Faire tourner un LBM sur Human Gut et voir si ça plante sinon, ça plante, la ram est surchargée.\n\n⌛ Je tente avec SparseBM de JBL sur Python\nFaire LBM sur niveau taxonomique grossier, initialiser avec le résultat pour un niveau plus fin et ainsi de suite.\n\n⌛ Prendre jeu de données exemple de phyloseq :\n\n✅ 😞 enterotype tourne mais pas bon résultats (semble deux blocs échantillons mais pas vu par le modèle).\n🕑 des jeux de données de Mahendra ne tourne pas (phase forward interminable).\n\nRelire Peixoto (2014)\n\nRegarder les gens qui citent les travaux de Peixoto\n\nImplémentation blockmodels LBM avec covariables sur proportions (voir Équation 1)\n\n\n\n\n\n\n\nIdées\n\n\n\n\nTravailler sur Fungus Tree network\nComparaison covar prop avec GREMLINS multipartite sur (log(dist_phylo), fungus-tree)\nTrouver manière de faire un compromis : \\ell(Y,Z,W;\\theta) - \\lambda d(C(W),C_0) avec C(W) le clustering seulement sur la base de la structure LBM et C_0 le clustering de l’arbre. Problème d est une distance entre partition, comment optimiser dessus ?\n⌛ Mise à jour partielle des \\tau : ce qui pose soucis c’est les gros calculs matriciels (c’est vraiment vrai?). Donc sorte de “stochastic” VEM où on update seulement une partie des \\tau à chaque itération. Et échantillonnage stratifié selon l’arbre ?\n\n⌛ Simulations avec n_2 croissant lancée sur Migale\nRéimplementé VE Bernoulli dans colSBM pour Bipartite et début implémentation Stochastic VE. En fait le problème des calculs matriciels Y\\times(\\tau^{(1)})^{\\top} (n_2^2) donc besoin de sous-échantillonner les noeuds de l’autre dimension à mettre à jour.\n\n✅ Inutile car besoin du primal Chercher à formuler le problème dual (s’il existe?) de l’optimisation du LBM. Peut-être possible d’aller plus vite alors ? Équation 2\n\n\n\n\nClustering unipartite j’ai cassé une fonction de distance à vérifier et réparer\nCodes pour le papier :\n\nNettoyer les scripts\nFaire un joli README\n❓Faire des notebooks\n\nRéussir à reproduire résultat de Abramov et al. (s. d.)\nMaitriser graphtools de Peixoto pour essayer d’utiliser l’arbre taxonomique sur graphe de cooccurence inférer par SparCC\nMaitriser SparCC\n👶 (délégué à Mona) Clustering sur Doré :\n\nRegarder pour les couples date+nom les études et le nombre de réseaux analysables (Possible demander à Élisa)\n\n⌛ Chamberlain et al semble intéressant à regarder ! Voir le Rmarkdown\n\nClusteriser sur la base des noms et voir parmi les réseaux Européens (désagrégés ?)\nSi M > 10, alors voir si je retrouve les mêmes résultats que dans les études.\nRegarder Largest gap sur réseaux Doré\n⌛ Essayer clustering sur supinfo\n\nCAH et Kmeans tendent vers faire K = 13 clusters sur les supinfos\nEnrichir avec des métriques sur les réseaux (nestedness, connectance autres ?)\nDemander à Elisa pour la signification des métadonnées\nDemander à Elisa une fois vu cohérences de groupe voir pour interprétation écologiques ?\nAlgo de clustering sur les groupes trouvés\n\n\n\n\n\n\n\nToujours modèle LBM mais avec probas d’appartenance pour les colonnes variables:\n\\begin{align*}\nZ_i &\\sim \\mathcal{M}(1; \\pi_1, \\dots, \\pi_Q), \\sum_{q=1}^{Q} \\pi_q = 1\\\\\nW_j &\\sim \\mathcal{M}(1; \\rho_1^j, \\dots, \\rho_R^j), \\sum_{r=1}^{R} \\rho_r^j = 1\\\\\nY_{i,j}&\\mid Z_i = q, W_j = r \\sim \\mathcal{F}(\\alpha_{qr})\n\\end{align*}\nInférence variationnelle donc \\ell(Y;\\pmb{\\theta}) \\geq \\mathcal{J}(\\mathcal{R},\\pmb{\\theta}) avec\n\n\\mathcal{J}(\\mathcal{R},\\pmb{\\theta})= \\sum_{i = 1}^{n_1}\\sum_{j=1}^{n_2}\\sum_{q \\in \\mathcal{Q}_1} \\sum_{r \\in \\mathcal{Q}_2} \\tau_{iq}^{1} \\tau_{jr}^{2} \\log f(Y_{ij}; \\alpha_{qr})\n + \\sum_{i=1}^{n_1} \\sum_{q \\in \\mathcal{Q}_1} \\tau_{iq}^{1} \\log \\pi_{\\color{black}q} + \\sum_{j=1}^{n_2} \\sum_{r \\in \\mathcal{Q}_2} \\tau_{jr}^{2} \\log \\rho_{\\color{black}r} \\\\\n - \\sum_{i=1}^{n_1} \\tau_{iq}^{1} \\log \\tau_{iq}^{1} - \\sum_{j=1}^{n_2} \\tau_{jr}^{2} \\log \\tau_{jr}^{2}\n\nPlusieurs possibilités pour la définition de \\rho_r^j\n\n\nAvec \\rho_r^j = \\frac{\\exp{\\beta_r X_j}}{\\sum_{s=1}^{R} \\exp{\\beta_s X_j}} = \\sigma(\\pmb{\\beta} \\pmb{X})_{r,j}, où \\sigma désigne le softmax. Mais il y a besoin de poser une contrainte sur l’un des (\\beta_r)_{r=1,\\dots,R}, ici \\beta_R = 0.\nLa partie pertinente de l’ELBO devient: \n P((\\beta_r)_{r=1,\\dots,R}, (X_j)_{j=1,\\dots,n_2}, (\\tau_{jr})_{\\substack{j=1,\\dots,n_2\\\\r=1,\\dots,R}} ) = \\sum_{j=1}^{n_2} \\sum_{r=1}^{R} [\\tau_{jr} (\\beta_r X_j - \\log (\\sum_{s=1}^{R} \\exp{\\beta_s X_j}))]\n\\tag{1}\nEt on obtient la dérivée partielle par rapport à \\beta_t comme: \\begin{align*}\n\\dfrac{\\partial P}{\\partial \\beta_t}&((\\beta_r)_{r=1,\\dots,R}, (X_j)_{j=1,\\dots,n_2}, (\\tau_{jr})_{\\substack{j=1,\\dots,n_2\\\\r=1,\\dots,R}} ) = \\sum_{j=1}^{n_2} \\biggl[ \\tau_{jt} X_j - \\frac{X_j \\exp{\\beta_t X_j}}{\\sum_{s=1}^{R} \\exp{\\beta_s X_j}} \\biggr]\\\\\n& = \\sum_{j=1}^{n_2} \\biggl[\\bigl(\\tau_{jt} - \\sigma(\\pmb{\\beta} \\pmb{X})_{t,j}\\bigr) X_j\\biggr] = \\sum_{j=1}^{n_2} \\biggl[\\bigl(\\tau_{jt} - \\rho_t^j \\bigr) X_j\\biggr]\n\\end{align*}\n\n\n\n\nLes distributions variationnelles sont définies par :\n\nq(Z,W)\n=\n\\prod_{i=1}^{n_1} q_i(Z_i)\n\\prod_{j=1}^{n_2} q_j(W_j),\n\navec \nq_i(Z_i=q)=\\tau_{iq}^{(1)},\n\\qquad\nq_j(W_j=r)=\\tau_{jr}^{(2)}.\n\nLes contraintes de normalisation sont : \n\\sum_{q=1}^Q \\tau_{iq}^{(1)} = 1,\n\\qquad\n\\sum_{r=1}^R \\tau_{jr}^{(2)} = 1.\n\n\n\n\nLe lagrangien du problème variationnel s’écrit : \n\\mathcal{L}\\!\\left(\n\\tau^{(1)},\\tau^{(2)},(\\lambda_i)_{i=1}^{n_1},(\\mu_j)_{j=1}^{n_2}\n\\right)\n=\n\\mathcal{J}(\\mathcal{R},\\pmb{\\theta})\n+\n\\sum_{i=1}^{n_1} \\lambda_i\n\\left(1-\\sum_{q=1}^Q \\tau_{iq}^{(1)}\\right)\n+\n\\sum_{j=1}^{n_2} \\mu_j\n\\left(1-\\sum_{r=1}^R \\tau_{jr}^{(2)}\\right),\n où \\mathcal{J}(\\mathcal{R},\\pmb{\\theta}) désigne la borne inférieure variationnelle associée au modèle et aux paramètres \\Theta.\n\n\n\n\nEn dérivant le lagrangien par rapport aux variables variationnelles \\tau^{(1)} et \\tau^{(2)}, puis en égalisant à zéro, on obtient les équations de point fixe suivantes :\n\n\\tau_{iq}^{(1)}\n\\propto\n\\pi_q^{(t)}\n\\prod_{j=1}^{n_2}\n\\prod_{r=1}^{R}\nf\\!\\left(Y_{ij};\\alpha_{qr}^{(t)}\\right)^{\\tau_{jr}^{(2),(t+1)}},\n\\quad\n\\forall i=1,\\dots,n_1,\\;\nq=1,\\dots,Q,\n\n\n\\tau_{jr}^{(2)}\n\\propto\n\\rho_r^{(t)}\n\\prod_{i=1}^{n_1}\n\\prod_{q=1}^{Q}\nf\\!\\left(Y_{ij};\\alpha_{qr}^{(t)}\\right)^{\\tau_{iq}^{(1),(t+1)}},\n\\quad\n\\forall j=1,\\dots,n_2,\\;\nr=1,\\dots,R,\n où :\n\n\\pi_q^{(t)} et \\rho_r^{(t)} sont les proportions de classes,\nf(\\cdot;\\alpha_{qr}) est la loi d’émission du modèle,\n\\alpha_{qr}^{(t)} désigne les paramètres de bloc à l’itération t.\n\n\n\n\n\nLes constantes de normalisation associées sont données par :\n\nT^{(1),(t)}_i\n=\n\\sum_{q=1}^{Q}\n\\pi_q^{(t)}\n\\exp\\!\\left(\n\\sum_{j=1}^{n_2}\n\\sum_{r=1}^{R}\n\\tau_{jr}^{(2)}\n\\log f\\!\\left(Y_{ij};\\alpha_{qr}^{(t)}\\right)\n\\right),\n\n\nT^{(2),(t)}_j\n=\n\\sum_{r=1}^{R}\n\\rho_r^{(t)}\n\\exp\\!\\left(\n\\sum_{i=1}^{n_1}\n\\sum_{q=1}^{Q}\n\\tau_{iq}^{(1)}\n\\log f\\!\\left(Y_{ij};\\alpha_{qr}^{(t)}\\right)\n\\right).\n\nAinsi, les mises à jour normalisées s’écrivent : \n\\tau_{iq}^{(1)} = \\frac{1}{T^{(1),(t)}_i}(\\cdots),\n\\qquad\n\\tau_{jr}^{(2)} = \\frac{1}{T^{(2),(t)}_j}(\\cdots).\n\n\n\n\n\nLes multiplicateurs de Lagrange s’identifient alors à : \n\\lambda_i = -\\log T^{(1),(t)}_i - 1,\n\\qquad\n\\mu_j = -\\log T^{(2),(t)}_j - 1,\n\\tag{2} et le problème dual consiste à minimiser une somme de fonctions de log-partition, ce qui montre que l’algorithme VEM réalise implicitement une descente sur le dual.\n\n\n\n\n\nLire article multi-niveaux Saint-Clair\n🆕 🔎 Trouver des papiers:\n\nLBM Negative Binomial\nNetwork inference through sample comparison\n\nIdée des groupes sur la base de distance phylogénétique:\n\nEn train de comprendre les distances que phyloseq permet de calculer sur notre exemple\nEn train de lire sur Principle coordinate analysis : https://openplantpathology.github.io/OPP_Workshop_Multivariate/2-MV_PCO.html\nParametric t-SNE pour avoir une unique représentation latente (inconvénient utilise du Deep Learning)\nLire Papier UniFrac\n\n\n\n\n\n\neasy16s : se renseigner sur\n\n\\alpha, \\beta diversité\nHeatmap\n\nRegarder SPARTA Rennes\nEcrire et étudier les modèles pour différents niveaux taxonomiques.\n🆕 Regarder NetComi\n🆕 Regarder OneNet car aggrégation plus robuste\n🆕 Réfléchir sens d’aggréger les données ou de les diviser\n\n\n\n\n\nLancer colBiSBM sur OTU\\times Sample → problème du chargement en mémoire des données à voir\nLancer colSBM sur OTU\\times OTU\nTabNet pratiquer les exercices\n🆕 SparCC à différent niveaux\n🆕 SBM à différent niveaux\n🆕⌛ Tree-PLN à différents niveaux\n\n\n\n\nPlus sur le temps long, à regarder\n\nGT causalité\nDaria Bystrova lire présentation Bystrova (s. d.) (Meek rules, V-structure)" }, { "objectID": "suivi/2025-51/2025-51.html#todo-list", "href": "suivi/2025-51/2025-51.html#todo-list", "title": "Bilan semaine 51 2025 : 15 décembre - 19 décembre", "section": "", - "text": "Passer version article flat dans Gitlab du papier et nettoyer au minimum sur une branche clean.\n⚠️ IL Y A UNE TYPO SUR LE SIGNE DE L’ENTROPIE POUR LE PAPIER: - \\mathcal{H} au lieu de +\\mathcal{H}\nFaire tourner clustering sur Trojelsgaard\nPetites opérations sur les OTUs (regarder la matrice dans les yeux):\n\nRanger les OTUs par variances (i.e. sd(OTU_j))\nDessiner les graphiques : \\mathbb{V}[OTU] = f(\\mathbb{E}[OTU]), \\frac{\\mathbb{V}[OTU]}{\\mathbb{E}[OTU]^2} = f(\\mathbb{E}[OTU]) et \\frac{\\mathbb{V}[OTU]}{\\mathbb{E}[OTU]} = f(\\mathbb{E}[OTU]) (\\approx 1) si les données suivent une loi de Poisson.\nRegarder la proportion de 1. taxon rares, 2. zeros.\nFaire des coupures selon niveaux taxonomiques et regarder si \\mathbb{V}_{\\text{intra}} \\approx \\mathbb{V}_{\\text{inter}}\nBonus: faire ça dans qmd et voir si forge permet gitlab pages\n\nFaire tourner un LBM sur Human Gut et voir si ça plante sinon:\n\nFaire LBM sur niveau taxonomique grossier, initialiser avec le résultat pour un niveau plus fin et ainsi de suite.\n\nRelire Peixoto (2014)\n\nRegarder les gens qui citent les travaux de Peixoto\n\nImplémentation blockmodels LBM avec covariables sur proportions (voir Équation 1)\n\n\n\n\n\n\n\nIdées\n\n\n\n\nTravailler sur Fungus Tree network\nComparaison covar prop avec GREMLINS multipartite sur (log(dist_phylo), fungus-tree)\nTrouver manière de faire un compromis : \\ell(Y,Z,W;\\theta) - \\lambda d(C(W),C_0) avec C(W) le clustering seulement sur la base de la structure LBM et C_0 le clustering de l’arbre. Problème d est une distance entre partition, comment optimiser dessus ?\nMise à jour partielle des \\tau : ce qui pose soucis c’est les gros calculs matriciels (c’est vraiment vrai?). Donc sorte de “stochastic” VEM où on update seulement une partie des \\tau à chaque itération. Et échantillonnage stratifié selon l’arbre ?\nChercher à formuler le problème dual (s’il existe?) de l’optimisation du LBM. Peut-être possible d’aller plus vite alors ?\n\n\n\n\nClustering unipartite j’ai cassé une fonction de distance à vérifier et réparer\nCodes pour le papier :\n\nNettoyer les scripts\nFaire un joli README\n❓Faire des notebooks\n\nRéussir à reproduire résultat de Abramov et al. (s. d.)\nMaitriser graphtools de Peixoto pour essayer d’utiliser l’arbre taxonomique sur graphe de cooccurence inférer par SparCC\nMaitriser SparCC\n👶 (délégué à Mona) Clustering sur Doré :\n\nRegarder pour les couples date+nom les études et le nombre de réseaux analysables (Possible demander à Élisa)\n\n⌛ Chamberlain et al semble intéressant à regarder ! Voir le Rmarkdown\n\nClusteriser sur la base des noms et voir parmi les réseaux Européens (désagrégés ?)\nSi M > 10, alors voir si je retrouve les mêmes résultats que dans les études.\nRegarder Largest gap sur réseaux Doré\n⌛ Essayer clustering sur supinfo\n\nCAH et Kmeans tendent vers faire K = 13 clusters sur les supinfos\nEnrichir avec des métriques sur les réseaux (nestedness, connectance autres ?)\nDemander à Elisa pour la signification des métadonnées\nDemander à Elisa une fois vu cohérences de groupe voir pour interprétation écologiques ?\nAlgo de clustering sur les groupes trouvés\n\n\n\n\n\n\n\nToujours modèle LBM mais avec probas d’appartenance pour les colonnes variables:\n\\begin{align*}\nZ_i &\\sim \\mathcal{M}(1; \\pi_1, \\dots, \\pi_Q), \\sum_{q=1}^{Q} \\pi_q = 1\\\\\nW_j &\\sim \\mathcal{M}(1; \\rho_1^j, \\dots, \\rho_R^j), \\sum_{r=1}^{R} \\rho_r^j = 1\\\\\nY_{i,j}&\\mid Z_i = q, W_j = r \\sim \\mathcal{F}(\\alpha_{qr})\n\\end{align*}\nInférence variationnelle donc \\ell(Y;\\pmb{\\theta}) \\geq \\mathcal{J}(\\mathcal{R},\\pmb{\\theta}) avec\n\n\\mathcal{J}(\\mathcal{R},\\pmb{\\theta})= \\sum_{i = 1}^{n_1}\\sum_{j=1}^{n_2}\\sum_{q \\in \\mathcal{Q}_1} \\sum_{r \\in \\mathcal{Q}_2} \\tau_{iq}^{1} \\tau_{jr}^{2} \\log f(Y_{ij}; \\alpha_{qr})\n + \\sum_{i=1}^{n_1} \\sum_{q \\in \\mathcal{Q}_1} \\tau_{iq}^{1} \\log \\pi_{\\color{black}q} + \\sum_{j=1}^{n_2} \\sum_{r \\in \\mathcal{Q}_2} \\tau_{jr}^{2} \\log \\rho_{\\color{black}r} \\\\\n - \\sum_{i=1}^{n_1} \\tau_{iq}^{1} \\log \\tau_{iq}^{1} - \\sum_{j=1}^{n_2} \\tau_{jr}^{2} \\log \\tau_{jr}^{2}\n\nPlusieurs possibilités pour la définition de \\rho_r^j\n\n\nDénominateur pas correct, ne somme pas à 1.\n\\rho_r^j = \\frac{\\exp{\\beta_r X_j\\mathbf{1}_{\\{r\\neq R\\}}}}{1+\\sum_{s=1}^{R-1} \\beta_s X_j}, \\beta_R = 0 et \\rho_R^{j} = \\frac{1}{1+\\sum_{s=1}^{R-1} \\beta_s X_j} (pas de compréhension intuitive)\nLa partie pertinente de l’ELBO devient: \n P((\\beta_r)_{r=1,\\dots,R}, (X_j)_{j=1,\\dots,n_2}, (\\tau_{jr})_{\\substack{j=1,\\dots,n_2\\\\r=1,\\dots,R}} ) = \\sum_{j=1}^{n_2} \\sum_{r=1}^{R} [\\tau_{jr} (\\beta_r X_j \\mathbb{1}_{r\\neq R} - \\log (1+\\sum_{s=1}^{R-1} \\beta_s X_j))]\n\nEt on obtient la dérivée partielle par rapport à \\beta_t comme: \\begin{align*}\n\\dfrac{\\partial P}{\\partial \\beta_t}&((\\beta_r)_{r=1,\\dots,R}, (X_j)_{j=1,\\dots,n_2}, (\\tau_{jr})_{\\substack{j=1,\\dots,n_2\\\\r=1,\\dots,R}} ) = \\sum_{j=1}^{n_2} \\biggl[ \\tau_{jt} X_j - \\frac{X_j}{1+\\sum_{s=1}^{R-1} \\exp{\\beta_s X_j}} \\biggr]\\\\\n& = \\sum_{j=1}^{n_2} \\biggl[\\bigl(\\tau_{jt} - \\frac{1}{1+\\sum_{s=1}^{R-1} \\beta_s X_j} \\bigr) X_j\\biggr] = \\sum_{j=1}^{n_2} \\biggl[\\bigl(\\tau_{jt} - \\rho_R^j \\bigr) X_j\\biggr]\n\\end{align*}\n❓ Gradient mesure l’écart entre probas a posteriori et la proba a priori du groupe de référence ?\nConclusion: Il manque l’exponentielle cette formulation ne somme pas à 1.\n\n\n\nAvec \\rho_r^j = \\frac{\\exp{\\beta_r X_j}}{\\sum_{s=1}^{R} \\exp{\\beta_s X_j}} = \\sigma(\\pmb{\\beta} \\pmb{X})_{r,j}, où \\sigma désigne le softmax. Mais il y a besoin de poser une contrainte sur l’un des (\\beta_r)_{r=1,\\dots,R}, ici \\beta_R = 0.\nLa partie pertinente de l’ELBO devient: \n P((\\beta_r)_{r=1,\\dots,R}, (X_j)_{j=1,\\dots,n_2}, (\\tau_{jr})_{\\substack{j=1,\\dots,n_2\\\\r=1,\\dots,R}} ) = \\sum_{j=1}^{n_2} \\sum_{r=1}^{R} [\\tau_{jr} (\\beta_r X_j - \\log (\\sum_{s=1}^{R} \\exp{\\beta_s X_j}))]\n\\tag{1}\nEt on obtient la dérivée partielle par rapport à \\beta_t comme: \\begin{align*}\n\\dfrac{\\partial P}{\\partial \\beta_t}&((\\beta_r)_{r=1,\\dots,R}, (X_j)_{j=1,\\dots,n_2}, (\\tau_{jr})_{\\substack{j=1,\\dots,n_2\\\\r=1,\\dots,R}} ) = \\sum_{j=1}^{n_2} \\biggl[ \\tau_{jt} X_j - \\frac{X_j \\exp{\\beta_t X_j}}{\\sum_{s=1}^{R} \\exp{\\beta_s X_j}} \\biggr]\\\\\n& = \\sum_{j=1}^{n_2} \\biggl[\\bigl(\\tau_{jt} - \\sigma(\\pmb{\\beta} \\pmb{X})_{t,j}\\bigr) X_j\\biggr] = \\sum_{j=1}^{n_2} \\biggl[\\bigl(\\tau_{jt} - \\rho_t^j \\bigr) X_j\\biggr]\n\\end{align*}\n\n\n\n\n\nLire article multi-niveaux Saint-Clair\n🆕 🔎 Trouver des papiers:\n\nLBM Negative Binomial\nNetwork inference through sample comparison\n\nIdée des groupes sur la base de distance phylogénétique:\n\nEn train de comprendre les distances que phyloseq permet de calculer sur notre exemple\nEn train de lire sur Principle coordinate analysis : https://openplantpathology.github.io/OPP_Workshop_Multivariate/2-MV_PCO.html\nParametric t-SNE pour avoir une unique représentation latente (inconvénient utilise du Deep Learning)\nLire Papier UniFrac\n\n\n\n\n\n\neasy16s : se renseigner sur\n\n\\alpha, \\beta diversité\nHeatmap\n\nRegarder SPARTA Rennes\nEcrire et étudier les modèles pour différents niveaux taxonomiques.\n🆕 Regarder NetComi\n🆕 Regarder OneNet car aggrégation plus robuste\n🆕 Réfléchir sens d’aggréger les données ou de les diviser\n\n\n\n\n\nLancer colBiSBM sur OTU\\times Sample → problème du chargement en mémoire des données à voir\nLancer colSBM sur OTU\\times OTU\nTabNet pratiquer les exercices\n🆕 SparCC à différent niveaux\n🆕 SBM à différent niveaux\n🆕⌛ Tree-PLN à différents niveaux\n\n\n\n\nPlus sur le temps long, à regarder\n\nGT causalité\nDaria Bystrova lire présentation Bystrova (s. d.) (Meek rules, V-structure)" + "text": "✅ C’est fait Passer version article flat dans Gitlab du papier et nettoyer au minimum sur une branche clean.\n✅ Corrigée !⚠️ IL Y A UNE TYPO SUR LE SIGNE DE L’ENTROPIE POUR LE PAPIER: - \\mathcal{H} au lieu de +\\mathcal{H}\nFaire tourner clustering sur Trojelsgaard\nPetites opérations sur les OTUs (regarder la matrice dans les yeux):\n\nRanger les OTUs par variances (i.e. sd(OTU_j))\n✅ Dans un RMD sur Human Microbiome Compendium Dessiner les graphiques : \\mathbb{V}[OTU] = f(\\mathbb{E}[OTU]), \\frac{\\mathbb{V}[OTU]}{\\mathbb{E}[OTU]^2} = f(\\mathbb{E}[OTU]) et \\frac{\\mathbb{V}[OTU]}{\\mathbb{E}[OTU]} = f(\\mathbb{E}[OTU]) (\\approx 1) si les données suivent une loi de Poisson.\n\nHMC sur-dispersés (au-dessus bissectrice)\nEnterotype phyloseq sous-disp\n\nRegarder la proportion de 1. taxon rares, 2. zeros.\nFaire des coupures selon niveaux taxonomiques et regarder si \\mathbb{V}_{\\text{intra}} \\approx \\mathbb{V}_{\\text{inter}}\nBonus: faire ça dans qmd et voir si forge permet gitlab pages\n\n✅ Faire tourner un LBM sur Human Gut et voir si ça plante sinon, ça plante, la ram est surchargée.\n\n⌛ Je tente avec SparseBM de JBL sur Python\nFaire LBM sur niveau taxonomique grossier, initialiser avec le résultat pour un niveau plus fin et ainsi de suite.\n\n⌛ Prendre jeu de données exemple de phyloseq :\n\n✅ 😞 enterotype tourne mais pas bon résultats (semble deux blocs échantillons mais pas vu par le modèle).\n🕑 des jeux de données de Mahendra ne tourne pas (phase forward interminable).\n\nRelire Peixoto (2014)\n\nRegarder les gens qui citent les travaux de Peixoto\n\nImplémentation blockmodels LBM avec covariables sur proportions (voir Équation 1)\n\n\n\n\n\n\n\nIdées\n\n\n\n\nTravailler sur Fungus Tree network\nComparaison covar prop avec GREMLINS multipartite sur (log(dist_phylo), fungus-tree)\nTrouver manière de faire un compromis : \\ell(Y,Z,W;\\theta) - \\lambda d(C(W),C_0) avec C(W) le clustering seulement sur la base de la structure LBM et C_0 le clustering de l’arbre. Problème d est une distance entre partition, comment optimiser dessus ?\n⌛ Mise à jour partielle des \\tau : ce qui pose soucis c’est les gros calculs matriciels (c’est vraiment vrai?). Donc sorte de “stochastic” VEM où on update seulement une partie des \\tau à chaque itération. Et échantillonnage stratifié selon l’arbre ?\n\n⌛ Simulations avec n_2 croissant lancée sur Migale\nRéimplementé VE Bernoulli dans colSBM pour Bipartite et début implémentation Stochastic VE. En fait le problème des calculs matriciels Y\\times(\\tau^{(1)})^{\\top} (n_2^2) donc besoin de sous-échantillonner les noeuds de l’autre dimension à mettre à jour.\n\n✅ Inutile car besoin du primal Chercher à formuler le problème dual (s’il existe?) de l’optimisation du LBM. Peut-être possible d’aller plus vite alors ? Équation 2\n\n\n\n\nClustering unipartite j’ai cassé une fonction de distance à vérifier et réparer\nCodes pour le papier :\n\nNettoyer les scripts\nFaire un joli README\n❓Faire des notebooks\n\nRéussir à reproduire résultat de Abramov et al. (s. d.)\nMaitriser graphtools de Peixoto pour essayer d’utiliser l’arbre taxonomique sur graphe de cooccurence inférer par SparCC\nMaitriser SparCC\n👶 (délégué à Mona) Clustering sur Doré :\n\nRegarder pour les couples date+nom les études et le nombre de réseaux analysables (Possible demander à Élisa)\n\n⌛ Chamberlain et al semble intéressant à regarder ! Voir le Rmarkdown\n\nClusteriser sur la base des noms et voir parmi les réseaux Européens (désagrégés ?)\nSi M > 10, alors voir si je retrouve les mêmes résultats que dans les études.\nRegarder Largest gap sur réseaux Doré\n⌛ Essayer clustering sur supinfo\n\nCAH et Kmeans tendent vers faire K = 13 clusters sur les supinfos\nEnrichir avec des métriques sur les réseaux (nestedness, connectance autres ?)\nDemander à Elisa pour la signification des métadonnées\nDemander à Elisa une fois vu cohérences de groupe voir pour interprétation écologiques ?\nAlgo de clustering sur les groupes trouvés\n\n\n\n\n\n\n\nToujours modèle LBM mais avec probas d’appartenance pour les colonnes variables:\n\\begin{align*}\nZ_i &\\sim \\mathcal{M}(1; \\pi_1, \\dots, \\pi_Q), \\sum_{q=1}^{Q} \\pi_q = 1\\\\\nW_j &\\sim \\mathcal{M}(1; \\rho_1^j, \\dots, \\rho_R^j), \\sum_{r=1}^{R} \\rho_r^j = 1\\\\\nY_{i,j}&\\mid Z_i = q, W_j = r \\sim \\mathcal{F}(\\alpha_{qr})\n\\end{align*}\nInférence variationnelle donc \\ell(Y;\\pmb{\\theta}) \\geq \\mathcal{J}(\\mathcal{R},\\pmb{\\theta}) avec\n\n\\mathcal{J}(\\mathcal{R},\\pmb{\\theta})= \\sum_{i = 1}^{n_1}\\sum_{j=1}^{n_2}\\sum_{q \\in \\mathcal{Q}_1} \\sum_{r \\in \\mathcal{Q}_2} \\tau_{iq}^{1} \\tau_{jr}^{2} \\log f(Y_{ij}; \\alpha_{qr})\n + \\sum_{i=1}^{n_1} \\sum_{q \\in \\mathcal{Q}_1} \\tau_{iq}^{1} \\log \\pi_{\\color{black}q} + \\sum_{j=1}^{n_2} \\sum_{r \\in \\mathcal{Q}_2} \\tau_{jr}^{2} \\log \\rho_{\\color{black}r} \\\\\n - \\sum_{i=1}^{n_1} \\tau_{iq}^{1} \\log \\tau_{iq}^{1} - \\sum_{j=1}^{n_2} \\tau_{jr}^{2} \\log \\tau_{jr}^{2}\n\nPlusieurs possibilités pour la définition de \\rho_r^j\n\n\nAvec \\rho_r^j = \\frac{\\exp{\\beta_r X_j}}{\\sum_{s=1}^{R} \\exp{\\beta_s X_j}} = \\sigma(\\pmb{\\beta} \\pmb{X})_{r,j}, où \\sigma désigne le softmax. Mais il y a besoin de poser une contrainte sur l’un des (\\beta_r)_{r=1,\\dots,R}, ici \\beta_R = 0.\nLa partie pertinente de l’ELBO devient: \n P((\\beta_r)_{r=1,\\dots,R}, (X_j)_{j=1,\\dots,n_2}, (\\tau_{jr})_{\\substack{j=1,\\dots,n_2\\\\r=1,\\dots,R}} ) = \\sum_{j=1}^{n_2} \\sum_{r=1}^{R} [\\tau_{jr} (\\beta_r X_j - \\log (\\sum_{s=1}^{R} \\exp{\\beta_s X_j}))]\n\\tag{1}\nEt on obtient la dérivée partielle par rapport à \\beta_t comme: \\begin{align*}\n\\dfrac{\\partial P}{\\partial \\beta_t}&((\\beta_r)_{r=1,\\dots,R}, (X_j)_{j=1,\\dots,n_2}, (\\tau_{jr})_{\\substack{j=1,\\dots,n_2\\\\r=1,\\dots,R}} ) = \\sum_{j=1}^{n_2} \\biggl[ \\tau_{jt} X_j - \\frac{X_j \\exp{\\beta_t X_j}}{\\sum_{s=1}^{R} \\exp{\\beta_s X_j}} \\biggr]\\\\\n& = \\sum_{j=1}^{n_2} \\biggl[\\bigl(\\tau_{jt} - \\sigma(\\pmb{\\beta} \\pmb{X})_{t,j}\\bigr) X_j\\biggr] = \\sum_{j=1}^{n_2} \\biggl[\\bigl(\\tau_{jt} - \\rho_t^j \\bigr) X_j\\biggr]\n\\end{align*}\n\n\n\n\nLes distributions variationnelles sont définies par :\n\nq(Z,W)\n=\n\\prod_{i=1}^{n_1} q_i(Z_i)\n\\prod_{j=1}^{n_2} q_j(W_j),\n\navec \nq_i(Z_i=q)=\\tau_{iq}^{(1)},\n\\qquad\nq_j(W_j=r)=\\tau_{jr}^{(2)}.\n\nLes contraintes de normalisation sont : \n\\sum_{q=1}^Q \\tau_{iq}^{(1)} = 1,\n\\qquad\n\\sum_{r=1}^R \\tau_{jr}^{(2)} = 1.\n\n\n\n\nLe lagrangien du problème variationnel s’écrit : \n\\mathcal{L}\\!\\left(\n\\tau^{(1)},\\tau^{(2)},(\\lambda_i)_{i=1}^{n_1},(\\mu_j)_{j=1}^{n_2}\n\\right)\n=\n\\mathcal{J}(\\mathcal{R},\\pmb{\\theta})\n+\n\\sum_{i=1}^{n_1} \\lambda_i\n\\left(1-\\sum_{q=1}^Q \\tau_{iq}^{(1)}\\right)\n+\n\\sum_{j=1}^{n_2} \\mu_j\n\\left(1-\\sum_{r=1}^R \\tau_{jr}^{(2)}\\right),\n où \\mathcal{J}(\\mathcal{R},\\pmb{\\theta}) désigne la borne inférieure variationnelle associée au modèle et aux paramètres \\Theta.\n\n\n\n\nEn dérivant le lagrangien par rapport aux variables variationnelles \\tau^{(1)} et \\tau^{(2)}, puis en égalisant à zéro, on obtient les équations de point fixe suivantes :\n\n\\tau_{iq}^{(1)}\n\\propto\n\\pi_q^{(t)}\n\\prod_{j=1}^{n_2}\n\\prod_{r=1}^{R}\nf\\!\\left(Y_{ij};\\alpha_{qr}^{(t)}\\right)^{\\tau_{jr}^{(2),(t+1)}},\n\\quad\n\\forall i=1,\\dots,n_1,\\;\nq=1,\\dots,Q,\n\n\n\\tau_{jr}^{(2)}\n\\propto\n\\rho_r^{(t)}\n\\prod_{i=1}^{n_1}\n\\prod_{q=1}^{Q}\nf\\!\\left(Y_{ij};\\alpha_{qr}^{(t)}\\right)^{\\tau_{iq}^{(1),(t+1)}},\n\\quad\n\\forall j=1,\\dots,n_2,\\;\nr=1,\\dots,R,\n où :\n\n\\pi_q^{(t)} et \\rho_r^{(t)} sont les proportions de classes,\nf(\\cdot;\\alpha_{qr}) est la loi d’émission du modèle,\n\\alpha_{qr}^{(t)} désigne les paramètres de bloc à l’itération t.\n\n\n\n\n\nLes constantes de normalisation associées sont données par :\n\nT^{(1),(t)}_i\n=\n\\sum_{q=1}^{Q}\n\\pi_q^{(t)}\n\\exp\\!\\left(\n\\sum_{j=1}^{n_2}\n\\sum_{r=1}^{R}\n\\tau_{jr}^{(2)}\n\\log f\\!\\left(Y_{ij};\\alpha_{qr}^{(t)}\\right)\n\\right),\n\n\nT^{(2),(t)}_j\n=\n\\sum_{r=1}^{R}\n\\rho_r^{(t)}\n\\exp\\!\\left(\n\\sum_{i=1}^{n_1}\n\\sum_{q=1}^{Q}\n\\tau_{iq}^{(1)}\n\\log f\\!\\left(Y_{ij};\\alpha_{qr}^{(t)}\\right)\n\\right).\n\nAinsi, les mises à jour normalisées s’écrivent : \n\\tau_{iq}^{(1)} = \\frac{1}{T^{(1),(t)}_i}(\\cdots),\n\\qquad\n\\tau_{jr}^{(2)} = \\frac{1}{T^{(2),(t)}_j}(\\cdots).\n\n\n\n\n\nLes multiplicateurs de Lagrange s’identifient alors à : \n\\lambda_i = -\\log T^{(1),(t)}_i - 1,\n\\qquad\n\\mu_j = -\\log T^{(2),(t)}_j - 1,\n\\tag{2} et le problème dual consiste à minimiser une somme de fonctions de log-partition, ce qui montre que l’algorithme VEM réalise implicitement une descente sur le dual.\n\n\n\n\n\nLire article multi-niveaux Saint-Clair\n🆕 🔎 Trouver des papiers:\n\nLBM Negative Binomial\nNetwork inference through sample comparison\n\nIdée des groupes sur la base de distance phylogénétique:\n\nEn train de comprendre les distances que phyloseq permet de calculer sur notre exemple\nEn train de lire sur Principle coordinate analysis : https://openplantpathology.github.io/OPP_Workshop_Multivariate/2-MV_PCO.html\nParametric t-SNE pour avoir une unique représentation latente (inconvénient utilise du Deep Learning)\nLire Papier UniFrac\n\n\n\n\n\n\neasy16s : se renseigner sur\n\n\\alpha, \\beta diversité\nHeatmap\n\nRegarder SPARTA Rennes\nEcrire et étudier les modèles pour différents niveaux taxonomiques.\n🆕 Regarder NetComi\n🆕 Regarder OneNet car aggrégation plus robuste\n🆕 Réfléchir sens d’aggréger les données ou de les diviser\n\n\n\n\n\nLancer colBiSBM sur OTU\\times Sample → problème du chargement en mémoire des données à voir\nLancer colSBM sur OTU\\times OTU\nTabNet pratiquer les exercices\n🆕 SparCC à différent niveaux\n🆕 SBM à différent niveaux\n🆕⌛ Tree-PLN à différents niveaux\n\n\n\n\nPlus sur le temps long, à regarder\n\nGT causalité\nDaria Bystrova lire présentation Bystrova (s. d.) (Meek rules, V-structure)" }, { "objectID": "suivi/2025-51/2025-51.html#a-discuter", diff --git a/suivi/2025-13/2025-13.html b/suivi/2025-13/2025-13.html index c0016d5..4b86760 100644 --- a/suivi/2025-13/2025-13.html +++ b/suivi/2025-13/2025-13.html @@ -192,7 +192,7 @@ window.Quarto = {
Modifié
-

15 décembre 2025

+

23 décembre 2025

diff --git a/suivi/2025-14/2025-14.html b/suivi/2025-14/2025-14.html index 04eaf1e..9672eaa 100644 --- a/suivi/2025-14/2025-14.html +++ b/suivi/2025-14/2025-14.html @@ -189,7 +189,7 @@ window.Quarto = {
Modifié
-

15 décembre 2025

+

23 décembre 2025

diff --git a/suivi/2025-15/2025-15.html b/suivi/2025-15/2025-15.html index ce8397d..96bbeb9 100644 --- a/suivi/2025-15/2025-15.html +++ b/suivi/2025-15/2025-15.html @@ -189,7 +189,7 @@ window.Quarto = {
Modifié
-

15 décembre 2025

+

23 décembre 2025

diff --git a/suivi/2025-16/2025-16.html b/suivi/2025-16/2025-16.html index 62dbd40..c1023f0 100644 --- a/suivi/2025-16/2025-16.html +++ b/suivi/2025-16/2025-16.html @@ -189,7 +189,7 @@ window.Quarto = {
Modifié
-

15 décembre 2025

+

23 décembre 2025

diff --git a/suivi/2025-17/2025-17.html b/suivi/2025-17/2025-17.html index b4c4434..2e46ee9 100644 --- a/suivi/2025-17/2025-17.html +++ b/suivi/2025-17/2025-17.html @@ -192,7 +192,7 @@ window.Quarto = {
Modifié
-

15 décembre 2025

+

23 décembre 2025

diff --git a/suivi/2025-18/2025-18.html b/suivi/2025-18/2025-18.html index db0806b..3d7ef38 100644 --- a/suivi/2025-18/2025-18.html +++ b/suivi/2025-18/2025-18.html @@ -193,7 +193,7 @@ window.Quarto = {
Modifié
-

15 décembre 2025

+

23 décembre 2025

diff --git a/suivi/2025-19/2025-19.html b/suivi/2025-19/2025-19.html index e9340ef..5c6ba1b 100644 --- a/suivi/2025-19/2025-19.html +++ b/suivi/2025-19/2025-19.html @@ -190,7 +190,7 @@ window.Quarto = {
Modifié
-

15 décembre 2025

+

23 décembre 2025

diff --git a/suivi/2025-20/2025-20.html b/suivi/2025-20/2025-20.html index ae2a681..f0199f6 100644 --- a/suivi/2025-20/2025-20.html +++ b/suivi/2025-20/2025-20.html @@ -191,7 +191,7 @@ window.Quarto = {
Modifié
-

15 décembre 2025

+

23 décembre 2025

diff --git a/suivi/2025-21/2025-21.html b/suivi/2025-21/2025-21.html index 9b36879..0a74a0b 100644 --- a/suivi/2025-21/2025-21.html +++ b/suivi/2025-21/2025-21.html @@ -191,7 +191,7 @@ window.Quarto = {
Modifié
-

15 décembre 2025

+

23 décembre 2025

diff --git a/suivi/2025-22/2025-22.html b/suivi/2025-22/2025-22.html index 623a861..d1638e1 100644 --- a/suivi/2025-22/2025-22.html +++ b/suivi/2025-22/2025-22.html @@ -191,7 +191,7 @@ window.Quarto = {
Modifié
-

15 décembre 2025

+

23 décembre 2025

diff --git a/suivi/2025-24/2025-24.html b/suivi/2025-24/2025-24.html index b3572f3..3279307 100644 --- a/suivi/2025-24/2025-24.html +++ b/suivi/2025-24/2025-24.html @@ -214,7 +214,7 @@ window.Quarto = {
Modifié
-

15 décembre 2025

+

23 décembre 2025

diff --git a/suivi/2025-25/2025-25.html b/suivi/2025-25/2025-25.html index 36f65bb..01549d5 100644 --- a/suivi/2025-25/2025-25.html +++ b/suivi/2025-25/2025-25.html @@ -211,7 +211,7 @@ window.Quarto = {
Modifié
-

15 décembre 2025

+

23 décembre 2025

diff --git a/suivi/2025-27/2025-27.html b/suivi/2025-27/2025-27.html index 7f65387..b21a8bb 100644 --- a/suivi/2025-27/2025-27.html +++ b/suivi/2025-27/2025-27.html @@ -211,7 +211,7 @@ window.Quarto = {
Modifié
-

15 décembre 2025

+

23 décembre 2025

diff --git a/suivi/2025-29/2025-29.html b/suivi/2025-29/2025-29.html index 60240a4..7ee126d 100644 --- a/suivi/2025-29/2025-29.html +++ b/suivi/2025-29/2025-29.html @@ -211,7 +211,7 @@ window.Quarto = {
Modifié
-

15 décembre 2025

+

23 décembre 2025

diff --git a/suivi/2025-33/2025-33.html b/suivi/2025-33/2025-33.html index 1cc6e71..8c4432b 100644 --- a/suivi/2025-33/2025-33.html +++ b/suivi/2025-33/2025-33.html @@ -214,7 +214,7 @@ window.Quarto = {
Modifié
-

15 décembre 2025

+

23 décembre 2025

diff --git a/suivi/2025-35/2025-35.html b/suivi/2025-35/2025-35.html index 24a5d76..5492d55 100644 --- a/suivi/2025-35/2025-35.html +++ b/suivi/2025-35/2025-35.html @@ -211,7 +211,7 @@ window.Quarto = {
Modifié
-

15 décembre 2025

+

23 décembre 2025

diff --git a/suivi/2025-38/2025-38.html b/suivi/2025-38/2025-38.html index 4c775e4..d6af9b7 100644 --- a/suivi/2025-38/2025-38.html +++ b/suivi/2025-38/2025-38.html @@ -211,7 +211,7 @@ window.Quarto = {
Modifié
-

15 décembre 2025

+

23 décembre 2025

diff --git a/suivi/2025-43/2025-43.html b/suivi/2025-43/2025-43.html index 02cd598..a77a4c5 100644 --- a/suivi/2025-43/2025-43.html +++ b/suivi/2025-43/2025-43.html @@ -211,7 +211,7 @@ window.Quarto = {
Modifié
-

15 décembre 2025

+

23 décembre 2025

diff --git a/suivi/2025-44/2025-44.html b/suivi/2025-44/2025-44.html index 6047148..7e14d77 100644 --- a/suivi/2025-44/2025-44.html +++ b/suivi/2025-44/2025-44.html @@ -211,7 +211,7 @@ window.Quarto = {
Modifié
-

15 décembre 2025

+

23 décembre 2025

diff --git a/suivi/2025-45/2025-45.html b/suivi/2025-45/2025-45.html index 65f8bf2..c1e5d8f 100644 --- a/suivi/2025-45/2025-45.html +++ b/suivi/2025-45/2025-45.html @@ -211,7 +211,7 @@ window.Quarto = {
Modifié
-

15 décembre 2025

+

23 décembre 2025

diff --git a/suivi/2025-50/2025-50.html b/suivi/2025-50/2025-50.html index ef71f9b..5134a59 100644 --- a/suivi/2025-50/2025-50.html +++ b/suivi/2025-50/2025-50.html @@ -211,7 +211,7 @@ window.Quarto = {
Modifié
-

15 décembre 2025

+

23 décembre 2025

diff --git a/suivi/2025-51/2025-51.html b/suivi/2025-51/2025-51.html index 6ea9abe..ca1d6e9 100644 --- a/suivi/2025-51/2025-51.html +++ b/suivi/2025-51/2025-51.html @@ -211,7 +211,7 @@ window.Quarto = {
Modifié
-

15 décembre 2025

+

23 décembre 2025

@@ -253,21 +253,31 @@ window.Quarto = {

TODO List

@@ -340,20 +354,6 @@ Y_{i,j}&\mid Z_i = q, W_j = r \sim \mathcal{F}(\alpha_{qr}) - \sum_{i=1}^{n_1} \tau_{iq}^{1} \log \tau_{iq}^{1} - \sum_{j=1}^{n_2} \tau_{jr}^{2} \log \tau_{jr}^{2}

Plusieurs possibilités pour la définition de \rho_r^j

-
-
Modèle 1 (Tabouy)
-

Dénominateur pas correct, ne somme pas à 1.

-

\rho_r^j = \frac{\exp{\beta_r X_j\mathbf{1}_{\{r\neq R\}}}}{1+\sum_{s=1}^{R-1} \beta_s X_j}, \beta_R = 0 et \rho_R^{j} = \frac{1}{1+\sum_{s=1}^{R-1} \beta_s X_j} (pas de compréhension intuitive)

-

La partie pertinente de l’ELBO devient: - P((\beta_r)_{r=1,\dots,R}, (X_j)_{j=1,\dots,n_2}, (\tau_{jr})_{\substack{j=1,\dots,n_2\\r=1,\dots,R}} ) = \sum_{j=1}^{n_2} \sum_{r=1}^{R} [\tau_{jr} (\beta_r X_j \mathbb{1}_{r\neq R} - \log (1+\sum_{s=1}^{R-1} \beta_s X_j))] -

-

Et on obtient la dérivée partielle par rapport à \beta_t comme: \begin{align*} -\dfrac{\partial P}{\partial \beta_t}&((\beta_r)_{r=1,\dots,R}, (X_j)_{j=1,\dots,n_2}, (\tau_{jr})_{\substack{j=1,\dots,n_2\\r=1,\dots,R}} ) = \sum_{j=1}^{n_2} \biggl[ \tau_{jt} X_j - \frac{X_j}{1+\sum_{s=1}^{R-1} \exp{\beta_s X_j}} \biggr]\\ -& = \sum_{j=1}^{n_2} \biggl[\bigl(\tau_{jt} - \frac{1}{1+\sum_{s=1}^{R-1} \beta_s X_j} \bigr) X_j\biggr] = \sum_{j=1}^{n_2} \biggl[\bigl(\tau_{jt} - \rho_R^j \bigr) X_j\biggr] -\end{align*}

-

❓ Gradient mesure l’écart entre probas a posteriori et la proba a priori du groupe de référence ?

-

Conclusion: Il manque l’exponentielle cette formulation ne somme pas à 1.

-
Modèle Sophie

Avec \rho_r^j = \frac{\exp{\beta_r X_j}}{\sum_{s=1}^{R} \exp{\beta_s X_j}} = \sigma(\pmb{\beta} \pmb{X})_{r,j}, où \sigma désigne le softmax. Mais il y a besoin de poser une contrainte sur l’un des (\beta_r)_{r=1,\dots,R}, ici \beta_R = 0.

@@ -366,6 +366,118 @@ Y_{i,j}&\mid Z_i = q, W_j = r \sim \mathcal{F}(\alpha_{qr}) \end{align*}

+
+

Idée du problème dual

+

Les distributions variationnelles sont définies par :

+

+q(Z,W) += +\prod_{i=1}^{n_1} q_i(Z_i) +\prod_{j=1}^{n_2} q_j(W_j), +

+

avec +q_i(Z_i=q)=\tau_{iq}^{(1)}, +\qquad +q_j(W_j=r)=\tau_{jr}^{(2)}. +

+

Les contraintes de normalisation sont : +\sum_{q=1}^Q \tau_{iq}^{(1)} = 1, +\qquad +\sum_{r=1}^R \tau_{jr}^{(2)} = 1. +

+
+
+
Lagrangien
+

Le lagrangien du problème variationnel s’écrit : +\mathcal{L}\!\left( +\tau^{(1)},\tau^{(2)},(\lambda_i)_{i=1}^{n_1},(\mu_j)_{j=1}^{n_2} +\right) += +\mathcal{J}(\mathcal{R},\pmb{\theta}) ++ +\sum_{i=1}^{n_1} \lambda_i +\left(1-\sum_{q=1}^Q \tau_{iq}^{(1)}\right) ++ +\sum_{j=1}^{n_2} \mu_j +\left(1-\sum_{r=1}^R \tau_{jr}^{(2)}\right), +\mathcal{J}(\mathcal{R},\pmb{\theta}) désigne la borne inférieure variationnelle associée au modèle et aux paramètres \Theta.

+
+
+
+
Problème primal (conditions d’optimalité)
+

En dérivant le lagrangien par rapport aux variables variationnelles \tau^{(1)} et \tau^{(2)}, puis en égalisant à zéro, on obtient les équations de point fixe suivantes :

+

+\tau_{iq}^{(1)} +\propto +\pi_q^{(t)} +\prod_{j=1}^{n_2} +\prod_{r=1}^{R} +f\!\left(Y_{ij};\alpha_{qr}^{(t)}\right)^{\tau_{jr}^{(2),(t+1)}}, +\quad +\forall i=1,\dots,n_1,\; +q=1,\dots,Q, +

+

+\tau_{jr}^{(2)} +\propto +\rho_r^{(t)} +\prod_{i=1}^{n_1} +\prod_{q=1}^{Q} +f\!\left(Y_{ij};\alpha_{qr}^{(t)}\right)^{\tau_{iq}^{(1),(t+1)}}, +\quad +\forall j=1,\dots,n_2,\; +r=1,\dots,R, + où :

+
    +
  • \pi_q^{(t)} et \rho_r^{(t)} sont les proportions de classes,
  • +
  • f(\cdot;\alpha_{qr}) est la loi d’émission du modèle,
  • +
  • \alpha_{qr}^{(t)} désigne les paramètres de bloc à l’itération t.
  • +
+
+
+
+
Constantes de normalisation
+

Les constantes de normalisation associées sont données par :

+

+T^{(1),(t)}_i += +\sum_{q=1}^{Q} +\pi_q^{(t)} +\exp\!\left( +\sum_{j=1}^{n_2} +\sum_{r=1}^{R} +\tau_{jr}^{(2)} +\log f\!\left(Y_{ij};\alpha_{qr}^{(t)}\right) +\right), +

+

+T^{(2),(t)}_j += +\sum_{r=1}^{R} +\rho_r^{(t)} +\exp\!\left( +\sum_{i=1}^{n_1} +\sum_{q=1}^{Q} +\tau_{iq}^{(1)} +\log f\!\left(Y_{ij};\alpha_{qr}^{(t)}\right) +\right). +

+

Ainsi, les mises à jour normalisées s’écrivent : +\tau_{iq}^{(1)} = \frac{1}{T^{(1),(t)}_i}(\cdots), +\qquad +\tau_{jr}^{(2)} = \frac{1}{T^{(2),(t)}_j}(\cdots). +

+
+
+
+
Interprétation duale
+

Les multiplicateurs de Lagrange s’identifient alors à : +\lambda_i = -\log T^{(1),(t)}_i - 1, +\qquad +\mu_j = -\log T^{(2),(t)}_j - 1, +\tag{2} et le problème dual consiste à minimiser une somme de fonctions de log-partition, ce qui montre que l’algorithme VEM réalise implicitement une descente sur le dual.

+
+

Bibliographie: à lire, à faire