\documentclass{beamer}
\usetheme{Boadilla}

% importations
\usepackage[french]{babel} % pour dire que le texte est en francais
\usepackage{csquotes}
\usepackage[T1]{fontenc} % pour les font postscript
\usepackage[cyr]{aeguill} % Police vectorielle TrueType, guillemets francais
\usepackage{epsfig} % pour gérer les images
\usepackage{amsmath,amsthm, stmaryrd} % très bon mode mathématique
\usepackage{amsfonts,amssymb,bm, bbold}% permet la definition des ensembles
\usepackage{algorithm2e} % pour les algorithmes
\usepackage{algpseudocode} % pour les algorithmes
\usepackage{graphicx}
\usepackage{float} % pour le placement des figure
\usepackage{url} % pour une gestion efficace des url
\usepackage{hyperref}  % pour les hyperliens dans le document
\usepackage{tikz} % For graph plots
\usepackage[outline]{contour}
\usepackage{adjustbox} % To resize tikzpictures
\usepackage{fontawesome5}
\usepackage{makecell}

% Beamer
\setbeamertemplate{headline}{%
    \begin{beamercolorbox}[ht=2.25ex,dp=3.75ex]{section in head/foot}
        \insertnavigation{\paperwidth}
    \end{beamercolorbox}%
}%
\beamertemplatenavigationsymbolsempty % Pas de bar de navigation
\setbeamerfont{caption}{size=\scriptsize} % Petit titre de figures

% bibliographie
\usepackage[style=apa,sorting=none]{biblatex}
\addbibresource{../references.bib}

% Images
\graphicspath{{../img/}{../figure/}}

% Tikz
%% Tikz Related
\usetikzlibrary{calc,shapes,backgrounds,arrows,automata,shadows,positioning}
\usetikzlibrary{arrows,shapes,positioning,shadows,trees,calc,backgrounds,automata,positioning}
\usetikzlibrary{decorations.pathreplacing,calligraphy,external,petri}

%% Tikz sets
\tikzset{
    basic/.style  = {draw, text width=3cm, font=\sffamily, rectangle},
    root/.style   = {basic, rounded corners=2pt, thin, align=center,
            fill=green!30},
    level 2/.style = {basic, rounded corners=6pt, thin,align=center, fill=green!60,
            text width=8em},
    level 3/.style = {basic, thin, align=left, fill=pink!60, text width=3.5cm}
}

% Couleurs
% pour tickz multilevel
\definecolor{ao(english)}{rgb}{0.0, 0.5, 0.0}
\definecolor{redorg}{RGB}{215, 48, 39}
\definecolor{orangeorg}{RGB}{253, 174, 97}

\definecolor{blueind}{RGB}{016, 101, 171}
\definecolor{cyanind}{RGB}{058, 147, 195}
\definecolor{electricblue}{RGB}{142, 196, 222}

\definecolor{greenind}{RGB}{112, 130, 56}

\definecolor{burntorange}{RGB}{179, 021, 041}
\definecolor{goldenyellow}{RGB}{215, 095, 076}
\definecolor{peach}{RGB}{246, 164, 130}

\definecolor{gray}{RGB}{128, 128, 128}

