334 lines
No EOL
12 KiB
Text
334 lines
No EOL
12 KiB
Text
---
|
||
title: "Bilan semaine 51 2025 : 15 décembre - 19 décembre"
|
||
categories: [colBiSBM, inférence, GNN]
|
||
date: 2025 12 19
|
||
date-modified: last-modified
|
||
bibliography: references.bib
|
||
# from: markdown+latex_macros
|
||
---
|
||
{{< include /_macros.tex >}}
|
||
|
||
## TODO List
|
||
|
||
- ✅ **C'est fait** Passer version article flat dans Gitlab du papier et nettoyer au minimum sur une branche clean.
|
||
|
||
- ✅ Corrigée !⚠️ IL Y A UNE TYPO SUR LE SIGNE DE L'ENTROPIE POUR LE PAPIER: $- \mathcal{H}$ au lieu de $+\mathcal{H}$
|
||
|
||
- Faire tourner clustering sur Trojelsgaard
|
||
|
||
- Petites opérations sur les OTUs (regarder la matrice dans les yeux):
|
||
- Ranger les OTUs par variances (i.e. `sd(OTU_j)`)
|
||
- ✅ **Dans un RMD sur Human Microbiome Compendium** Dessiner les graphiques : $\Var[OTU] = f(\Esp[OTU]), \frac{\Var[OTU]}{\Esp[OTU]^2} = f(\Esp[OTU])$ et $\frac{\Var[OTU]}{\Esp[OTU]} = f(\Esp[OTU]) (\approx 1)$ si les données suivent une loi de Poisson.
|
||
- HMC sur-dispersés (au-dessus bissectrice)
|
||
- Enterotype phyloseq sous-disp
|
||
- Regarder la proportion de 1. taxon rares, 2. zeros.
|
||
- Faire des coupures selon niveaux taxonomiques et regarder si $\Var_{\text{intra}} \approx \Var_{\text{inter}}$
|
||
- *Bonus*: faire ça dans qmd et voir si forge permet gitlab pages
|
||
|
||
- ✅ Faire tourner un LBM sur Human Gut et voir si ça plante sinon, **ça plante, la ram est surchargée.**
|
||
- ⌛ Je tente avec SparseBM de JBL sur Python
|
||
- Faire LBM sur niveau taxonomique grossier, initialiser avec le résultat pour un niveau plus fin et ainsi de suite.
|
||
|
||
- Increasing size :
|
||