% Footnote
\makeatletter
\newcommand\blfootnote[1]{%
  \begingroup
  \renewcommand{\@makefntext}[1]{\noindent\makebox[1.8em][r]#1}
  \renewcommand\thefootnote{}\footnote{#1}%
  \addtocounter{footnote}{-1}%
  \endgroup
}
\makeatother


\subtitle{Séminaire des stagiaires}
\title[Collections de réseaux bipartites]{Détection de structure dans des réseaux bipartites}
\author[L. Lacoste]{Louis \textsc{Lacoste}} % Sous la supervision de Pierre
\date{4 juillet 2024}

\begin{document}

% titre
\begin{frame}[noframenumbering,plain]
    \maketitle
\end{frame}

\section{Contexte du modèle}
\label{sec:contexte-du-modele}
\begin{frame}
    \frametitle{Contexte écologique}
    \begin{itemize}
        \item Faire de la détection de structure sur un réseau (SBM, LBM) mais intérêt à le faire sur plusieurs
        \item De nombreux réseaux disponibles \parencite{WebLifeEcological} et décrivant des interactions similaires
        \item Re-grouper les réseaux selon leur similarité (\emph{clustering} de réseaux)
        \item Transférer de l'information grâce à la collection (par exemple reconstitution de données manquantes)
        \item Déterminer des structures d'interactions fines de manière agnostique % Pas d'idee preco
              %\item Vérifier si le regroupement est lié à des co-variables
    \end{itemize}
\end{frame}
\begin{frame}
    \frametitle{Réseaux bipartites\footnote{Ou \emph{bipartis}. Voir~\cite{larousseDefinitionsBipartiBipartite}.}}
    \begin{columns}[c]
        \begin{column}{0.65\textwidth}
            \begin{figure}[ht]
                \centering
                \begin{tikzpicture}[scale=.65]
                    \input{../tikz/plantpollinatornetwork.tex}
                \end{tikzpicture}
                \caption{Exemple d'un réseau plantes-pollinisateurs}
                \label{fig:plantes-pollin}

            \end{figure}
        \end{column}
        \hfill
        \begin{column}{0.35\linewidth}
            \centering
            \begin{align*}
                X = \begin{pmatrix}
                        1 & 1 & 1 & 1 & 0 & 0 \\
                        0 & 0 & 0 & 1 & 0 & 1 \\
                        1 & 0 & 0 & 0 & 1 & 0 \\
                        0 & 0 & 0 & 0 & 1 & 0
                    \end{pmatrix}
            \end{align*}
            \footnotesize
            Matrice d'adjacence associée
        \end{column}
    \end{columns}
    \smallskip
    Permet de décrire des interactions impliquant deux agents dont les rôles
    sont de natures différentes.\\
    Par exemple : hôtes-parasites, plantes-pollinisateurs, graines-disperseurs \dots
\end{frame}

\begin{frame}
    \frametitle{Latent Block Model (LBM\footnotemark[2])}
    %DONE remplacer i \in bullet par Zi = \bullet
    Proposé par~\cite{govaertEMAlgorithmBlock2005}.
    \begin{columns}
        \begin{column}{0.40\linewidth}
            \begin{figure}[H]
                \center
                \begin{tikzpicture}[scale=0.35]
                    \input{../tikz/lbm.tex}
                \end{tikzpicture}
                \caption{Exemple de LBM\footnotemark}
                \label{fig:LBMvisu}
            \end{figure}
        \end{column}
        \begin{column}{0.51\linewidth}
            Pour \begin{itemize}
                \item $Q_1 = |\{{\color{blueind}\bullet},{\color{cyanind}\bullet},{\color{electricblue}\bullet}\}|$ blocs fixés en ligne
                \item $Q_2 = |\{{\color{burntorange}\bullet},{\color{goldenyellow}\bullet},{\color{peach}\bullet}\}|$ blocs fixés en colonne
            \end{itemize}
            \begin{block}{Paramètres}
                \begin{itemize}
                    \item $\pi_{\bullet} = \mathbb{P}(Z_i = \bullet)$ en ligne et $\rho_{\bullet} = \mathbb{P}(W_j = \bullet)$ en colonne
                    \item $\alpha_{{\color{blueind}\bullet}{\color{burntorange}\bullet}} = \mathbb{P}(X_{ij} = 1 | Z_i = {\color{blueind}\bullet}, W_j = {\color{burntorange}\bullet})$
                \end{itemize}
            \end{block}
        \end{column}
    \end{columns}

    \footnotetext{Que j'appellerai par la suite BiSBM}

\end{frame}

\section{Extension de \emph{colSBM} aux réseaux bipartites}
\label{sec:extension-de-colsbm-aux-reseaux-bipartites}
\begin{frame}
    \frametitle{Collections bipartites}
    \begin{tikzpicture}[scale=0.33]
        \input{../tikz/collbm-iid.tex}
    \end{tikzpicture}

    \begin{itemize}
        \item $Q_1 = |\{{\color{blueind}\bullet},{\color{cyanind}\bullet},{\color{electricblue}\bullet}\}|$ blocs fixés en ligne
        \item $Q_2 = |\{{\color{burntorange}\bullet},{\color{goldenyellow}\bullet},{\color{peach}\bullet}\}|$ blocs fixés en colonne
    \end{itemize}
    \begin{block}{Paramètres}
        \begin{itemize}
            \item $\pi_{\bullet} = \mathbb{P}(Z_i =\bullet)$ en ligne et $\rho_{\bullet} = \mathbb{P}(W_j = \bullet)$ en colonne
            \item $\alpha_{{\color{blueind}\bullet}{\color{burntorange}\bullet}} = \mathbb{P}(X_{ij} = 1  | Z_i = {\color{blueind}\bullet}, W_j = {\color{burntorange}\bullet})$
        \end{itemize}
    \end{block}
\end{frame}

\begin{frame}
    \frametitle{Différents modèles}
    \only<1>{
        \begin{tikzpicture}[scale=0.33]
            \input{../tikz/collbm-iid.tex}
        \end{tikzpicture}
        \begin{block}{\emph{iid-colBiSBM}}
            $\bm{\pi} = (\pi_1, \dots \pi_{Q_1})$ et $\bm{\rho} = (\rho_1, \dots \rho_{Q_2})$
        \end{block}
    }
    \only<2>{
        \begin{tikzpicture}[scale=0.33]
            \input{../tikz/collbm-pirho.tex}
        \end{tikzpicture}
        \begin{block}{\emph{$\pi\rho$-colBiSBM}}
            $\bm{\pi} = ((\pi_{\color{black}1}^{\color{red}m}, \dots \pi_{\color{black}Q_1}^{\color{red}m}))_{m=1,\dots M}$ et $\bm{\rho} = ((\rho_{\color{black}1}^{\color{red}m}, \dots \rho_{\color{black}Q_2}^{\color{red}m}))_{m=1,\dots M}$ %{$\forall q \in \llbracket 1, Q_1 - 1\rrbracket, \pi_q > 0$ et $\forall r \in \llbracket 1, Q_2 - 1\rrbracket, \rho_r > 0$}
            \small \\
            avec $\forall q,m \in \llbracket 1, Q_1 \rrbracket \times \llbracket 1, M \rrbracket, \pi_q^m \in \left[ 0,1 \right]$
            et $\forall r,m \in \llbracket 1, Q_2 \rrbracket \times \llbracket 1, M \rrbracket, \rho_r^m \in \left[ 0,1 \right]$
        \end{block}
    }
    Dans tous les modèles la structure de connectivité ($\bm{\alpha}$) est supposée identique au sein de la collection.
\end{frame}
\begin{frame}
    \frametitle{Estimation des paramètres}
    % DONE dire que tau i q m c' est la proba que Zim = q, approximation de la proba variationnelle. Parce qu on impose lindependance
    Maximisation d'une borne inférieure de la log-vraisemblance des données observées.
    \begin{multline*}
        \ell (\bm{X};\bm{\theta}) \geq \color{red}\sum_{m=1}^{M} \bigg( \color{black} \sum_{i = 1}^{n_1^m}\sum_{j=1}^{n_2^m}\sum_{q \in \mathcal{Q}_{1,m}} \sum_{r \in \mathcal{Q}_{2,m}} \tau^{1,m}_{i,q} \tau^{2,m}_{j,r} \log f(X^{m}_{ij}; \alpha_{qr}) \\
        + \sum_{i=1}^{n_1^m} \sum_{q \in \mathcal{Q}_{1,m}} \tau^{1,m}_{i,q} \log \pi_{\color{black}q}^{\color{gray}m} + \sum_{j=1}^{n_2^m} \sum_{r \in \mathcal{Q}_{2,m}} \tau^{2,m}_{j,r} \log \rho_{\color{black}r}^{\color{gray}m} \\
        - \sum_{i=1}^{n_1} \tau^{1,m}_{i,q} \log \tau^{1,m}_{i,q} - \sum_{j=1}^{n_2} \tau^{2,m}_{j,r} \log \tau^{2,m}_{j,r} \color{red}\bigg) \color{black} =: J(\bm{\tau};\bm{\theta}) $$
    \end{multline*}

    \begin{block}{Approximation variationnelle}
        $\tau_{i,q}^{1,m} = P(Z_i = q | X^m_{ij})$ et $\tau_{j,r}^{2,m} = P(W_j = r | X^m_{ij})$ tels que $P(Z_i = q, W_j = r | X^m_{ij}) = \tau_{i,q}^{1,m}\times\tau_{j,r}^{2,m}$
    \end{block}

\end{frame}

\begin{frame}
    \frametitle{Sélection de modèle : choix de $(Q_1,Q_2)$ - Approche gloutonne}
    % DONE But maximiser un critere le BICL, deplacer voir St Clair dans la note
    % VEM a Q1 Q2 fixer
    % Choix de Q1 Q2 par maximisation du BICL
    % Itemize dans la box : init, explo voisin, arrets
    \underline{Le VEM se fait à $Q_1, Q_2$ fixés}, il faut donc déterminer les \enquote*{meilleures} coordonnées.
    Nous maximisons un BIC-L\footnote{\emph{Bayesian Information Criterion - Like}, en adaptant les formules de~\cite{chabert-liddellLearningCommonStructures2023}}.

    Détermination d'un premier mode par approche \emph{gloutonne} \smallskip
    \begin{columns}
        \begin{column}{0.5\linewidth}
            \begin{tikzpicture}
                \input{../tikz/greedy-exploration.tex}
            \end{tikzpicture}
        \end{column}
        \begin{column}{0.5\linewidth}
            \begin{block}{Exploration gloutonne}
                \begin{itemize}
                    \item Initialisation sur $(1,2)$ et $(2,1)$
                    \item Exploration des 4 voisins et déplacement sur le meilleur des 4
                    \item Arrêt après 2 étapes successives sans augmentation du BIC-L
                \end{itemize}
            \end{block}
        \end{column}
    \end{columns}
\end{frame}
\begin{frame}
    \frametitle{Sélection de modèle : choix de $(Q_1,Q_2)$ - Fenêtre glissante}
    \begin{columns}
        \begin{column}{0.6\textwidth}
            \begin{figure}
                \input{../tikz/moving-window.tex}
                \caption{Fenêtre glissante}
            \end{figure}
        \end{column}
        \begin{column}{0.4\textwidth}
            \only<3>{\begin{block}{}
                    Initialisation du modèle si nécessaire
                \end{block}}
            \only<9>{\begin{block}{}
                    Localisation du nouveau mode
                \end{block}}
            \only<10>{\begin{block}{}
                    Déplacement sur le nouveau mode puis itération
                \end{block}}
        \end{column}
    \end{columns}


\end{frame}

\begin{frame}
    \frametitle{Clustering de réseaux}
    \begin{tikzpicture}
        \tikzstyle{instruct}=[font=\small, text justified, rectangle,draw,fill=yellow!50]
        \tikzstyle{first_col}=[rectangle, text justified, draw,fill=gray!50]
        \tikzstyle{second_col}=[scale=0.55, circle, draw,fill=red!50]
        \tikzstyle{test}=[font=\small, text justified, diamond, aspect=2.5,thick,
        draw=blue,fill=yellow!50,text=blue]
        \tikzstyle{es}=[font=\small, text justified, rectangle,draw,rounded corners=4pt,fill=cyanind!25]

        \node[es] (liste) at (0,4) {Donner une collection à partitionner};
        \node[instruct, text width=5cm, below = 0.45cm of liste] (1-collection) {Ajuster \emph{colBiSBM}};
        \node[first_col, right = 0.5cm of 1-collection] (1-col-obj) {};
        \node[instruct, text width=5cm, below = 0.45cm of 1-collection] (dissimi) {Calculer une matrice de dissimilarité de la collection};
        \node[instruct, text width=5cm, below = 0.45cm of dissimi] (2-sous-collection) {Séparer la \emph{collection en 2 sous-collections} et ajuster les \emph{colBiSBM}};
        \node[second_col, right = 0.25cm of 2-sous-collection] (1-sec-col-obj) {1};
        \node[second_col, right = 0.25cm of 1-sec-col-obj] (1-sec-col-obj) {2};
        \node[test,below = 0.45cm of 2-sous-collection, scale=0.5] (BICL-test) {$\sum_{i=1}^{2} (\text{BIC-L}(\tikz[baseline=-0.25cm]{\node[second_col] {i};} )) > \text{BIC-L}(\tikz[baseline=-0.25cm]{\node[first_col] {};})$?};
        \node[es, right = 0.55cm of BICL-test] (sortie) {Renvoyer \tikz{\node[rectangle, draw, fill=gray!50, rounded corners=0pt] {};}};
        \node[es, left = 0.45cm of dissimi, text width = 2cm] (recursion) {Recommencer sur \tikz{\node[second_col] {1};} et \tikz{\node[second_col] {2};} };

        \tikzstyle{suite}=[->,>=stealth,thick,rounded corners=4pt]
        \draw[suite] (liste) -- (1-collection);
        \draw[suite] (1-collection) -- (dissimi);
        \draw[suite] (dissimi) -- (2-sous-collection);
        \draw[suite] (2-sous-collection) -- (BICL-test);
        \draw[suite] (BICL-test) -| node[near start, above, fill=none] {Oui} (recursion);
        \draw[suite] (recursion.north) |- (1-collection.west);
        \draw[suite] (BICL-test) -- node[near start, above, fill=none] {Non} (sortie);

    \end{tikzpicture}
    \blfootnote{Même approche que~\cite{chabert-liddellLearningCommonStructures2023}}
\end{frame}

\section{Application}
\label{sec:application}

\section{Conclusion}
\label{sec:conclusion}
\begin{frame}
    \frametitle{Conclusion et perspectives}
    % DONE Ajouter une slide conclusion perspective
    % Rappeler les modeles avec clustering
    % Evoquer l'analyse de reseaux corrigés pour l'échantillonnage
    % Lien vers le package

    \begin{itemize}
        \item 4 modèles dont 3 qui ont une flexibilité sur au moins une des dimensions (adaptabilité aux données)
        \item Partitionner un ensemble de réseaux selon leurs structures
        \item Comparer les \emph{clusterings} de réseaux obtenus entre données brutes et données corrigées (par exemple par la méthode \emph{CoOPLBM}\footnote{~\cite{anakokDisentanglingStructureEcological2022}})
    \end{itemize}

    \bigskip
    \centering
    Le package est disponible sur GitHub : \faGithub  \url{https://github.com/Chabert-Liddell/colSBM}

    \bigskip
    \huge
    Merci pour votre attention !

\end{frame}
\renewcommand{\pgfuseimage}[1]{\scalebox{.75}{\includegraphics{#1}}}
\begin{frame}[noframenumbering,plain,allowframebreaks]
    \frametitle{Bibliographie}
    \printbibliography
\end{frame}

\end{document}