|
||
|
||
- ⌛ Prendre jeu de données exemple de phyloseq :
|
||
- ✅ 😞 enterotype tourne mais pas bon résultats (semble deux blocs échantillons mais pas vu par le modèle).
|
||
- 🕑 des jeux de données de Mahendra ne tourne pas (phase forward interminable).
|
||
|
||
- Relire @peixotoHierarchicalBlockStructures2014
|
||
- Regarder les gens qui citent les travaux de Peixoto
|
||
|
||
- Implémentation `blockmodels` LBM avec covariables sur proportions (voir @eq-modele-covar-prop)
|
||
|
||
:::{.callout-note title="Idées"}
|
||
|
||
- Travailler sur Fungus Tree network
|
||
- Comparaison covar prop avec GREMLINS multipartite sur (log(dist_phylo), fungus-tree)
|
||
- Trouver 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 ?
|
||
- ⌛ 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 ?
|
||
- ⌛ Simulations avec $n_2$ croissant lancée sur Migale
|
||
- Ré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.
|
||
- ✅ **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 ? @eq-dual
|
||
|
||
:::
|
||
|
||
- Clustering unipartite j'ai cassé une fonction de distance à vérifier et réparer
|
||
|
||
- Codes pour le papier :
|
||
- Nettoyer les scripts
|
||
- Faire un joli README
|
||
- ❓Faire des notebooks
|
||
|
||
- Réussir à reproduire résultat de @abramovStructureKnowsBest
|
||
|
||
- Maitriser graphtools de Peixoto pour essayer d'utiliser l'arbre taxonomique sur graphe de cooccurence inférer par SparCC
|
||
|
||
- Maitriser SparCC
|
||
|
||
- 👶 (délégué à Mona) Clustering sur Doré :
|
||
- Regarder pour les couples date+nom les études et le nombre de réseaux analysables (Possible demander à Élisa)
|
||
- ⌛ Chamberlain et al semble intéressant à regarder ! Voir le Rmarkdown
|
||
- Clusteriser sur la base des noms et voir parmi les réseaux Européens (désagrégés ?)
|
||
- Si M > 10, alors voir si je retrouve les mêmes résultats que dans les études.
|
||
|
||
- Regarder *Largest gap* sur réseaux Doré
|
||
|
||
- ⌛ Essayer *clustering* sur `supinfo`
|
||
- CAH et Kmeans tendent vers faire $K = 13$ clusters sur les supinfos
|
||
- Enrichir avec des métriques sur les réseaux (nestedness, connectance autres ?)
|
||
- Demander à Elisa pour la signification des métadonnées
|
||
- Demander à Elisa une fois vu cohérences de groupe voir pour interprétation écologiques ?
|
||
- Algo de clustering sur les groupes trouvés
|
||
|
||
### Inférence et microbes
|
||
|
||
#### Modèle avec covariables sur probas d'appartenances aux groupes
|
||
|
||
Toujours modèle LBM mais avec probas d'appartenance pour les colonnes variables:
|
||
|
||
\begin{align*}
|
||
Z_i &\sim \mathcal{M}(1; \pi_1, \dots, \pi_Q), \sum_{q=1}^{Q} \pi_q = 1\\
|
||
W_j &\sim \mathcal{M}(1; \rho_1^j, \dots, \rho_R^j), \sum_{r=1}^{R} \rho_r^j = 1\\
|
||
Y_{i,j}&\mid Z_i = q, W_j = r \sim \mathcal{F}(\alpha_{qr})
|
||
\end{align*}
|
||
|
||
Inférence variationnelle donc $\ell(Y;\pmb{\theta}) \geq \mathcal{J}(\mathcal{R},\pmb{\theta})$ avec
|
||
|
||
$$
|
||
\ELBORTheta = \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})
|
||
+ \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} \\
|
||
- \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 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$.
|
||
|
||
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 - \log (\sum_{s=1}^{R} \exp{\beta_s X_j}))]
|
||
$${#eq-modele-covar-prop}
|
||
|
||
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 \exp{\beta_t X_j}}{\sum_{s=1}^{R} \exp{\beta_s X_j}} \biggr]\\
|
||
& = \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]
|
||
\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)
|
||
=
|
||
\ELBORTheta
|
||
+
|
||
\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),
|
||
$$
|
||
où $\ELBORTheta$ 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,
|
||
$$ {#eq-dual}
|
||
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
|
||
|
||
- Lire article multi-niveaux Saint-Clair
|
||
- 🆕 🔎 Trouver des papiers:
|
||
- LBM Negative Binomial
|
||
- Network inference through sample comparison
|
||
|
||
- Idée des groupes sur la base de distance phylogénétique:
|
||
- En train de comprendre les distances que phyloseq permet de calculer sur notre exemple
|
||
- En train de lire sur Principle coordinate analysis : https://openplantpathology.github.io/OPP_Workshop_Multivariate/2-MV_PCO.html
|
||
- Parametric t-SNE pour avoir une unique représentation latente (inconvénient utilise du Deep Learning)
|
||
- Lire Papier UniFrac
|
||
|
||
#### Réflexion
|
||
|
||
- easy16s : se renseigner sur
|
||
- $\alpha$, $\beta$ diversité
|
||
- Heatmap
|
||
- Regarder **SPARTA** Rennes
|
||
- Ecrire et étudier les modèles pour différents niveaux taxonomiques.
|
||
- 🆕 Regarder NetComi
|
||
- 🆕 Regarder OneNet car aggrégation plus robuste
|
||
- 🆕 Réfléchir sens d'aggréger les données ou de les diviser
|
||
|
||
#### Écrire et faire tourner
|
||
|
||
- Lancer *colBiSBM* sur $OTU\times Sample$ → problème du chargement en mémoire des données à voir
|
||
- Lancer *colSBM* sur $OTU\times OTU$
|
||
- TabNet pratiquer les [exercices](https://github.com/cregouby/Tutoriel_torch)
|
||
- 🆕 SparCC à différent niveaux
|
||
- 🆕 SBM à différent niveaux
|
||
- 🆕⌛ Tree-PLN à différents niveaux
|
||
|
||
|
||
#### Causalité
|
||
|
||
Plus sur le temps long, à regarder
|
||
|
||
- GT causalité
|
||
- Daria Bystrova lire présentation @bystrovaCausalDiscovery (Meek rules, V-structure)
|
||
|
||
## A discuter
|
||
|
||
- 🆕 Voir pour des Réseaux / GDR ou aller
|
||
- 🆕 Chercher des cours à suivre
|
||
|
||
## Biblio à faire
|
||
|
||
- Regarder Transport optimal graphes bipartite.
|
||
|
||
|
||
## Lectures en cours 📚
|
||
|
||
### HDR Vincent Brault
|
||
|
||
- ⌛ Chap 2 : Creuser l'idée de maximiser l'énergie libre, très intéressant regarder le critère CARI et lire Robert et al 2021. Actuellement p32 du manuscrit
|
||
- Chap 3
|
||
|
||
### OT
|
||
- ⌛ @mazeletUnsupervisedLearningOptimal Intéressant pour le transport optimal entre graphes de tailles différentes | Regarder si regularization entropique ne marche pas bien pour le graphe.
|
||
- ⌛ @nennaLecture2Entropic Pour comprendre le problème d'OT régularisé pour l'entropie.
|
||
- ⌛ @nennaLecture1Monge
|
||
|
||
### Inférence de graphes
|
||
|
||
- ⌛ @aitchisonStatisticalAnalysisCompositional1982a, en cours
|
||
|
||
- ❗📖 @payneFiniteMixturesMultivariate2023 sur MixMPLN
|
||
|
||
### Causalité
|
||
|
||
- ❗📖 @bystrovaCausalDiscovery
|
||
|
||
### Largest Gaps
|
||
|
||
- ❗📖 @braultFastConsistentAlgorithm2023
|
||
- ❗📖 @channarondClassificationEstimationStochastic2012 le papier qui introduit le *Largest Gaps* |