From 8f557c53ab37d649e0b7ba38a7b2c9181468e043 Mon Sep 17 00:00:00 2001 From: xadupre Date: Tue, 8 Oct 2024 22:49:53 +0200 Subject: [PATCH 01/11] replace infegal by leqslant --- CHANGELOGS.rst | 6 +- _doc/c_algo/edit_distance.rst | 8 +- _doc/c_clus/gauss_mixture.rst | 6 +- _doc/c_clus/kmeans.rst | 26 +++--- _doc/c_clus/kohonen.rst | 6 +- _doc/c_garden/file_dattente.rst | 14 +-- _doc/c_garden/strategie_avec_alea.rst | 14 +-- _doc/c_metric/pvalues.rst | 6 +- _doc/c_metric/roc.rst | 20 ++-- _doc/c_ml/kppv.rst | 18 ++-- _doc/c_ml/lr_trees.rst | 4 +- _doc/c_ml/missing_values_mf.rst | 12 +-- _doc/c_ml/rn/rn_1_def.rst | 4 +- _doc/c_ml/rn/rn_2_reg.rst | 6 +- _doc/c_ml/rn/rn_3_clas.rst | 4 +- _doc/c_ml/rn/rn_4_densite.rst | 28 +++--- _doc/c_ml/rn/rn_5_newton.rst | 2 +- _doc/c_ml/rn/rn_6_apprentissage.rst | 4 +- _doc/c_ml/rn/rn_7_clas2.rst | 20 ++-- _doc/c_ml/rn/rn_8_prol.rst | 12 +-- _doc/c_ml/rn/rn_9_auto.rst | 8 +- _doc/c_ml/survival_analysis.rst | 4 +- _doc/c_nlp/completion_digression.rst | 6 +- _doc/c_nlp/completion_formalisation.rst | 4 +- _doc/c_nlp/completion_metrique.rst | 18 ++-- _doc/c_nlp/completion_optimisation.rst | 8 +- _doc/c_nlp/completion_propriete.rst | 6 +- _todo/clas_supervise/clas_supervise.tex | 2 +- _todo/classification/classification.tex | 14 +-- _todo/edit_distance/edit_distance.tex | 8 +- _todo/hmm/hmm.tex | 48 +++++----- _todo/image/image.tex | 48 +++++----- _todo/ngrams/ngrams.tex | 8 +- _todo/space_metric/space_metric.tex | 92 +++++++++---------- _todo/squelette/squelette.tex | 58 ++++++------ _todo/svm/svm.tex | 42 ++++----- mlstatpy/__init__.py | 14 +-- .../image/detection_segment/queue_binom.py | 2 +- mlstatpy/nlp/completion.py | 10 +- 39 files changed, 304 insertions(+), 316 deletions(-) diff --git a/CHANGELOGS.rst b/CHANGELOGS.rst index 8d5620b9..50f1e9c5 100644 --- a/CHANGELOGS.rst +++ b/CHANGELOGS.rst @@ -4,11 +4,11 @@ Change Logs 0.5.0 +++++ -* :pr:`42`: quantization -* :pr:`39`: refactoring, use black, better documentation - 0.4.0 ===== + +* :pr:`42`: quantization +* :pr:`39`: refactoring, use black, better documentation * :pr:`32`: Improves usability of distance_matching_graphs_paths (2021-08-10) * :pr:`31`: Links to notebooks are broken, notebooks slides are not working. (2021-03-31) * :pr:`30`: Fixes #26, implements a compact architecture (2021-01-23) diff --git a/_doc/c_algo/edit_distance.rst b/_doc/c_algo/edit_distance.rst index 2c65ed9d..9e6af3b3 100644 --- a/_doc/c_algo/edit_distance.rst +++ b/_doc/c_algo/edit_distance.rst @@ -264,7 +264,7 @@ tels que :math:`d\pa{m_1,m_2} = d\pa{N_2,N_1}` alors : Il reste à démontrer l'inégalité triangulaire. Soient trois mots :math:`\pa{m_1,m_2,m_3}`, on veut démontrer que -:math:`d\pa{m_1,m_3} \infegal d\pa{m_1,m_2} + d \pa{m_2,m_3}`. +:math:`d\pa{m_1,m_3} \leqslant d\pa{m_1,m_2} + d \pa{m_2,m_3}`. On définit : .. math:: @@ -292,7 +292,7 @@ tels que : \end{eqnarray*} Or comme la fonction :math:`c` est une distance sur :math:`\mathcal{C}'`, on peut affirmer que : -:math:`d\pa{M_1,M_3} \infegal d\pa{M_1,M_2} + d \pa{M_2,M_3}`. +:math:`d\pa{M_1,M_3} \leqslant d\pa{M_1,M_2} + d \pa{M_2,M_3}`. D'où : .. math:: @@ -300,7 +300,7 @@ D'où : :label: edit_demo_eq_3 \begin{eqnarray*} - d\pa{m_1,m_3} \infegal d\pa{m_1,m_2} + d \pa{m_2,m_3} + d\pa{m_1,m_3} \leqslant d\pa{m_1,m_2} + d \pa{m_2,m_3} \end{eqnarray*} Les assertions :eq:`1 `, :eq:`2 `, :eq:`3 ` @@ -410,7 +410,7 @@ La démonstration s'effectue par récurrence, la définition :ref:`3 ` pour des mots de longueur un. On suppose donc que ce résultat est vrai pour un couple de mots :math:`\pa{m_1,m_2}` de longueur :math:`\pa{l_1,l_2}` -vérifiant :math:`l_1 \infegal i` et `l_2 \infegal j` avec au plus une égalité. +vérifiant :math:`l_1 \leqslant i` et `l_2 \leqslant j` avec au plus une égalité. Soit :math:`m` un mot, on note :math:`n` le nombre de lettres qu'il contient. On note :math:`m\left( l\right)` le mot formé des :math:`l` premières lettres de :math:`m`. Alors : diff --git a/_doc/c_clus/gauss_mixture.rst b/_doc/c_clus/gauss_mixture.rst index e3e37808..c59ea468 100644 --- a/_doc/c_clus/gauss_mixture.rst +++ b/_doc/c_clus/gauss_mixture.rst @@ -17,7 +17,7 @@ Algorithme EM Soit :math:`X` une variable aléatoire d'un espace vectoriel de dimension :math:`d`, :math:`X` suit un la loi d'un mélange de :math:`N` lois gaussiennes de paramètres - :math:`\pa{\mu_i, \Sigma_i}_ {1 \infegal i \infegal N}`, + :math:`\pa{\mu_i, \Sigma_i}_ {1 \leqslant i \leqslant N}`, alors la densité :math:`f` de :math:`X` est de la forme : .. math:: @@ -92,7 +92,7 @@ on suppose que :math:`X` suit la loi du mélange suivant : f\pa{X \sac \theta} = \sum_{i=1}^{k} \alpha_i \, f\pa{X \sac \theta_i} -Avec : :math:`\theta = \pa{\alpha_i,\theta_i}_{1 \infegal i \infegal k}, \; \forall i, \; \alpha_i \supegal 0` +Avec : :math:`\theta = \pa{\alpha_i,\theta_i}_{1 \leqslant i \leqslant k}, \; \forall i, \; \alpha_i \supegal 0` et :math:`\sum_{i=1}^{k} \alpha_i = 1`. On définit pour une classe :math:`m` la probabilité @@ -184,7 +184,7 @@ est dérivé de l'algorithme EM : P_a = \min \acc{ \exp\cro{ \frac{ L\pa{ \theta''_t, X} - L\pa{ \theta_t, X} }{\gamma} }, 1} On génére aléatoirement une variable :math:`u \sim U\cro{0,1}`, - si :math:`u \infegal P_a`, alors les paramètres :math:`\theta''_t` + si :math:`u \leqslant P_a`, alors les paramètres :math:`\theta''_t` sont validés. :math:`\hat{\theta}_t \longleftarrow \theta''_t` et retour à l'étape d'expectation. Dans le cas contraire, les paramètres :math:`\theta''_t` sont refusés et retour à l'étape précédente. diff --git a/_doc/c_clus/kmeans.rst b/_doc/c_clus/kmeans.rst index 38b5faa3..c6a4ebcf 100644 --- a/_doc/c_clus/kmeans.rst +++ b/_doc/c_clus/kmeans.rst @@ -130,12 +130,12 @@ On en déduit que : \begin{eqnarray} J^{t+1} &=& \sum_{i, c_i^t \neq c_i^{t+1}} \; d^2\pa{ X_i, G_{c_i^{t+1}}^t} + J^{t+1} \sum_{i, c_i^t = c_i^{t+1}} \; d^2\pa{ X_i, G_{c_i^{t+1}}^t} \\ - J^{t+1} &\infegal& \sum_{i, c_i^t \neq c_i^{t+1}} \; d^2\pa{ X_i, G_{c_i^{t}}^t} + \sum_{i, c_i^t = c_i^{t+1}} \; d^2\pa{ X_i, G_{c_i^{t}}^t} \\ - J^{t+1} &\infegal& I^t + J^{t+1} &\leqslant& \sum_{i, c_i^t \neq c_i^{t+1}} \; d^2\pa{ X_i, G_{c_i^{t}}^t} + \sum_{i, c_i^t = c_i^{t+1}} \; d^2\pa{ X_i, G_{c_i^{t}}^t} \\ + J^{t+1} &\leqslant& I^t \end{eqnarray} Le lemme précédent appliqué à chacune des classes :math:`\ensemble{1}{C}`, -permet d'affirmer que :math:`I^{t+1} \infegal J^{t+1}`. +permet d'affirmer que :math:`I^{t+1} \leqslant J^{t+1}`. Par conséquent, la suite :math:`\pa{I_t}_{t\supegal 0}` est décroissante et minorée par 0, elle est donc convergente. @@ -242,7 +242,7 @@ par la suivante : La fonction :math:`D_k` est définie par la distance du point :math:`x` au centre :math:`G_l` choisi parmi les :math:`k` premiers centres. - :math:`D_k(x) = \min_{1 \infegal l \infegal k} d(x - G_l)`. + :math:`D_k(x) = \min_{1 \leqslant l \leqslant k} d(x - G_l)`. La suite de l'algorithme *k-means++* reprend les mêmes étapes que :ref:`k-means `. @@ -257,7 +257,7 @@ centres déjà choisis. L'article montre que : On définit l'inertie par :math:`J_(X) = \sum_{i=1}^{P} \; \min_G d^2(X_i, G)`. Si :math:`J_{OPT}` définit l'inertie optimale alors - :math:`\esp{J(X)} \infegal 8 (\ln C + 2) J_{OPT}(X)`. + :math:`\esp{J(X)} \leqslant 8 (\ln C + 2) J_{OPT}(X)`. La démonstration est disponible dans l'article [Arthur2007]_. @@ -314,7 +314,7 @@ Estimation de probabilités ========================== A partir de cette classification en :math:`C` classes, on construit un -vecteur de probabilités pour chaque point :math:`\pa{X_{i}}_{1 \infegal i \infegal P}` +vecteur de probabilités pour chaque point :math:`\pa{X_{i}}_{1 \leqslant i \leqslant P}` en supposant que la loi de :math:`X` sachant sa classe :math:`c_X` est une loi normale multidimensionnelle. La classe de :math:`X_i` est notée :math:`c_i`. On peut alors écrire : @@ -500,7 +500,7 @@ L'inertie de ce nuage de points est définie par : On définit tout d'abord une distance :math:`\alpha \in \mathbb{R}^+`, puis l'ensemble -:math:`V\pa{y,\alpha} = \acc{ z \in Y \sac d\pa{y,z} \infegal \alpha }`, +:math:`V\pa{y,\alpha} = \acc{ z \in Y \sac d\pa{y,z} \leqslant \alpha }`, :math:`V\pa{y,\alpha}` est donc l'ensemble des voisins des centres dont la distance avec :math:`y` est inférieur à :math:`\alpha`. L'article [Kothari1999]_ propose de minimiser le coût :math:`J\pa{\alpha}` @@ -596,7 +596,7 @@ Il s'appuie sur la méthode des multiplicateurs de Lagrange. | for i in :math:`1..N` | Mise à jour d'après le premier terme de la fonction de coût :math:`J\pa{\alpha}`. - | :math:`w \longleftarrow \underset{1 \infegal l \infegal K}{\arg \min} \; \norme{x_i - y_l}^2` + | :math:`w \longleftarrow \underset{1 \leqslant l \leqslant K}{\arg \min} \; \norme{x_i - y_l}^2` | :math:`z^1_w \longleftarrow z^1_w + \eta \pa{ x_i - y_w}` | :math:`c^1_w \longleftarrow c^1_w + 1` | @@ -617,7 +617,7 @@ Il s'appuie sur la méthode des multiplicateurs de Lagrange. :math:`y_k`, retour à l'étape précédente. Sinon, tous les couples de classes :math:`\pa{i,j}` vérifiant :math:`\norme{y_i - y_j} > \alpha` sont fusionnés : :math:`\alpha \longleftarrow \alpha + \alpha_t`. - Si :math:`\alpha \infegal \alpha2`, retour à l'étape de préparation. + Si :math:`\alpha \leqslant \alpha2`, retour à l'étape de préparation. *terminaison* @@ -652,7 +652,7 @@ L'algorithme qui suit a pour objectif de minimiser la quantité pour un échanti .. math:: - I = \sum_{i=1}^{N}\sum_{k=1}^{K} \indicatrice{ i = \underset{1 \infegal j \infegal N}{\arg \max} + I = \sum_{i=1}^{N}\sum_{k=1}^{K} \indicatrice{ i = \underset{1 \leqslant j \leqslant N}{\arg \max} G\pa{X_k, \mu_j,\Sigma_j} } \; \ln \cro{ p_i G\pa{ X_k, \mu_i, \Sigma_i } } .. mathdef:: @@ -666,7 +666,7 @@ L'algorithme qui suit a pour objectif de minimiser la quantité pour un échanti *initialisation* :math:`t \longleftarrow 0`. - Les paramètres :math:`\acc{p_i^0, \mu_i^0, \Sigma_i^0 \sac 1 \infegal i \infegal N}` sont initialisés + Les paramètres :math:`\acc{p_i^0, \mu_i^0, \Sigma_i^0 \sac 1 \leqslant i \leqslant N}` sont initialisés grâce à un algorithme des :ref:`k-means ` ou :ref:`FSCL `. :math:`\forall i, \; p_i^0 = \frac{1}{N}` et :math:`\beta_i^0 = 0`. @@ -676,7 +676,7 @@ L'algorithme qui suit a pour objectif de minimiser la quantité pour un échanti .. math:: - i = \underset{1 \infegal i \infegal N}{\arg \min} \; G\pa{X_k, \mu_i^t, \Sigma_i^t} + i = \underset{1 \leqslant i \leqslant N}{\arg \min} \; G\pa{X_k, \mu_i^t, \Sigma_i^t} | for i in :math:`1..N` | :math:`\mu_i^{t+1} = \mu_i^t + \eta \, \pa{\Sigma_i^t}^{-1} \, \pa{ X_k - \mu_i^t}` @@ -690,7 +690,7 @@ L'algorithme qui suit a pour objectif de minimiser la quantité pour un échanti *terminaison* - Tant que :math:`\underset{1 \infegal i \infegal N}{\arg \min} \; G\pa{X_k, \mu_i^t, \Sigma_i^t}` + Tant que :math:`\underset{1 \leqslant i \leqslant N}{\arg \min} \; G\pa{X_k, \mu_i^t, \Sigma_i^t}` change pour au moins un des points :math:`X_k`. Lors de la mise à jour de :math:`\Sigma^{-1}`, diff --git a/_doc/c_clus/kohonen.rst b/_doc/c_clus/kohonen.rst index ad15efac..6fdbdff8 100644 --- a/_doc/c_clus/kohonen.rst +++ b/_doc/c_clus/kohonen.rst @@ -58,7 +58,7 @@ linéaire, rectangulaire, triangulaire. On choisi aléatoirement un points du nuage :math:`X_i` puis on définit le neurone :math:`\mu_{k^*}^t` de telle sorte que : - :math:`\norme{ \mu_{k^*}^t - X_i} = \underset{1 \infegal j \infegal N}{\min } \; \norme{ \mu_j^t - X_i }`. + :math:`\norme{ \mu_{k^*}^t - X_i} = \underset{1 \leqslant j \leqslant N}{\min } \; \norme{ \mu_j^t - X_i }`. *mise à jour* @@ -153,7 +153,7 @@ L'article définit ensuite la densité interne pour :math:`C` classes : \begin{eqnarray*} D_{int} (C) &=& \frac{1}{C} \; \sum_{k=1}^{C} \; \sum_{i=1}^{N} \; \sum_{j=1}^{N} \; - a_{ik} a_{jk} \indicatrice{ \norme{ X_i - X_j} \infegal \sigma } + a_{ik} a_{jk} \indicatrice{ \norme{ X_i - X_j} \leqslant \sigma } \end{eqnarray*} On définit la distance :math:`d^*_{kl}` pour :math:`\pa{k,l} \in \ensemble{1}{C}^2`, @@ -175,7 +175,7 @@ La densité externe est alors définie en fonction du nombre de classes :math:`C \begin{eqnarray*} D_{ext} (C) = \sum_{k=1}^{C} \; \sum_{l=1}^{C} \; \cro{ \frac{ d_{kl} } { \sigma\pa{k} \sigma\pa{l} } \; \sum_{i=1}^{N} \; \indicatrice{ a_{ik} + a_{il} > 0 } \indicatrice{ \norme{ X_i - \frac{X_{i^*}^{kl} + X_{j^*}^{kl}}{2} } - \infegal \frac{\sigma\pa{k} +\sigma\pa{l}}{2} } } + \leqslant \frac{\sigma\pa{k} +\sigma\pa{l}}{2} } } \end{eqnarray*} L'article définit ensuite la séparabilité en fonction du nombre de classes :math:`C` : diff --git a/_doc/c_garden/file_dattente.rst b/_doc/c_garden/file_dattente.rst index d06b475c..a48747da 100644 --- a/_doc/c_garden/file_dattente.rst +++ b/_doc/c_garden/file_dattente.rst @@ -83,7 +83,7 @@ pas du temps. :nowrap: \begin{eqnarray} - f(t) &=& \mu \; e^{- \mu t} \text{ et } \pr {X \infegal t} = + f(t) &=& \mu \; e^{- \mu t} \text{ et } \pr {X \leqslant t} = \int_0^t \mu \; e^{- \mu x} dx = 1 - e^{-\mu t} \end{eqnarray} @@ -117,7 +117,7 @@ suivant une loi exponentielle, alors : :nowrap: \begin{eqnarray*} - \pr{B(x,t,dt)} &=& \pr{ D \infegal t+dt-x \sac D > t-x } \\ + \pr{B(x,t,dt)} &=& \pr{ D \leqslant t+dt-x \sac D > t-x } \\ &=& \frac{ \pr{ t+dt-x \supegal D > t-x } } { \pr{ D > t-x }} \\ &=& \frac{ \int_{t-x}^{t+dt-x} \mu e^{-\mu u} du } { \int_{t-x}^{\infty} \mu e^{-\mu u} du } = \frac{ e^{- \mu (t-x) } - e^{- \mu (t-x+dt) } } { e^{-\mu (t-x) }} \\ @@ -250,16 +250,16 @@ la probabilité qu'une personne parmi :math:`k` quitte un guichet est : :nowrap: \begin{eqnarray*} - \pr{ \min \ensemble{D_1}{D_k} \infegal dt } &=& 1 - \pr {\min \ensemble{D_1}{D_k} > dt} \\ + \pr{ \min \ensemble{D_1}{D_k} \leqslant dt } &=& 1 - \pr {\min \ensemble{D_1}{D_k} > dt} \\ &=& 1 - \cro{\prod_{n=1}^{k} \pr {D_n > dt}} \\ - &=& 1 - \cro{\prod_{n=1}^{k} 1 - \pr {D_n \infegal dt}} \\ + &=& 1 - \cro{\prod_{n=1}^{k} 1 - \pr {D_n \leqslant dt}} \\ &=& 1 - \cro{\prod_{n=1}^{k} e^{-\mu dt}} \\ &=& 1 - e^{- k\mu dt} \sim k \mu dt + o(dt) \end{eqnarray*} Pour déterminer les probabilités :math:`\pa{p_n}_n`, on applique le même raisonnement que pour un système :math:`M/M/1` en distinguant -les cas :math:`n \infegal S` et :math:`n > S`. On adapte la récurrence +les cas :math:`n \leqslant S` et :math:`n > S`. On adapte la récurrence donnée par le système d'équations :eq:`systeme_mm1` au cas :math:`M/M/S` : .. math:: @@ -269,7 +269,7 @@ donnée par le système d'équations :eq:`systeme_mm1` au cas :math:`M/M/S` : \begin{eqnarray*} && \left \{ \begin{array}{lll} \mu p_1 - \lambda p_0 &=& 0 \\ - \lambda p_{n-1} + \pa{n+1} \mu p_{n+1} - \pa {n \mu + \lambda } p_n &=& 0 \text{ si } 1 \infegal n < S \\ + \lambda p_{n-1} + \pa{n+1} \mu p_{n+1} - \pa {n \mu + \lambda } p_n &=& 0 \text{ si } 1 \leqslant n < S \\ \lambda p_{n-1} + S \mu p_{n+1} - \pa { S \mu + \lambda } p_n &=& 0 \text{ si } n \supegal S \end{array}\right. \end{eqnarray*} @@ -453,7 +453,7 @@ Cette fonction vérifie :math:`F_{\mu}^{-1}\pa{F_{\mu}(x)} = 1`. Or si :math:`U` est une variable aléatoire uniforme sur :math:`\cro{0,1}`, alors la variable :math:`V = F_{\mu}^{-1}(U)` suit la loi exponentielle avec :math:`\mu` pour paramètre. -Effectivement, :math:`\pr{ V \infegal t} = \pr{ F_{\mu}^{-1}(U) \infegal t} = \pr{U \infegal F_{\mu}(t)} = F_{\mu}(x)`. +Effectivement, :math:`\pr{ V \leqslant t} = \pr{ F_{\mu}^{-1}(U) \leqslant t} = \pr{U \leqslant F_{\mu}(t)} = F_{\mu}(x)`. La fonction de répartition de la variable :math:`V` est :math:`F_{\mu}`, :math:`V` est donc une loi exponentielle de paramètre :math:`\mu`. La première fonction simule une variable exponentielle de paramètre :math:`\mu` : diff --git a/_doc/c_garden/strategie_avec_alea.rst b/_doc/c_garden/strategie_avec_alea.rst index 0fb5e9d8..817522ba 100644 --- a/_doc/c_garden/strategie_avec_alea.rst +++ b/_doc/c_garden/strategie_avec_alea.rst @@ -166,17 +166,17 @@ Pour cela, on utilise deux propriétés sur les lois exponentielles. La démonstration est courte. Soit :math:`X` une variable aléatoire de densité :math:`f`, -par définition, :math:`\pr{X \infegal x} = F(x)`. Soit :math:`U` une +par définition, :math:`\pr{X \leqslant x} = F(x)`. Soit :math:`U` une variable aléatoire uniformément distribué sur :math:`\cro{0,1}`, alors : .. math:: :nowrap: \begin{eqnarray*} - \forall u \in \cro{0,1}, \; \pr{U \infegal u} &=& u \\ - \Longleftrightarrow \pr{F^{-1}(U)\infegal F^{-1}(u)} &=& u \\ - \Longleftrightarrow \pr{F^{-1}(U)\infegal F^{-1}(F(t))} &=& F(t) \\ - \Longleftrightarrow \pr{F^{-1}(U)\infegal t} &=& F(t) + \forall u \in \cro{0,1}, \; \pr{U \leqslant u} &=& u \\ + \Longleftrightarrow \pr{F^{-1}(U)\leqslant F^{-1}(u)} &=& u \\ + \Longleftrightarrow \pr{F^{-1}(U)\leqslant F^{-1}(F(t))} &=& F(t) \\ + \Longleftrightarrow \pr{F^{-1}(U)\leqslant t} &=& F(t) \end{eqnarray*} Si la fonction :math:`F` n'est pas strictement croissante, @@ -246,12 +246,12 @@ de la somme est celle d'une loi Gamma. On suppose que Ces lignes démontrent le théorème. On démontre maintenant :ref:`simulation d'une loi de Poisson `. La démonstration repose sur le fait que -:math:`\pr{N(t) \supegal n} \Longleftrightarrow \pr{S_n \infegal t}`. +:math:`\pr{N(t) \supegal n} \Longleftrightarrow \pr{S_n \leqslant t}`. On en déduit que : .. math:: - \pr{N(t) = n} = \pr{N(t) \supegal n} - \pr{N(t) \supegal n+1} = \pr{S_n \infegal t} - \pr{S_{n+1} \infegal t} + \pr{N(t) = n} = \pr{N(t) \supegal n} - \pr{N(t) \supegal n+1} = \pr{S_n \leqslant t} - \pr{S_{n+1} \leqslant t} Or d'après le théorème :ref:`somme de loi exponentielle iid `, :math:`S_n` suit une loi :math:`Gamma(n,\lambda)`. diff --git a/_doc/c_metric/pvalues.rst b/_doc/c_metric/pvalues.rst index f748432f..3c408901 100644 --- a/_doc/c_metric/pvalues.rst +++ b/_doc/c_metric/pvalues.rst @@ -26,7 +26,7 @@ Howerver p-Values and confidence interval are similar: they tell you whether or not a metric difference is significant. Usually, it starts from a set of identically distributed random variables -:math:`(X_i)_{1 \infegal i \infegal N}`. We then estimate the average +:math:`(X_i)_{1 \leqslant i \leqslant N}`. We then estimate the average :math:`\widehat{\theta}_N = \frac{1}{N} \sum_{i=1}^{N} X_i` and we ask the question is :math:`\widehat{\theta}_N` null? In others terms, we want to know if the average is significantly different from zero. If @@ -48,7 +48,7 @@ Not all of them have a standard deviation. For example, if :math:`X` follows a This remark also concerns every distribution known as heavy tail distribution. If :math:`Y \sim \loinormale{0}{\sigma}`, then we have -:math:`\pr{\abs{Y} \infegal 1.96} = 0.95`. That is why we can say: +:math:`\pr{\abs{Y} \leqslant 1.96} = 0.95`. That is why we can say: .. math:: :nowrap: @@ -270,7 +270,7 @@ density function of :math:`X`. We also consider an interval :nowrap: \begin{eqnarray*} - \pr{X \in I} = \pr{ \abs{X} \infegal a } = \pr{ f(X) \supegal f(a)} + \pr{X \in I} = \pr{ \abs{X} \leqslant a } = \pr{ f(X) \supegal f(a)} \end{eqnarray*} This is true because :math:`f` is decreasing for :math:`x>0`. diff --git a/_doc/c_metric/roc.rst b/_doc/c_metric/roc.rst index 4a4548af..6e2f5168 100644 --- a/_doc/c_metric/roc.rst +++ b/_doc/c_metric/roc.rst @@ -89,7 +89,7 @@ La courbe ROC s'obtient en faisant varier :math:`s`. :math:`X` est celle des scores des expériences qui ont échoué. On suppose également que tous les scores sont indépendants. On note :math:`F_Y` et :math:`F_X` les fonctions de répartition de ces variables. - :math:`F_Y(s)=\pr{Y \infegal s}` et :math:`F_X(s)=\pr{X \infegal s}`. + :math:`F_Y(s)=\pr{Y \leqslant s}` et :math:`F_X(s)=\pr{X \leqslant s}`. On définit en fonction d'un seuil :math:`s \in \mathbb{R}` : * :math:`R(s) = 1 - F_Y(s) = \pr{Y > s}` @@ -173,8 +173,8 @@ de fonction de répartition :math:`F`. Si :math:`U = F(X)`, alors : .. math:: - \pr{ U \infegal t} = \pr{ F(X) \infegal t} = - \pr{ X \infegal F^{-1}(t)} = F \pa{ F^{-1}(t) } = t + \pr{ U \leqslant t} = \pr{ F(X) \leqslant t} = + \pr{ X \leqslant F^{-1}(t)} = F \pa{ F^{-1}(t) } = t La variable :math:`U` est de loi uniforme sur :math:`\cro{0,1}`. De plus, soit :math:`g` une fonction intégrable quelconque, on pose :math:`u = F(x)` et : @@ -341,7 +341,7 @@ est construite une courbe ROC (voir :ref:`Courbe ROC `). `X_i` est le score obtenu pour l'expérience :math:`i`, `\theta_i` vaut 1 si elle a réussi et 0 si elle a échoué. On suppose également que cette liste est triée par ordre croissant : - `\forall i, \; X_i \infegal X_{i+1}`. + `\forall i, \; X_i \leqslant X_{i+1}`. On souhaite également tracer :math:`k` points sur la courbe, on détermine pour cela :math:`k` seuils `\ensemble{s_1}{s_k}` définis par : :math:`\forall j, s_k = X_{\frac{j \, k}{n}}`. @@ -355,7 +355,7 @@ est construite une courbe ROC (voir :ref:`Courbe ROC `). E_j = \frac{1}{n} \, \sum_{i=1}^{n} \pa{1-\theta_i} \; \indicatrice{X_i \supegal s_j} \end{eqnarray*} - La courbe ROC est composée de l'ensemble :math:`R_{OC} = \acc{ \pa{E_j,R_j} | 1 \infegal j \infegal k}`. + La courbe ROC est composée de l'ensemble :math:`R_{OC} = \acc{ \pa{E_j,R_j} | 1 \leqslant j \leqslant k}`. Les deux suites :math:`(R_j)_j` et :math:`(E_j)_j` sont toutes les deux décroissantes d'après leur définition. La courbe peut être rendue continue par interpolation. @@ -368,7 +368,7 @@ d'après leur définition. La courbe peut être rendue continue par interpolatio On cherche un taux de reconnaissance pour un taux d'erreur donné. On dispose pour cela d'une courbe ROC obtenue par l'algorithme de la :ref:`courbe ROC ` et définie par les points - :math:`R_{OC} = \acc{ \pa{e_j,r_j} | 1 \infegal j \infegal k}`. + :math:`R_{OC} = \acc{ \pa{e_j,r_j} | 1 \leqslant j \leqslant k}`. On suppose ici que :math:`\pa{e_1,r_1} = \pa{1,1}` et :math:`\pa{e_k,r_k} = \pa{0,}`. Si ce n'est pas le cas, on ajoute ces valeurs à l'ensemble :math:`R_{OC}`. @@ -377,7 +377,7 @@ d'après leur définition. La courbe peut être rendue continue par interpolatio .. math:: - e_{j^*+1} \infegal e^* \infegal e_{j^*} + e_{j^*+1} \leqslant e^* \leqslant e_{j^*} Le taux de reconnaissance :math:`\rho` cherché est donné par : @@ -409,7 +409,7 @@ On s'inspire pour cela des méthodes de `bootstrap ` permet de constuire la courbe :math:`R_{OC}^k`. * L'algorithme de :ref:`taux de classification à erreur fixe ` permet ensuite de déterminer @@ -530,7 +530,7 @@ Pour un seuil donné :math:`s`, on note :math:`E'(s)` le taux de substitution et E'(s) &=& \frac{1}{n \, R'(s)} \sum_{i=1}^{n} \pa{1 - \theta_i} \, \indicatrice{X_i \supegal s} \end{eqnarray*} -On écrit différemment ces expressions en supposant que :math:`X_{i(s_1)-1} < s_1 \infegal X_{i(s_1)} :math:` : +On écrit différemment ces expressions en supposant que :math:`X_{i(s_1)-1} < s_1 \leqslant X_{i(s_1)} :math:` : .. math:: :nowrap: @@ -540,7 +540,7 @@ On écrit différemment ces expressions en supposant que :math:`X_{i(s_1)-1} < s E'(s_1) &=& \frac{1}{n - i(s_1)} \sum_{i=i(s_1)}^{n} \pa{1 - \theta_i} \end{eqnarray*} -On suppose maintenant que :math:`X_{i(s_2)-1} < s_2 \infegal X_{i(s_2)} :math:` +On suppose maintenant que :math:`X_{i(s_2)-1} < s_2 \leqslant X_{i(s_2)} :math:` et :math:`i(s_1) +1 = i(s_2)` : .. math:: diff --git a/_doc/c_ml/kppv.rst b/_doc/c_ml/kppv.rst index 1b2be1b9..f062b5e8 100644 --- a/_doc/c_ml/kppv.rst +++ b/_doc/c_ml/kppv.rst @@ -85,7 +85,7 @@ la plus représentée parmi ses :math:`k` plus proches voisins. .. math:: card{S^*_k} = 0 \text{ et } \underset{y \in S^*_k}{\max} \; d\pa{y,x} - \infegal \underset{y \in X - S^*_k}{\min} \; d\pa{y,x} + \leqslant \underset{y \in X - S^*_k}{\min} \; d\pa{y,x} On calcule les occurrences :math:`f(i)` de chaque classe :math:`i` dans l'ensemble :math:`S^*_k` : @@ -150,7 +150,7 @@ père et pas plus de :math:`n` fils. Soit :math:`B_n` un :epkg:`B+ tree`, soit :math:`N` un noeud de :math:`B_n`, il contient un vecteur :math:`V\pa{N} = \vecteur{x_1}{x_t}` - avec :math:`0 \infegal t \infegal n` et :math:`x_1 < ... < x_t`. + avec :math:`0 \leqslant t \leqslant n` et :math:`x_1 < ... < x_t`. Ce noeud contient aussi exactement :math:`t-1` noeuds fils notés :math:`\vecteur{N_1}{N_{t-1}}`. On désigne par :math:`D\pa{N_t}` l'ensemble des descendants du noeud :math:`N_t` et @@ -161,7 +161,7 @@ père et pas plus de :math:`n` fils. :nowrap: \begin{eqnarray*} - && \forall x \in G\pa{N_t}, \; x_{t} \infegal x < x_{t+1} \\ + && \forall x \in G\pa{N_t}, \; x_{t} \leqslant x < x_{t+1} \\ && \text{avec par convention } x_0 = -\infty \text{ et } x_{t+1} = + \infty \end{eqnarray*} @@ -385,10 +385,10 @@ ne peut être l'élément le plus proche. .. math:: - \forall y \in V\pa{x}, \; d\pa{x,y} \infegal \rho + \forall y \in V\pa{x}, \; d\pa{x,y} \leqslant \rho On suppose que la matrice - :math:`M = \pa{m_{ij}}_{ \begin{subarray} 1 \infegal i \infegal P \\ 1 \infegal j \infegal N \end{subarray} }` + :math:`M = \pa{m_{ij}}_{ \begin{subarray} 1 \leqslant i \leqslant P \\ 1 \leqslant j \leqslant N \end{subarray} }` a été calculée préalablement comme suit : .. math:: @@ -399,7 +399,7 @@ ne peut être l'élément le plus proche. | for i in :math:`1..P` | :math:`d_i \longleftarrow d\pa{x, p_i}` - | :math:`d^* \longleftarrow \min \acc{ d_i \sac 1 \infegal i \infegal P }` + | :math:`d^* \longleftarrow \min \acc{ d_i \sac 1 \leqslant i \leqslant P }` | :math:`d^*` est la distance du point :math:`x` au pivot le plus proche. *recherche du plus proche élément* @@ -409,7 +409,7 @@ ne peut être l'élément le plus proche. | :math:`d' \longleftarrow \max \acc{ \abs{ d_j - m_{ji} } }` | if :math:`d' < d^*` | :math:`d \longleftarrow d\pa{x,y_i}` - | if :math:`d' \infegal d^*` + | if :math:`d' \leqslant d^*` | :math:`d^* \longleftarrow d'` | :math:`S \longleftarrow \acc{y_i}` @@ -462,7 +462,7 @@ ensemble :math:`E = \ensemble{x_1}{x_N}` selon l'algorithme suivant : On définit :math:`t_0 \longleftarrow \underset{i} {\min} \; \gamma\pa{x_i}`. Puis on construit l'ensemble - :math:`F\pa{x} = \acc{ x_i \in E \sac \gamma\pa{x_i} }\infegal \frac{\alpha}{\beta} \, t_0`. + :math:`F\pa{x} = \acc{ x_i \in E \sac \gamma\pa{x_i} }\leqslant \frac{\alpha}{\beta} \, t_0`. *plus proche voisin* @@ -511,7 +511,7 @@ Et un petit théorème. .. math:: - \underset{ n \rightarrow \infty } { \lim \sup } \; \esp{F_N} \infegal k + \pa{\frac{\alpha}{\beta}}^{2d} + \underset{ n \rightarrow \infty } { \lim \sup } \; \esp{F_N} \leqslant k + \pa{\frac{\alpha}{\beta}}^{2d} Implémentation ============== diff --git a/_doc/c_ml/lr_trees.rst b/_doc/c_ml/lr_trees.rst index 7818f3fe..774eac05 100644 --- a/_doc/c_ml/lr_trees.rst +++ b/_doc/c_ml/lr_trees.rst @@ -47,7 +47,7 @@ Un arbre de décision se construit peu à peu en répétant toujours la même optimisation sur des sous-ensemble de plus en plus petit. Il faut d'abord un critère qui permette d'évaluer la pertinence de la division effectuée par un noeud de l'arbre. -Pour un ensemble :math:`(X_i, y_i)_{1 \infegal i \infegal n}`, on +Pour un ensemble :math:`(X_i, y_i)_{1 \leqslant i \leqslant n}`, on peut estimer la probabilité :math:`p(y_1, ..., y_n) = p(Y) = \frac{1}{n}\sum{i=1}^n y_i`. Le critère de Gini *G* qui évalue la pertinence d'une classification est @@ -65,7 +65,7 @@ du critère choisi : .. math:: \begin{array}{rcl} - S_{ik} &=& \acc{ m | x_{mk} \infegal x_{ik}} \\ + S_{ik} &=& \acc{ m | x_{mk} \leqslant x_{ik}} \\ \Delta_{ik} &=& H(Y) - ( H(Y_{S_{ik}}) + H(Y_{S_{ik}^C} ) \end{array} diff --git a/_doc/c_ml/missing_values_mf.rst b/_doc/c_ml/missing_values_mf.rst index 18128f4f..480fed2f 100644 --- a/_doc/c_ml/missing_values_mf.rst +++ b/_doc/c_ml/missing_values_mf.rst @@ -95,8 +95,8 @@ Nous allons le montrer grâce à quelques lemmes et théorèmes. On note :math:`M=(m_{ij})`, :math:`W^k=(w^k_{il})`, :math:`H^k=(h^k_{lj})` avec - :math:`1 \infegal i \infegal p`, :math:`1 \infegal j \infegal q`, - et :math:`1 \infegal l \infegal k` avec :math:`k < \min(p,q)`. + :math:`1 \leqslant i \leqslant p`, :math:`1 \leqslant j \leqslant q`, + et :math:`1 \leqslant l \leqslant k` avec :math:`k < \min(p,q)`. On suppose que les matrices sont solution du problème d'optimisation :math:`\min_{W,H} \norm{ M - WH }^2`. @@ -147,8 +147,8 @@ Cela signifie qu'on peut écrire la matrice :math:`W_k` dans une base On note :math:`M=(m_{ij})`, :math:`W^k=(w^k_{il})`, :math:`H^k=(h^k_{lj})` avec - :math:`1 \infegal i \infegal p`, :math:`1 \infegal j \infegal q`, - et :math:`1 \infegal l \infegal k` avec :math:`k < \min(p,q)`. + :math:`1 \leqslant i \leqslant p`, :math:`1 \leqslant j \leqslant q`, + et :math:`1 \leqslant l \leqslant k` avec :math:`k < \min(p,q)`. On suppose que les matrices sont solution du problème d'optimisation :math:`\min_{W,H} \norm{ M - WH }^2`. @@ -181,8 +181,8 @@ sur ce plan. On note :math:`M=(m_{ij})`, :math:`W^k=(w^k_{il})`, :math:`H^k=(h^k_{lj})` avec - :math:`1 \infegal i \infegal p`, :math:`1 \infegal j \infegal q`, - et :math:`1 \infegal l \infegal k` avec :math:`k < \min(p,q)`. + :math:`1 \leqslant i \leqslant p`, :math:`1 \leqslant j \leqslant q`, + et :math:`1 \leqslant l \leqslant k` avec :math:`k < \min(p,q)`. On suppose que les matrices sont solution du problème d'optimisation :math:`\min_{W,H} \norm{ M - WH }^2`. diff --git a/_doc/c_ml/rn/rn_1_def.rst b/_doc/c_ml/rn/rn_1_def.rst index aeae1391..b68ab285 100644 --- a/_doc/c_ml/rn/rn_1_def.rst +++ b/_doc/c_ml/rn/rn_1_def.rst @@ -157,7 +157,7 @@ Un réseau de neurones : le perceptron Les coefficients de la couche :math:`C_i` sont notés :math:`\pa {W_1^i,\dots,W_{n_i}^i}`, cette couche définit une fonction :math:`F_i`. - Soit la suite :math:`\pa{Z_i}_{0\infegal i \infegal C}` définie par : + Soit la suite :math:`\pa{Z_i}_{0\leqslant i \leqslant C}` définie par : .. math:: @@ -216,7 +216,7 @@ sachant ses poids est appelé *propagation*. | :math:`Z_c \longleftarrow X` Vient ensuite le calcul itératif de la suite - :math:`\pa{Z_c}_{1 \infegal c \infegal C}` : + :math:`\pa{Z_c}_{1 \leqslant c \leqslant C}` : | for c in :math:`1..C` : | :math:`Y_c \longleftarrow W_c Z_{c-1} + B_c` diff --git a/_doc/c_ml/rn/rn_2_reg.rst b/_doc/c_ml/rn/rn_2_reg.rst index e922208a..857d58b8 100644 --- a/_doc/c_ml/rn/rn_2_reg.rst +++ b/_doc/c_ml/rn/rn_2_reg.rst @@ -15,7 +15,7 @@ On suppose parfois que ce bruit suive une loi normale. :lid: def-bruit-blanc Une suite de variables aléatoires réelles - :math:`\pa{\epsilon_i}_{1 \infegal i \infegal N}` + :math:`\pa{\epsilon_i}_{1 \leqslant i \leqslant N}` est un bruit blanc : * :math:`\exists \sigma > 0`, :math:`\forall i \in \intervalle{1}{N}, \; \epsilon_i \sim \loinormale{0}{\sigma}` @@ -32,7 +32,7 @@ Une régression consiste à résoudre le problème suivant : l'objectif est d'approximer la fonction :math:`\esp\pa{Y | X} = f\pa{X}`. Les données du problème sont - un échantillon de points :math:`\acc{ \pa{ X_{i},Y_{i} } | 1 \infegal i \infegal N }` + un échantillon de points :math:`\acc{ \pa{ X_{i},Y_{i} } | 1 \leqslant i \leqslant N }` et un modèle paramétré avec :math:\theta` : .. math:: @@ -40,7 +40,7 @@ Une régression consiste à résoudre le problème suivant : \forall i \in \intervalle{1}{N}, \; Y_{i} = f \pa{\theta,X_{i}} + \epsilon_{i} avec :math:`n \in \N`, - :math:`\pa{\epsilon_{i}}_{1 \infegal i \infegal N}` :ref:`bruit blanc `, + :math:`\pa{\epsilon_{i}}_{1 \leqslant i \leqslant N}` :ref:`bruit blanc `, :math:`f` est une fonction de paramètre :math:`\theta`. diff --git a/_doc/c_ml/rn/rn_3_clas.rst b/_doc/c_ml/rn/rn_3_clas.rst index 01ddee5e..d37b609a 100644 --- a/_doc/c_ml/rn/rn_3_clas.rst +++ b/_doc/c_ml/rn/rn_3_clas.rst @@ -17,7 +17,7 @@ suivant une `loi multinomiale `_ et une variable aléatoire discrète :math:`Y \in \N`, l'objectif est d'approximer la fonction :math:`\esp\pa{Y | X} = f\pa{X}`. Les données du problème sont - un échantillon de points : :math:`\acc { \pa{ X_{i},Y_{i} } | 1 \infegal i \infegal N }` + un échantillon de points : :math:`\acc { \pa{ X_{i},Y_{i} } | 1 \leqslant i \leqslant N }` avec :math:`\forall i \in \ensemble{1}{N}, \; Y_i \in \ensemble{1}{C}` et un modèle paramétré avec :math:`\theta` : @@ -38,7 +38,7 @@ discrète et :math:`Y \in \acc{0,1}`, on dispose pour cela d'une liste : .. math:: - \acc{ \pa{ X_i,Y_i } \in \mathbb{R} \times \acc{0,1} | 1 \infegal i \infegal N } + \acc{ \pa{ X_i,Y_i } \in \mathbb{R} \times \acc{0,1} | 1 \leqslant i \leqslant N } .. image:: rnimg/classificationnd.png diff --git a/_doc/c_ml/rn/rn_4_densite.rst b/_doc/c_ml/rn/rn_4_densite.rst index 99756b30..230de98b 100644 --- a/_doc/c_ml/rn/rn_4_densite.rst +++ b/_doc/c_ml/rn/rn_4_densite.rst @@ -15,7 +15,7 @@ Soient deux variables aléatoires continues la résolution du problème de :ref:`régression ` est l'estimation de la fonction :math:`\esp(Y|X) = F\pa{X}`. Pour cela, on dispose d'un ensemble de points -:math:`A = \acc{ \pa{X_{i},Y_{i}} \sim \loi | 1 \infegal i \infegal N }`. +:math:`A = \acc{ \pa{X_{i},Y_{i}} \sim \loi | 1 \leqslant i \leqslant N }`. Soit :math:`f : \mathbb{R}^M \times \mathbb{R}^p \longrightarrow \mathbb{R}^q` une fonction, on définit :math:`\forall i \in \intervalle{1}{N}, \; \widehat{Y_{i}^{W}} = f \pa{W,X_{i}}`. @@ -28,7 +28,7 @@ Les résidus sont supposés et suivant une loi normale :math:`\forall i \in \intervalle{1}{N}, \; \epsilon_{i}^{W} \sim \loinormale{\mu_{W}}{\sigma_{W}}` La vraisemblance d'un échantillon -:math:`\pa{Z_i}_{1\infegal i \infegal N}`, +:math:`\pa{Z_i}_{1\leqslant i \leqslant N}`, où les :math:`Z_i` sont indépendantes entre elles et suivent la loi de densité :math:`f \pa{z | \theta}` est la densité du vecteur :math:`\vecteur{Z_1}{Z_N}` qu'on exprime @@ -213,7 +213,7 @@ Soit :math:`\alpha>0` et :math:`1\geqslant\varepsilon>0, \, k>0`, On pose :math:`f\left( y_{1},...,y_{p}\right) =\underset{i=1}{\overset{p}{\prod}} \dfrac{1}{1+e^{-ky_{i}}}\underset{i=1}{\overset{p}{\prod}}\dfrac {1}{1+e^{-k\left( 1-y_{i}\right)}}` -d'après sa définition, :math:`0 \infegal f\left( y_{1},...,y_{p}\right) \infegal 1`. +d'après sa définition, :math:`0 \leqslant f\left( y_{1},...,y_{p}\right) \leqslant 1`. Pour :math:`k \supegal k_0 \pa{\epsilon,\alpha,2p}` obtenu dans la partie précédente : @@ -222,7 +222,7 @@ obtenu dans la partie précédente : \underset{_{i\in\left\{ 1,...,p\right\}}}{\inf} \cro { \min\left\{ \left| y_{i}\right| ,\left| 1-y_{i}\right| \right\} } >\alpha - \Longrightarrow\left\| f\left( y_{1},...,y_{p}\right) - \indicatrice{x\in C}\right\| \infegal\varepsilon + \Longrightarrow\left\| f\left( y_{1},...,y_{p}\right) - \indicatrice{x\in C}\right\| \leqslant\varepsilon *Partie 3* @@ -491,10 +491,10 @@ Ce théorème permet de déduire le corollaire suivant : Le théorème de :ref:`densité ` montre que la famille :math:`E_{p}` est une famille génératrice. Il reste à montrer que c'est une -famille libre. Soient :math:`\pa{y_i}_{1 \infegal i \infegal N} \in \pa{\mathbb{R}^p}^N` et -:math:`\pa{b_i}_{1 \infegal i \infegal N} \in \mathbb{R}^N` vérifiant : +famille libre. Soient :math:`\pa{y_i}_{1 \leqslant i \leqslant N} \in \pa{\mathbb{R}^p}^N` et +:math:`\pa{b_i}_{1 \leqslant i \leqslant N} \in \mathbb{R}^N` vérifiant : :math:`i \neq j \Longrightarrow y_i \neq y_j \text{ ou } b_i \neq b_j`. -Soit :math:`\pa{\lambda_i}_{1 \infegal i \infegal N} \in \mathbb{R}^N`, il faut montrer que : +Soit :math:`\pa{\lambda_i}_{1 \leqslant i \leqslant N} \in \mathbb{R}^N`, il faut montrer que : .. math:: :nowrap: @@ -536,11 +536,11 @@ On cherche à résoude le système de :math:`N` équations à :math:`N` inconnue \end{eqnarray} On note le vecteur -:math:`\Lambda = \pa{\lambda_i}_{ 1 \infegal i \infegal N}` et :math:`M` la matrice : +:math:`\Lambda = \pa{\lambda_i}_{ 1 \leqslant i \leqslant N}` et :math:`M` la matrice : .. math:: - M= \pa{m_{ij}}_{ 1 \infegal i,j \infegal N} = \pa{ 1 - \dfrac{2}{1 + e^{}} }_{ 1 \infegal i,j \infegal N} + M= \pa{m_{ij}}_{ 1 \leqslant i,j \leqslant N} = \pa{ 1 - \dfrac{2}{1 + e^{}} }_{ 1 \leqslant i,j \leqslant N} L'équation :eq:`rn_coro_eq_1` est équivalente à l'équation matricielle : :math:`M\Lambda = 0`. On effectue une itération du pivot de Gauss. @@ -561,14 +561,14 @@ L'équation :eq:`rn_coro_eq_1` est équivalente à l'équation matricielle : \right. \end{array} -On note :math:`\Lambda_* = \pa{\lambda_i}_{ 2 \infegal i \infegal N}` et +On note :math:`\Lambda_* = \pa{\lambda_i}_{ 2 \leqslant i \leqslant N}` et :math:`\Delta_*`, :math:`M_*` les matrices : .. math:: \begin{array}{rcl} - M_* &=& \pa{m_{ij}}_{ 2 \infegal i,j \infegal N} \\ - \Delta_* &=& \pa{ m_{1j} \, m_{i1} }_{ 2 \infegal i,j \infegal N} + M_* &=& \pa{m_{ij}}_{ 2 \leqslant i,j \leqslant N} \\ + \Delta_* &=& \pa{ m_{1j} \, m_{i1} }_{ 2 \leqslant i,j \leqslant N} \end{array} Donc :eq:`rn_coro_eq_1` est équivalent à : @@ -588,7 +588,7 @@ Donc :eq:`rn_coro_eq_1` est équivalent à : \end{eqnarray} Il est possible de choisir :math:`X_1\pa{\alpha} = \pa{\alpha x_1, 1}` -de telle sorte qu'il existe une suite :math:`\pa{s_l}_{ 1 \infegal l \infegal N } \in \acc{-1,1}^{N}` +de telle sorte qu'il existe une suite :math:`\pa{s_l}_{ 1 \leqslant l \leqslant N } \in \acc{-1,1}^{N}` avec :math:`s_1=1` et vérifiant : .. math:: @@ -604,7 +604,7 @@ On définit : \begin{array}{rll} U_* &=& \vecteur{m_{21}}{m_{N1}}' \\ V_* &=& \vecteur{s_2 \, m_{21}}{s_N \, m_{N1}}' \\ - \text{ et la matrice } L_* &=& \pa{V_*}_ { 2 \infegal i \infegal N } \text{ dont les $N-1$ colonnes sont identiques } + \text{ et la matrice } L_* &=& \pa{V_*}_ { 2 \leqslant i \leqslant N } \text{ dont les $N-1$ colonnes sont identiques } \end{array} On vérifie que : diff --git a/_doc/c_ml/rn/rn_5_newton.rst b/_doc/c_ml/rn/rn_5_newton.rst index 8ca60c4e..f0212898 100644 --- a/_doc/c_ml/rn/rn_5_newton.rst +++ b/_doc/c_ml/rn/rn_5_newton.rst @@ -224,7 +224,7 @@ puisque le gradient s'en déduit facilement. La dernière couche du réseau de n &=& \partialfrac{e}{z_{C,i}} \pa{W,X} f'_{c,i}\pa{y_{C,i}} \nonumber \end{eqnarray} -Pour les autres couches :math:`c` telles que :math:`1 \infegal c \infegal C-1`, on a : +Pour les autres couches :math:`c` telles que :math:`1 \leqslant c \leqslant C-1`, on a : .. math:: :nowrap: diff --git a/_doc/c_ml/rn/rn_6_apprentissage.rst b/_doc/c_ml/rn/rn_6_apprentissage.rst index ae19a982..7827dafd 100644 --- a/_doc/c_ml/rn/rn_6_apprentissage.rst +++ b/_doc/c_ml/rn/rn_6_apprentissage.rst @@ -237,7 +237,7 @@ itération en tenant de l'information apportée par chaque déplacement. *Mise à jour de la marice :math:`B_t`* - | si :math:`t - i \supegal M` ou :math:`g'_{t-1} B_{t-1} g_{t-1} \infegal 0` ou :math:`g'_{t-1} B_{t-1} \pa {g_t - g_{t-1}} \infegal 0` + | si :math:`t - i \supegal M` ou :math:`g'_{t-1} B_{t-1} g_{t-1} \leqslant 0` ou :math:`g'_{t-1} B_{t-1} \pa {g_t - g_{t-1}} \leqslant 0` | :math:`B_{t} \longleftarrow I_M` | :math:`i \longleftarrow t` | sinon @@ -356,7 +356,7 @@ qui propose une approximation différente de l'inverse de la dérivée seconde. *Mise à jour de la matrice :math:`B_t`* - | si :math:`t - i \supegal M` ou :math:`g'_{t-1} B_{t-1} g_{t-1} \infegal 0` ou :math:`g'_{t-1} B_{t-1} \pa {g_t - g_{t-1}} \infegal 0` + | si :math:`t - i \supegal M` ou :math:`g'_{t-1} B_{t-1} g_{t-1} \leqslant 0` ou :math:`g'_{t-1} B_{t-1} \pa {g_t - g_{t-1}} \leqslant 0` | :math:`B_{t} \longleftarrow I_M` | :math:`i \longleftarrow t` | sinon diff --git a/_doc/c_ml/rn/rn_7_clas2.rst b/_doc/c_ml/rn/rn_7_clas2.rst index 322138f9..f6619bab 100644 --- a/_doc/c_ml/rn/rn_7_clas2.rst +++ b/_doc/c_ml/rn/rn_7_clas2.rst @@ -10,7 +10,7 @@ Classification Vraisemblance d'un échantillon de variable suivant une loi multinomiale +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -Soit :math:`\pa{Y_i}_{1 \infegal i \infegal N}` +Soit :math:`\pa{Y_i}_{1 \leqslant i \leqslant N}` un échantillon de variables aléatoires i.i.d. suivant la loi multinomiale :math:`\loimultinomiale { \vecteurno{p_1}{p_C}}`. On définit :math:`\forall k \in \intervalle{1}{C}, \; d_k = \frac{1}{N} @@ -101,8 +101,8 @@ La fonction :math:`x \longrightarrow \ln x` est concave, d'où : \begin{eqnarray*} \Delta &=& \sum_{k=1}^{C} d_k \ln p_k - \sum_{k=1}^{C} d_k \ln d_k \\ &=& \sum_{k=1}^{C} d_k \pa{ \ln p_k - \ln d_k } = \sum_{k=1}^{C} d_k \ln \frac{p_k}{d_k} \\ - &\infegal& \ln \pa{ \sum_{k=1}^{C} d_k \frac{p_k}{d_k} } = \ln \pa { \sum_{k=1}^{C} p_k } = \ln 1 = 0 \\ - &\infegal& 0 + &\leqslant& \ln \pa{ \sum_{k=1}^{C} d_k \frac{p_k}{d_k} } = \ln \pa { \sum_{k=1}^{C} p_k } = \ln 1 = 0 \\ + &\leqslant& 0 \end{eqnarray*} La distance de KullBack-Leiber compare deux distributions de @@ -139,11 +139,11 @@ poids :math:`W` qui correspondent le mieux à l'échantillon : .. math:: - A = \acc{\left. \pa {X_i,y_i=\pa{\eta_i^k}_{1 \infegal k \infegal C}} \in \mathbb{R}^p \times \cro{0,1}^C - \text{ tel que } \sum_{k=1}^{c}y_i^k=1 \right| 1 \infegal i \infegal N } + A = \acc{\left. \pa {X_i,y_i=\pa{\eta_i^k}_{1 \leqslant k \leqslant C}} \in \mathbb{R}^p \times \cro{0,1}^C + \text{ tel que } \sum_{k=1}^{c}y_i^k=1 \right| 1 \leqslant i \leqslant N } -On suppose que les variables :math:`\pa{Y_i|X_i}_{1 \infegal i \infegal N}` -suivent les lois respectives :math:`\pa{\loimultinomiale{y_i}}_{1 \infegal i \infegal N}` +On suppose que les variables :math:`\pa{Y_i|X_i}_{1 \leqslant i \leqslant N}` +suivent les lois respectives :math:`\pa{\loimultinomiale{y_i}}_{1 \leqslant i \leqslant N}` et sont indépendantes entre elles, la vraisemblance du modèle vérifie d'après l'équation :eq:`rn_equation_vraisemblance_kullbck_leiber` : @@ -216,9 +216,9 @@ Ceci mène à la définition du problème de classification suivant : .. math:: - A = \acc {\left. \pa {X_i,y_i=\pa{\eta_i^k}_{1 \infegal k \infegal C}} \in + A = \acc {\left. \pa {X_i,y_i=\pa{\eta_i^k}_{1 \leqslant k \leqslant C}} \in \mathbb{R}^p \times \mathbb{R}^C - \text{ tel que } \sum_{k=1}^{c}\eta_i^k=1 \right| 1 \infegal i \infegal N } + \text{ tel que } \sum_{k=1}^{c}\eta_i^k=1 \right| 1 \leqslant i \leqslant N } :math:`y_i^k` représente la probabilité que l'élément :math:`X_i` appartiennent à la classe :math:`k` : @@ -306,7 +306,7 @@ On calcule : Cette équation permet d'adapter l'algorithme de la :ref:`rétropropagation ` décrivant rétropropagation pour le problème de la classification et pour -un exemple :math:`\pa {X,y=\pa{\eta^k}_{1 \infegal k \infegal C}}`. +un exemple :math:`\pa {X,y=\pa{\eta^k}_{1 \leqslant k \leqslant C}}`. Seule la couche de sortie change. .. mathdef:: diff --git a/_doc/c_ml/rn/rn_8_prol.rst b/_doc/c_ml/rn/rn_8_prol.rst index 92440499..844ba970 100644 --- a/_doc/c_ml/rn/rn_8_prol.rst +++ b/_doc/c_ml/rn/rn_8_prol.rst @@ -19,7 +19,7 @@ le modèle appris est de vérifier si l'erreur obtenue sur une base ayant servi à l'apprentissage (ou *base d'apprentissage*) est conservée sur une autre base (ou *base de test*) que le modèle découvre pour la première fois. -Soit :math:`B=\acc{\pa{X_i,Y_i} | 1 \infegal i \infegal N}` +Soit :math:`B=\acc{\pa{X_i,Y_i} | 1 \leqslant i \leqslant N}` l'ensemble des observations disponibles. Cet ensemble est aléatoirement scindé en deux sous-ensembles :math:`B_a` et :math:`B_t` de telle sorte que : @@ -121,13 +121,13 @@ Le plus simple tout d'abord : :label: eq_no_distance_nn \begin{eqnarray*} - 1 \infegal i \infegal p, & \dfrac{\partial y}{\partial w_{i}} = & - 2 w_{p+i}\pa{w_i - x_i} \\ - p+1 \infegal i \infegal 2p, & \dfrac{\partial y}{\partial w_{i}} = & - \pa{w_i - x_i}^2 \\ + 1 \leqslant i \leqslant p, & \dfrac{\partial y}{\partial w_{i}} = & - 2 w_{p+i}\pa{w_i - x_i} \\ + p+1 \leqslant i \leqslant 2p, & \dfrac{\partial y}{\partial w_{i}} = & - \pa{w_i - x_i}^2 \\ i = 2p+1, & \dfrac{\partial y}{\partial w_{i}} = & -1 \end{eqnarray*} Pour le neurone distance simple, la ligne :eq:`eq_no_distance_nn` -est superflue, tous les coefficients :math:`(w_i)_{p+1 \infegal i \infegal 2p}` +est superflue, tous les coefficients :math:`(w_i)_{p+1 \leqslant i \leqslant 2p}` sont égaux à 1. La relation :eq:`retro_eq_nn_3` reste vraie mais n'aboutit plus à:eq:`algo_retro_5`, celle-ci devient en supposant que la couche d'indice :math:`c+1` ne contient que des neurones définie par la définition précédente. @@ -433,8 +433,8 @@ régression grâce à l'algorithme suivant. .. math:: \begin{array}{l} - \text{soit } \pa{\epsilon_i}_{1 \infegal i \infegal N} \text{ un bruit blanc} \\ - A = \acc{ \left. \pa{X_i,Y_i}_{1 \infegal i \infegal N} \right| + \text{soit } \pa{\epsilon_i}_{1 \leqslant i \leqslant N} \text{ un bruit blanc} \\ + A = \acc{ \left. \pa{X_i,Y_i}_{1 \leqslant i \leqslant N} \right| \forall i \in \intervalle{1}{N}, \; Y_i = f\pa{X_i} + \epsilon_i } \end{array} diff --git a/_doc/c_ml/rn/rn_9_auto.rst b/_doc/c_ml/rn/rn_9_auto.rst index 908aa8c0..24a32d95 100644 --- a/_doc/c_ml/rn/rn_9_auto.rst +++ b/_doc/c_ml/rn/rn_9_auto.rst @@ -142,7 +142,7 @@ L'analyse en composantes principales ou ACP est définie de la manière suivante :lid: problem_acp :tag: Problème - Soit :math:`\pa{X_i}_{1 \infegal i \infegal N}` avec :math:`\forall i \in \ensemble{1}{N}, + Soit :math:`\pa{X_i}_{1 \leqslant i \leqslant N}` avec :math:`\forall i \in \ensemble{1}{N}, \; X_i \in \mathbb{R}^p`. Soit :math:`W \in M_{p,d}\pa{\mathbb{R}}`, :math:`W = \vecteur{C_1}{C_d}` où les vecteurs :math:`\pa{C_i}` @@ -154,7 +154,7 @@ L'analyse en composantes principales ou ACP est définie de la manière suivante W'W = I_d - :math:`\pa{W'X_i}_{1 \infegal i \infegal N}` est l'ensemble des + :math:`\pa{W'X_i}_{1 \leqslant i \leqslant N}` est l'ensemble des vecteurs :math:`\pa{X_i}` projetés sur le sous-espace vectoriel engendré par les vecteurs :math:`\pa{C_i}`. Réaliser une analyse en composantes principales, c'est trouver le @@ -280,7 +280,7 @@ Donc : *Partie 2* Soit :math:`Y \in \underset{ \begin{subarray}{c} W \in M_{p,d}\pa{\mathbb{R}} \\ W'W = I_d \end{subarray} } { \max }\; \trace{X'WW'X}`, -:math:`Y = \vecteur{Y_1}{Y_d} = \pa{y_i^k}_{ \begin{subarray}{c} 1 \infegal i \infegal d \\ 1 \infegal k \infegal p \end{subarray} }`. +:math:`Y = \vecteur{Y_1}{Y_d} = \pa{y_i^k}_{ \begin{subarray}{c} 1 \leqslant i \leqslant d \\ 1 \leqslant k \leqslant p \end{subarray} }`. Chaque vecteur :math:`Y_i` est écrit dans la base :math:`\vecteur{P_1}{P_p}` définie en :eq:`acp_equation_memo_1` : @@ -593,7 +593,7 @@ on en déduit que : I = \sum_{k=1}^{P} X_k'X_k = \sum_{d=1}^{N} I_d = \sum_{d=1}^{p} \lambda_d De manière empirique, on observe fréquemment que la courbe -:math:`\pa{d,I_d}_{1 \infegal d \infegal p}` montre un point +:math:`\pa{d,I_d}_{1 \leqslant d \leqslant p}` montre un point d'inflexion (voir figure ci-dessous). Dans cet exemple, le point d'inflexion correspond à :math:`d=4`. En analyse des données, on considère empiriquement que seuls les diff --git a/_doc/c_ml/survival_analysis.rst b/_doc/c_ml/survival_analysis.rst index 8f18d10e..1e6f2546 100644 --- a/_doc/c_ml/survival_analysis.rst +++ b/_doc/c_ml/survival_analysis.rst @@ -84,7 +84,7 @@ que le décès survienne au temps *t* : .. math:: - \lambda(t)dt = \pr{t \infegal T < t + dt | T \supegal T} = - \frac{S'(t)}{S(t)} dt + \lambda(t)dt = \pr{t \leqslant T < t + dt | T \supegal T} = - \frac{S'(t)}{S(t)} dt Régression de Cox ================= @@ -178,7 +178,7 @@ de Breslow est : .. math:: - \hat{B}(t) = \sum_{i | t_i \infegal t} \frac{1}{ \sum_{j \in R_{t_i}} h(\beta, X_j)} + \hat{B}(t) = \sum_{i | t_i \leqslant t} \frac{1}{ \sum_{j \in R_{t_i}} h(\beta, X_j)} C'est un estimateur de la fonction de survie : diff --git a/_doc/c_nlp/completion_digression.rst b/_doc/c_nlp/completion_digression.rst index 981594c2..2b078a74 100644 --- a/_doc/c_nlp/completion_digression.rst +++ b/_doc/c_nlp/completion_digression.rst @@ -81,7 +81,7 @@ On rappelle la métrique :eq:`completion-metric2` (voir aussi :eq:`nlp-comp-k`). :nowrap: \begin{eqnarray*} - M'(q, S) &=& \min_{0 \infegal k \infegal l(q)} \acc{ M'(q[1..k], S) + K(q, k, S) } + M'(q, S) &=& \min_{0 \leqslant k \leqslant l(q)} \acc{ M'(q[1..k], S) + K(q, k, S) } \end{eqnarray*} Si on note :math:`L(p, S)` l'ensemble des complétions @@ -92,7 +92,7 @@ Que dire de la définition suivante ? :nowrap: \begin{eqnarray*} - M'_p(q, S) &=& \min_{0 \infegal k \infegal l(q)} \acc{ \begin{array}{l} + M'_p(q, S) &=& \min_{0 \leqslant k \leqslant l(q)} \acc{ \begin{array}{l} \indicatrice{ L(q[1..k], S) \neq \emptyset} \cro{M'_p(q[1..k], S) + K(q, k, S)} + \\ \;\;\;\;\indicatrice{L(q[1..k], S) = \emptyset} \cro { \min_j M'_p(q[1..j], S) + M'_p(q[j+1..], S) } \end{array} } @@ -147,7 +147,7 @@ On note la métrique :math:`M'_b`. \begin{eqnarray*} M'_b(q, S) &=& \min\acc{\begin{array}{l} - \min_{0 \infegal k < l(q)} \acc{ M'_b(q[1..k], S) + + \min_{0 \leqslant k < l(q)} \acc{ M'_b(q[1..k], S) + \min( K(q, k, S), l(q) - k) } \\ \min_{s \succ q} \acc{ M'_b(s, S) + l(s) - l(q) } \end{array} } diff --git a/_doc/c_nlp/completion_formalisation.rst b/_doc/c_nlp/completion_formalisation.rst index 23dadd8b..774fe962 100644 --- a/_doc/c_nlp/completion_formalisation.rst +++ b/_doc/c_nlp/completion_formalisation.rst @@ -50,13 +50,13 @@ dans le premier cas ou 8+1=9 touches dans le second cas. .. math:: :label: completion-metric1 - M(q,S) = \min_{0 \infegal k \infegal l(q)} k + K(q, k, S) + M(q,S) = \min_{0 \leqslant k \leqslant l(q)} k + K(q, k, S) La quantité :math:`K(q, k, S)` représente le nombre de touche vers le bas qu'il faut taper pour obtenir la chaîne :math:`q` avec le système de complétion :math:`S` et les :math:`k` premières lettres de :math:`q`. -De façon évidente, :math:`K(q, l(q), S)=0` et :math:`M(q,S) \infegal l(q)` +De façon évidente, :math:`K(q, l(q), S)=0` et :math:`M(q,S) \leqslant l(q)` et :math:`K(q, k, S) > 0` si :math:`k < l(q)`. On prend également comme convention :math:`\forall q \notin S, \; K(q, k, S) = \infty` et :math:`\forall q \notin S, \; M(q, S) = l(q)`. diff --git a/_doc/c_nlp/completion_metrique.rst b/_doc/c_nlp/completion_metrique.rst index 8e33ade7..1b3cb574 100644 --- a/_doc/c_nlp/completion_metrique.rst +++ b/_doc/c_nlp/completion_metrique.rst @@ -71,7 +71,7 @@ On reprend la première métrique :eq:`completion-metric1` : :nowrap: \begin{eqnarray*} - M(q, S) &=& \min_{0 \infegal k \infegal l(q)} k + K(q, k, S) + M(q, S) &=& \min_{0 \leqslant k \leqslant l(q)} k + K(q, k, S) \end{eqnarray*} La fonction :math:`K(q, k, S)` est définie par :eq:`nlp-comp-k`. @@ -90,7 +90,7 @@ La fonction :math:`K(q, k, S)` est définie par :eq:`nlp-comp-k`. :nowrap: \begin{eqnarray*} - M'(q, S) &=& \min_{0 \infegal k < l(q)} \acc{ M'(q[1..k], S) + + M'(q, S) &=& \min_{0 \leqslant k < l(q)} \acc{ M'(q[1..k], S) + \min( K(q, k, S), l(q) - k) } \end{eqnarray*} @@ -104,11 +104,11 @@ tous les préfixes d'une complétion. :title: métriques :tag: propriété - :math:`\forall q, \; M'(q, S) \infegal M(q, S)` + :math:`\forall q, \; M'(q, S) \leqslant M(q, S)` -Si :math:`q \notin S`, c'est évident puisque :math:`M'(q, S) \infegal M'(\emptyset, S) + l(q)`. +Si :math:`q \notin S`, c'est évident puisque :math:`M'(q, S) \leqslant M'(\emptyset, S) + l(q)`. Si :math:`q \in S`, cela découle de la constation précédente puisque : -:math:`M'(q, S) \infegal M'(q[[1..k]], S) + K(q, k, S) \infegal k + K(q, k, S)`. +:math:`M'(q, S) \leqslant M'(q[[1..k]], S) + K(q, k, S) \leqslant k + K(q, k, S)`. Quelques résultats ++++++++++++++++++ @@ -154,8 +154,8 @@ considéré comme préfixe. C'est ce que prend en compte la définition suivante \begin{eqnarray*} M"(q, S) &=& \min \left\{ \begin{array}{l} - \min_{1 \infegal k \infegal l(q)} \acc{ M"(q[1..k-1], S) + 1 +\min( K(q, k, S), l(q) - k) } \\ - \min_{0 \infegal k \infegal l(q)} \acc{ M"(q[1..k], S) + \delta + \min( K(q, k, S), l(q) - k) } + \min_{1 \leqslant k \leqslant l(q)} \acc{ M"(q[1..k-1], S) + 1 +\min( K(q, k, S), l(q) - k) } \\ + \min_{0 \leqslant k \leqslant l(q)} \acc{ M"(q[1..k], S) + \delta + \min( K(q, k, S), l(q) - k) } \end{array} \right . \end{eqnarray*} @@ -171,12 +171,12 @@ Et le second cas à la séquence : * pression de la touche droite pour afficher les nouvelles complétions * sélection de la complétion *machine learning* -Le coût de la pression de la touche droite est noté :math:`\delta \infegal 1` qu'on prendra inférieur à 1. +Le coût de la pression de la touche droite est noté :math:`\delta \leqslant 1` qu'on prendra inférieur à 1. On remarque également qu'avec cette nouvelle métrique, il est possible de diminuer le nombre minimum de touches à presser pour des requêtes en dehors de l'ensemble :math:`S` à partir du moment où elles prolongent une complétion existante. C'est là un point très intéressant de cette métrique. -De manière évidente, :math:`\forall q, \; M'(q, S) \infegal M"(q, S)`. +De manière évidente, :math:`\forall q, \; M'(q, S) \leqslant M"(q, S)`. Questions +++++++++ diff --git a/_doc/c_nlp/completion_optimisation.rst b/_doc/c_nlp/completion_optimisation.rst index b2481a40..9d20d3d7 100644 --- a/_doc/c_nlp/completion_optimisation.rst +++ b/_doc/c_nlp/completion_optimisation.rst @@ -18,7 +18,7 @@ Enoncé 1 des complétions :math:`S=(s_i)` qu'on considère comme une permutation :math:`\sigma` de l'ensemble de départ : :math:`S(\sigma) = (s_i) = (c_{\sigma(j)})`. Ce système de complétion est destiné à un des utilisateurs qui forment des recherches ou requêtes - :math:`Q=(q_i, w_i)_{1 \infegal i \infegal N_Q}`. + :math:`Q=(q_i, w_i)_{1 \leqslant i \leqslant N_Q}`. :math:`q_i` est la requête, :math:`w_i` est la fréquence associée à cette requête. On définit l'effort demandé aux utilisateurs par ce système de complétion : @@ -82,7 +82,7 @@ Enoncé 2 à l'utilisateur, elle ne change pas l'ordre mais peut cacher certaines suggestions si elles ne sont pas pertinentes. Ce système de complétion est destiné à un des utilisateurs qui forment des recherches ou requêtes - :math:`Q=(q_i, w_i)_{1 \infegal i \infegal N_Q}`. + :math:`Q=(q_i, w_i)_{1 \leqslant i \leqslant N_Q}`. :math:`q_i` est la requête, :math:`w_i` est la fréquence associée à cette requête. On définit l'effort demandé aux utilisateurs par ce système de complétion : @@ -128,7 +128,7 @@ partageant le même préfixe. M'(q', S) = M'(q'-q, S') + M'(q, S) On sait déjà, par construction que -:math:`M'(q', S) \infegal M'(q'-q, S') + M'(q, S)`. +:math:`M'(q', S) \leqslant M'(q'-q, S') + M'(q, S)`. Par l'absurde, on suppose que :math:`M'(q', S) < M'(q'-q, S') + M'(q, S)`, comme la requête :math:`q-q'` est toujours affichée avant la requête :math:`q'`, cela voudrait dire qu'on aurait trouvé une façon plus optimale @@ -153,7 +153,7 @@ permettre de procéder par sous-ensemble pour trouver l'ordre optimal. .. math:: :label: best-order-lemme-completion - \forall k, \; \sigma(q[1..k]) \infegal \sigma(q[1..k+1]) + \forall k, \; \sigma(q[1..k]) \leqslant \sigma(q[1..k+1]) On note l'ensemble :math:`S'(q[1..k]) = \acc{ q[k+1..len(q)] \in S }` : diff --git a/_doc/c_nlp/completion_propriete.rst b/_doc/c_nlp/completion_propriete.rst index c13b3069..eb76d7ad 100644 --- a/_doc/c_nlp/completion_propriete.rst +++ b/_doc/c_nlp/completion_propriete.rst @@ -31,7 +31,7 @@ pour l'ensemble des complétions. :nowrap: \begin{eqnarray*} - M'(q, S) &=& \min_{d(q, S) \infegal k < l(q)} \acc{ M'(q[1..k], S) + \min( K(q, k, S), l(q) - k) } + M'(q, S) &=& \min_{d(q, S) \leqslant k < l(q)} \acc{ M'(q[1..k], S) + \min( K(q, k, S), l(q) - k) } \end{eqnarray*} Il n'est pas nécessaire de regarder tous les préfixes mais seulement ceux entre le plus long préfixe @@ -52,7 +52,7 @@ Calcul pour une requête en dehors +++++++++++++++++++++++++++++++++ Mais il est faux de dire que pour deux requêtes en dehors de l'ensemble -des complétions, :math:`q_1 \preceq q_2 \Longrightarrow M'(q_1, S) \infegal M'(q_2, S)`. +des complétions, :math:`q_1 \preceq q_2 \Longrightarrow M'(q_1, S) \leqslant M'(q_2, S)`. Le lemme suivant précise pourquoi .. mathdef:: @@ -151,7 +151,7 @@ utilise la fonction :math:`K(q, k, S)` définie en :eq:`nlp-comp-k`. :nowrap: \begin{eqnarray*} - M(q, S) &=& \min_{0 \infegal k \infegal l(q)} k + K(q, k, S) + M(q, S) &=& \min_{0 \leqslant k \leqslant l(q)} k + K(q, k, S) \end{eqnarray*} Etant donné que le nombre minimum de caractères pour obtenir une complétion dans le trie diff --git a/_todo/clas_supervise/clas_supervise.tex b/_todo/clas_supervise/clas_supervise.tex index 1d6da2b9..280835e9 100644 --- a/_todo/clas_supervise/clas_supervise.tex +++ b/_todo/clas_supervise/clas_supervise.tex @@ -55,7 +55,7 @@ \section{Plus proches voisins} incluant les $k$-plus proches voisins de $x$, cet ensemble v�rifie~: \begin{eqnarray*} \card{S^*_k} = 0 \text{ et } - \underset{y \in S^*_k}{\max} \; d\pa{y,x} \infegal + \underset{y \in S^*_k}{\max} \; d\pa{y,x} \leqslant \underset{y \in X - S^*_k}{\min} \; d\pa{y,x} \end{eqnarray*} On calcule les occurrences $f(i)$ de chaque classe $i$ dans l'ensemble $S^*_k$~: diff --git a/_todo/classification/classification.tex b/_todo/classification/classification.tex index 5109510a..0e2858d1 100644 --- a/_todo/classification/classification.tex +++ b/_todo/classification/classification.tex @@ -45,7 +45,7 @@ \subsection{Neural gas} \begin{xalgostep}{mise � jour} \label{class_neural_gas_step_2} Choisir al�atoirement un point $X_i$. \\ Classer les centres $C_k$ par proximit� croissante de $X_i$ de sorte que~: - $d\pa{X_i,C_{\sigma\pa{1}}} \infegal ... \infegal d\pa{X_i,C_{\sigma\pa{T}}}$ \\ + $d\pa{X_i,C_{\sigma\pa{1}}} \leqslant ... \leqslant d\pa{X_i,C_{\sigma\pa{T}}}$ \\ \begin{xfor}{j}{1}{C} $ \begin{array}{lcl} @@ -167,26 +167,26 @@ \subsection{Classification � partir de graphes} entre les �l�ments $x_i$ et $x_j$ de l'ensemble $\vecteur{x_1}{x_N}$. $S$ d�signe l'ensemble des sommets et $A$ l'ensemble des arcs $A = \pa{e_{ij}}_{ij}$. On num�rote les ar�tes de $1$ - � $N^2$ de telle sorte qu'elles soient tri�es~: $w_{\sigma(1)} \infegal w_{\sigma(2)} \infegal ... \infegal + � $N^2$ de telle sorte qu'elles soient tri�es~: $w_{\sigma(1)} \leqslant w_{\sigma(2)} \leqslant ... \leqslant w_{\sigma(N^2)}$. On �limine dans cette liste les arcs de m�me poids, on construit donc la fonction $\sigma'$ - de telle sorte que~: $w_{\sigma'(1)} < w_{\sigma'(2)} < ... < w_{\sigma'(n)}$ avec $n \infegal N^2$. On pose + de telle sorte que~: $w_{\sigma'(1)} < w_{\sigma'(2)} < ... < w_{\sigma'(n)}$ avec $n \leqslant N^2$. On pose $\lambda = 2$. \begin{xalgostep}{d�termination de l'ensemble des arcs � conserver} On d�signe par $X$ l'ensemble des arcs � conserver. $X = A$. Si $w_{\sigma'(n)} < \lambda w_{\sigma'(1)}$ alors $X$ est inchang� et on passe � l'�tape suivante. Sinon, on construit la suite $\delta_i = w_{\sigma'(i+1)} - w_{\sigma'(i)}$ pour $i \in \ensemble{1}{n-1}$. La suite $\delta_{\phi(i)}$ - correspond � la m�me suite tri�e~: $\delta_{\phi(1)} \infegal ... \infegal \delta_{\phi(n-1)}$. On d�finit + correspond � la m�me suite tri�e~: $\delta_{\phi(1)} \leqslant ... \leqslant \delta_{\phi(n-1)}$. On d�finit $t = \frac{\delta_{\phi(1)} + \delta_{\phi(n-1)}} {2}$. On d�finit alors le seuil $\alpha$ tel que~: $$ \alpha = \min \acc{ w_{\sigma(i)} \sac - 1 \infegal i \infegal n-1 \text{ et } + 1 \leqslant i \leqslant n-1 \text{ et } w_{\sigma'(i+1)} - w_{\sigma'(i)} \supegal t \text{ et } w_{\sigma'(i)} \supegal \lambda w_{\sigma'(1)}} $$ Si $\alpha$ n'est pas d�fini, $X$ est inchang� et on passe � l'�tape suivante, sinon~: $$ - X = \acc{ e_{ij} \in A \sac d_{ij} \infegal \alpha} + X = \acc{ e_{ij} \in A \sac d_{ij} \leqslant \alpha} $$ \end{xalgostep} @@ -394,7 +394,7 @@ \subsection{Mod�lisation de la densit� des observations} \end{eqnarray} -La densit� $f_X$ est estim�e avec un estimateur � noyau � l'aide de l'�chantillon $\pa{X_i,Y_i}_{1 \infegal i \infegal N}$~: +La densit� $f_X$ est estim�e avec un estimateur � noyau � l'aide de l'�chantillon $\pa{X_i,Y_i}_{1 \leqslant i \leqslant N}$~: \begin{eqnarray} diff --git a/_todo/edit_distance/edit_distance.tex b/_todo/edit_distance/edit_distance.tex index a19c16a6..54d7bd19 100644 --- a/_todo/edit_distance/edit_distance.tex +++ b/_todo/edit_distance/edit_distance.tex @@ -227,7 +227,7 @@ \subsection{Propri�t�s}\label{edit_demonstration}\indexfrr{distance}{�diti Il reste � d�montrer l'in�galit� triangulaire. Soient trois mots $\pa{m_1,m_2,m_3}$, on veut d�montrer que~: $$ - d\pa{m_1,m_3} \infegal d\pa{m_1,m_2} + d \pa{m_2,m_3} + d\pa{m_1,m_3} \leqslant d\pa{m_1,m_2} + d \pa{m_2,m_3} $$ On d�finit~: @@ -250,12 +250,12 @@ \subsection{Propri�t�s}\label{edit_demonstration}\indexfrr{distance}{�diti Or comme la fonction $c$ est une distance sur $\mathcal{C}'$, on peut affirmer que~: $$ - d\pa{M_1,M_3} \infegal d\pa{M_1,M_2} + d \pa{M_2,M_3} + d\pa{M_1,M_3} \leqslant d\pa{M_1,M_2} + d \pa{M_2,M_3} $$ D'o�~: \begin{eqnarray} - d\pa{m_1,m_3} \infegal d\pa{m_1,m_2} + d \pa{m_2,m_3} \label{edit_demo_eq_3} + d\pa{m_1,m_3} \leqslant d\pa{m_1,m_2} + d \pa{m_2,m_3} \label{edit_demo_eq_3} \end{eqnarray} Les assertions (\ref{edit_demo_eq_1}), (\ref{edit_demo_eq_2}), (\ref{edit_demo_eq_3}) montrent que $d$ est bien une @@ -403,7 +403,7 @@ \section{Factorisation des calculs} \begin{xdemo}{propri�t�}{\ref{edition_distance_propriete_001}} -La d�monstration s'effectue par r�currence, la d�finition~\ref{definition_edit_dist_tronc} est bien s�r �quivalente �~\ref{defition_distance_edition_1} pour des mots de longueur un. On suppose donc que ce r�sultat est vrai pour un couple de mots $\pa{m_1,m_2}$ de longueur $\pa{l_1,l_2}$ v�rifiant $l_1 \infegal i$ et $l_2 \infegal j$ avec au plus une �galit�. Soit $m$ un mot, on note $n$ le nombre de lettres qu'il contient. On note $m\left( l\right) $ le mot form� des $l$ premi�res lettres de $m$. Alors~: +La d�monstration s'effectue par r�currence, la d�finition~\ref{definition_edit_dist_tronc} est bien s�r �quivalente �~\ref{defition_distance_edition_1} pour des mots de longueur un. On suppose donc que ce r�sultat est vrai pour un couple de mots $\pa{m_1,m_2}$ de longueur $\pa{l_1,l_2}$ v�rifiant $l_1 \leqslant i$ et $l_2 \leqslant j$ avec au plus une �galit�. Soit $m$ un mot, on note $n$ le nombre de lettres qu'il contient. On note $m\left( l\right) $ le mot form� des $l$ premi�res lettres de $m$. Alors~: \begin{eqnarray*} d_{i,j}^{m_{1},m_{2}} &=& d\left( m_{1}\left( i\right) ,m_{2}\left( j\right) \right)\\ diff --git a/_todo/hmm/hmm.tex b/_todo/hmm/hmm.tex index ef55698c..7cec20b4 100644 --- a/_todo/hmm/hmm.tex +++ b/_todo/hmm/hmm.tex @@ -330,7 +330,7 @@ \subsection{D�finition d'une cha�ne de Markov cach�e} B_M &=& \pa{ b_{M,ij} } _ {\substack{1\leqslant i\leqslant N\\1\leqslant j\leqslant D}}= \pa { \pr{ O_{t}=j \sac q_{t}=i,M } } _ {\substack{1\leqslant i\leqslant N\\1\leqslant j\leqslant D}} \label{hmm_contrainte_2}\\ - \Pi_M &=& \pa { \pi_{M,i} } _ { 1 \infegal i \infegal N } = \pa { \pr { q_1 = i \sac M} } _ { 1 \infegal i \infegal N } + \Pi_M &=& \pa { \pi_{M,i} } _ { 1 \leqslant i \leqslant N } = \pa { \pr { q_1 = i \sac M} } _ { 1 \leqslant i \leqslant N } \label{hmm_contrainte_3} \end{eqnarray*} @@ -755,10 +755,10 @@ \subsection{Introduction d'un �tat d'entr�e et d'un �tat de sortie} B_M &=& \pa{ b_{M,ij} } _ {\substack{1\leqslant i\leqslant N\\1\leqslant j\leqslant D}}= \pa { \pr{ O_{t}=j \sac q_{t}=i,M } } _ {\substack{1\leqslant i\leqslant N \\1\leqslant j\leqslant D}} \label{hmm_contrainte_es_2}\\ - \Pi_M &=& \pa { \pi_{M,i} } _ { 1 \infegal i \infegal N } = \pa { \pr { q_1 = i \sac M} } _ - { 1 \infegal i \infegal N } \label{hmm_contrainte_es_3} \\ - \Theta_M &=& \pa { \theta_{M,i} } _ { 1 \infegal i \infegal N } = \pa { \pr { s \sac q_{t}, M} } _ - { 1 \infegal i \infegal N } \label{hmm_contrainte_es_4} + \Pi_M &=& \pa { \pi_{M,i} } _ { 1 \leqslant i \leqslant N } = \pa { \pr { q_1 = i \sac M} } _ + { 1 \leqslant i \leqslant N } \label{hmm_contrainte_es_3} \\ + \Theta_M &=& \pa { \theta_{M,i} } _ { 1 \leqslant i \leqslant N } = \pa { \pr { s \sac q_{t}, M} } _ + { 1 \leqslant i \leqslant N } \label{hmm_contrainte_es_4} \end{eqnarray} @@ -1458,7 +1458,7 @@ \subsection{Principe} \begin{xremark}{convergence vers un minimum local} -Le th�or�me~\ref{theoreme_hmm_baum_welch_1} d�montre de la suite $\pa{L_t}_{t \infegal 0}$ construite par l'algorithme~\ref{hmm_algorithme_baumwelch}, la valeur atteinte correspond � un minimum local et non global de la vraisemblance (\ref{hmm_eq_vraisemblance_theo}). +Le th�or�me~\ref{theoreme_hmm_baum_welch_1} d�montre de la suite $\pa{L_t}_{t \leqslant 0}$ construite par l'algorithme~\ref{hmm_algorithme_baumwelch}, la valeur atteinte correspond � un minimum local et non global de la vraisemblance (\ref{hmm_eq_vraisemblance_theo}). \indexfr{minimum local} \end{xremark} @@ -1735,7 +1735,7 @@ \subsection{Lemmes et th�or�mes interm�diaires} \forall i \in \intervalle{1}{n}, x_i > 0 \right.} $.\newline% Soit $\pa{x,y} \in D^2$ alors : $$ - \summy{i=1}{n} y_i \ln \crochet{\dfrac{x_i}{y_i}} \infegal 0 + \summy{i=1}{n} y_i \ln \crochet{\dfrac{x_i}{y_i}} \leqslant 0 $$ \end{xlemma} @@ -1745,10 +1745,10 @@ \subsection{Lemmes et th�or�mes interm�diaires} \begin{eqnarray*} \summy{i=1}{n} y_i \ln \crochet{\dfrac{x_i}{y_i}} &=& \summy{i=1}{n} \; \dfrac{y_i}{\summy{k=0}{n}y_k} \; \ln \crochet{\dfrac{x_i}{y_i}} \text{ car } y \in D\\ - &\infegal& \ln \crochet { \summy{i=1}{n} \dfrac{y_i}{\summy{k=0}{n}y_k} \dfrac{x_i}{y_i} } \\ - &\infegal& \ln \crochet { \dfrac{\summy{i=1}{n}x_i}{\summy{i=0}{n}y_i} } = + &\leqslant& \ln \crochet { \summy{i=1}{n} \dfrac{y_i}{\summy{k=0}{n}y_k} \dfrac{x_i}{y_i} } \\ + &\leqslant& \ln \crochet { \dfrac{\summy{i=1}{n}x_i}{\summy{i=0}{n}y_i} } = \ln \dfrac{1}{1} \text{ car } \pa{x,y} \in D^2 \\ - &\infegal& 0 + &\leqslant& 0 \end{eqnarray*} \end{xdemo} @@ -1807,15 +1807,15 @@ \subsection{Lemmes et th�or�mes interm�diaires} \dfrac{x'_i}{x_i}} \end{eqnarray*} -Si $x' = y\pa{x} = \pa{y_i \pa{x} = \frac{x_i \partialfrac{f}{x_i}\pa{x}}{\summy{k=1}{n}x_k \partialfrac{f}{x_k}\pa{x}}}_{1 \infegal i \infegal n}$, alors~: +Si $x' = y\pa{x} = \pa{y_i \pa{x} = \frac{x_i \partialfrac{f}{x_i}\pa{x}}{\summy{k=1}{n}x_k \partialfrac{f}{x_k}\pa{x}}}_{1 \leqslant i \leqslant n}$, alors~: $$ \begin{array}{rrcl} - & - \ln \crochet{\dfrac{f \pa{y\pa{x}}}{f \pa{x}}} &\infegal& + & - \ln \crochet{\dfrac{f \pa{y\pa{x}}}{f \pa{x}}} &\leqslant& \summy{i=1}{n} \dfrac{x_i}{f\pa{x}} \partialfrac{f}{x_i} \pa{x}\ln \crochet {\dfrac{x_i}{y_i\pa{x}}} \\ - \Longrightarrow & - \ln \crochet{\dfrac{f \pa{y\pa{x}}}{f \pa{x}}} &\infegal& + \Longrightarrow & - \ln \crochet{\dfrac{f \pa{y\pa{x}}}{f \pa{x}}} &\leqslant& \crochet{\summy{i=1}{n} \dfrac{ x_i\partialfrac{f}{x_i} \pa{x} } {f\pa{x}}} - \underset{\infegal 0 \text{ d'apr�s le lemme ~\ref{lemme_loglogconvexe}}}{\underbrace{\crochet{\summy{i=1}{n} + \underset{\leqslant 0 \text{ d'apr�s le lemme ~\ref{lemme_loglogconvexe}}}{\underbrace{\crochet{\summy{i=1}{n} y_i\pa{x} \ln \crochet {\dfrac{x_i}{y_i\pa{x}}}}}} \\ \Longrightarrow & \ln \crochet{\dfrac{f \pa{y\pa{x}}}{f \pa{x}}} &\supegal& 0 \\ \\ \Longrightarrow & f \pa{y\pa{x}} &\supegal& f \pa{x} @@ -1856,14 +1856,14 @@ \subsection{Lemmes et th�or�mes interm�diaires} Soit $x=\vecteur{x_1}{x_n} \in D$, on note $e^u = \vecteur{e_{u_1}}{e_{u_n}}$, on peut �crire le polyn�me $P$ sous la forme : \begin{eqnarray*} - P\pa{x} &=& \summyone{ 0 \infegal \vecteurno{i_1}{i_n} \infegal \deg P} \; + P\pa{x} &=& \summyone{ 0 \leqslant \vecteurno{i_1}{i_n} \leqslant \deg P} \; a_{\vecteurno{i_1}{i_n}} \prody{k=1}{n} x_k^{i_k} \\ - P\pa{e^u} &=& \summyone{ 0 \infegal \vecteurno{i_1}{i_n} \infegal \deg P} \; + P\pa{e^u} &=& \summyone{ 0 \leqslant \vecteurno{i_1}{i_n} \leqslant \deg P} \; a_{\vecteurno{i_1}{i_n}} \prody{k=1}{n} \pa{e^{u_k}}^{i_k} \\ - P\pa{e^u} &=& \summyone{ 0 \infegal \vecteurno{i_1}{i_n} \infegal \deg P} \; + P\pa{e^u} &=& \summyone{ 0 \leqslant \vecteurno{i_1}{i_n} \leqslant \deg P} \; a_{\vecteurno{i_1}{i_n}} e^{ \summy{k=1}{n} i_k u_k} \\ - \partialfrac{P\pa{e^u}}{u_l} &=& \summyone{ 0 \infegal \vecteurno{i_1}{i_n} - \infegal \deg P} \; a_{\vecteurno{i_1}{i_n}} \, i_l \, e^{ \summy{k=1}{n} i_k + \partialfrac{P\pa{e^u}}{u_l} &=& \summyone{ 0 \leqslant \vecteurno{i_1}{i_n} + \leqslant \deg P} \; a_{\vecteurno{i_1}{i_n}} \, i_l \, e^{ \summy{k=1}{n} i_k u_k} \end{eqnarray*} @@ -2677,8 +2677,8 @@ \subsection{R�estimation de $\pa{c_{i,c}}_{i,c}$} On d�finit de nouveaux coefficients pour le mod�le de Markov cach� : $$ - \pa{c_{ci}}_{\begin{subarray}{c} 1 \infegal i \infegal N \\ 1 \infegal c \infegal C \end{subarray}} =% - \pa{\pr{c|i}}_{\begin{subarray}{c} 1 \infegal i \infegal N \\ 1 \infegal c \infegal C \end{subarray}} + \pa{c_{ci}}_{\begin{subarray}{c} 1 \leqslant i \leqslant N \\ 1 \leqslant c \leqslant C \end{subarray}} =% + \pa{\pr{c|i}}_{\begin{subarray}{c} 1 \leqslant i \leqslant N \\ 1 \leqslant c \leqslant C \end{subarray}} $$ @@ -2894,7 +2894,7 @@ \subsection{Emissions continues mod�lis�es par une loi normale multidimensio \; e ^{ - \frac{1}{2} \pa{O_t - \mu_i}' \, V_i^{-1} \pa{O_t - \mu_i} } $$ -Les formules de r�estimation (voir \citeindex{Bottou1991}) � utiliser lors de l'algorithme de Baum-Welch sont les suivantes pour les s�quences d'observations $\vecteur{O^k_1}{O^k_{T_k}}_{1 \infegal k \infegal K}$, on note $P_k = f\pa{O^k|M}$ o� $f$ est la densit� des s�quences d'observations~:% +Les formules de r�estimation (voir \citeindex{Bottou1991}) � utiliser lors de l'algorithme de Baum-Welch sont les suivantes pour les s�quences d'observations $\vecteur{O^k_1}{O^k_{T_k}}_{1 \leqslant k \leqslant K}$, on note $P_k = f\pa{O^k|M}$ o� $f$ est la densit� des s�quences d'observations~:% \indexfrr{MMC}{Baum-Welch}% @@ -3011,8 +3011,8 @@ \subsection{Descente d'ordre} A_M \vecteur{i_1}{i_{n+1}} &=& \left \{ \begin{array}{l} 0 \text{ si } i_{n+1} = e \\ - 0 \text{ si } \exists k \infegal n \text{ tel que } i_k \neq e \text{ et } i_{k+1} = e \\ - 1 \text{ si } \exists k \text{ tel que } 3 \infegal k \infegal n \text{ et } \forall k' < k, \; i_{k'} = + 0 \text{ si } \exists k \leqslant n \text{ tel que } i_k \neq e \text{ et } i_{k+1} = e \\ + 1 \text{ si } \exists k \text{ tel que } 3 \leqslant k \leqslant n \text{ et } \forall k' < k, \; i_{k'} = e \text { et } \forall k' \supegal k, \; i_{k'} \neq e \\ \pr{q_t = i_{n+1} \, | \, \vecteurno{q_{t-1} = i_n}{q_{t-n} = i_1}} \text{ sinon} \end{array} diff --git a/_todo/image/image.tex b/_todo/image/image.tex index 6bf77928..052bf0c2 100644 --- a/_todo/image/image.tex +++ b/_todo/image/image.tex @@ -316,11 +316,11 @@ \subsection{Segmentation en lignes}\label{section_segmentation_ligne} $$ \begin{array}{rcl} \forall i, \; m_i^x = \left\{ \begin{array}{l} - 1 \text{ si } l_i = \min \acc { l_k \sac l-x \infegal k \infegal l+x } \\ + 1 \text{ si } l_i = \min \acc { l_k \sac l-x \leqslant k \leqslant l+x } \\ 0 \text{ sinon} \end{array} \right. \\ \forall i, \; M_i^x = \left\{ \begin{array}{l} - 1 \text{ si } l_i = \max \acc { l_k \sac l-x \infegal k \infegal l+x } \\ + 1 \text{ si } l_i = \max \acc { l_k \sac l-x \leqslant k \leqslant l+x } \\ 0 \text{ sinon} \end{array} \right. \end{array} @@ -340,15 +340,15 @@ \subsection{Segmentation en lignes}\label{section_segmentation_ligne} Deux r�gles permettent l'�limination de ces mauvaises d�tections~: \begin{enumerate} - \item Soit $\acc{e_i \sac 1 \infegal i \infegal 4}$ quatre extrema cons�cutifs, alors~: + \item Soit $\acc{e_i \sac 1 \leqslant i \leqslant 4}$ quatre extrema cons�cutifs, alors~: \begin{eqnarray} - \abs{e_2 - e_3} \infegal \beta \abs{e_1 - e_4} \Longrightarrow + \abs{e_2 - e_3} \leqslant \beta \abs{e_1 - e_4} \Longrightarrow \acc{e_2, \, e_3} \text{ doivent �tre �limin�s.} \label{image_ligne_critere_palier_1} \end{eqnarray} \item Soit $e_2$ un minimum et $e_1$ et $e_3$ les extrema qui l'entourent, alors~: \begin{eqnarray} - e_2 \infegal \gamma \min\acc{e_1,e_3} \Longrightarrow + e_2 \leqslant \gamma \min\acc{e_1,e_3} \Longrightarrow \acc{e_2, \, e_1 \text{ ou } e_3} \text{ doivent �tre �limin�s.} \label{image_ligne_critere_palier_2} \end{eqnarray} @@ -545,7 +545,7 @@ \subsection{Redressement de l'image} \end{eqnarray} -Cet intervalle est ensuite divis� en $n$ sous-intervalles de longueur identique afin de construire l'histogramme $\pa{\alpha_i}_{1 \infegal i \infegal n}$ suivant~: +Cet intervalle est ensuite divis� en $n$ sous-intervalles de longueur identique afin de construire l'histogramme $\pa{\alpha_i}_{1 \leqslant i \leqslant n}$ suivant~: \begin{eqnarray} @@ -691,7 +691,7 @@ \subsection{Lignes d'appui} On d�finit ensuite l'intervalle $\cro{l_b,l_h}$ autour de $l$ v�rifiant~: \begin{eqnarray} - \forall i \in \cro{l_b,l_h}, \; h_i \infegal \alpha \, h_l + \forall i \in \cro{l_b,l_h}, \; h_i \leqslant \alpha \, h_l \end{eqnarray} Le r�sultat de la figure~\ref{image_ligne_appui_fig} est obtenu pour $\alpha = 3$ ainsi que ceux de la figure~\ref{image_ligne_appui_fig_bad}. Ces formules peuvent �tre ajust�es manuellement sur quelques images. Puisqu'elles sont bas�es sur des histogrammes, elles sont en g�n�ral robustes. De plus, un �cart de quelques pixels n'alt�re pas les r�sultats de la reconnaissance, l'essentiel est de d�finir un rep�re qui permette de positionner les lettres les unes par rapport aux autres � partir d'une origine d�finie par les lettres. La seconde ligne d'appui repr�sente en quelque sorte un facteur d'�chelle. @@ -781,7 +781,7 @@ \subsection{Estimation de l'�paisseur du trac�} \indexfrr{histogramme}{segment} -Cette estimation peut �tre aussi effectu�e au moyen d'histogrammes de projection. Une ligne ou une colonne de pixels extraite de l'image est constitu�e d'une suite de segments de la couleur de l'�criture. A priori, la longueur minimale de ces segments est �gale � l'�paisseur du trait. Par cons�quent, on construit l'histogramme $\pa{h_i}_{1 \infegal i }$ suivant~: +Cette estimation peut �tre aussi effectu�e au moyen d'histogrammes de projection. Une ligne ou une colonne de pixels extraite de l'image est constitu�e d'une suite de segments de la couleur de l'�criture. A priori, la longueur minimale de ces segments est �gale � l'�paisseur du trait. Par cons�quent, on construit l'histogramme $\pa{h_i}_{1 \leqslant i }$ suivant~: \begin{eqnarray} \forall i \supegal 1, \; h_i &=& card \acc{ \text{ segments de longueur $i$ } } @@ -1218,11 +1218,11 @@ \subsection{Segmentation � partir d'histogrammes} L'approche propos�e ici est un compromis. La premi�re �tape consiste � segmenter gr�ce � la m�thode des histogrammes (paragraphe~\ref{image_segmentation_histogramme_direction}) en ne conservant que des coupures �videntes. Un premier ensemble de points de coupures est ainsi obtenu parmi lesquels seront s�lectionn�s ceux d�finissant la segmentation en graph�mes finale. Ce dernier r�sultat n'est pourtant pas encore parfait, ce que tenteront de corriger les m�thodes bas�es sur les contours ou les r�servoirs, celles-ci permettront ensuite de couper les morceaux litigieux. -Tout d'abord, les pixels sont projet�s selon sept directions entourant la direction verticale $-30^o$, $-20^o$, $-10^o$, $0^o$, $10^o$, $20^o$, $30^o$. On note $\pa{h_{ij}} _ { \begin{subarray}{c} -3 \infegal i \infegal 3 \\ 1 \infegal j \infegal X \end{subarray} }$ les sept histogrammes obtenus o� $X$ est la longueur de l'image. $h_{ij}$ est donc le nombre de pixels noirs (�crits) selon une droite formant un angle $i \times 10^o$ avec la verticale et interceptant la ligne d'appui basse au point d'abscisse $j$. Ces histogrammes sont ensuite liss�s par une moyenne mobile analogue aux formules~(\ref{image_lissage_equation}). On d�finit $e_t$ comme �tant l'�paisseur du trac� (paragraphe~\ref{image_epaisseur_trace}), $e_l$ correspond � la largeur moyenne d'une lettre estim�e au paragraphe~\ref{image_largeur_lettre}. Enfin $C$ est l'ensemble de coupures et d�fini par~: +Tout d'abord, les pixels sont projet�s selon sept directions entourant la direction verticale $-30^o$, $-20^o$, $-10^o$, $0^o$, $10^o$, $20^o$, $30^o$. On note $\pa{h_{ij}} _ { \begin{subarray}{c} -3 \leqslant i \leqslant 3 \\ 1 \leqslant j \leqslant X \end{subarray} }$ les sept histogrammes obtenus o� $X$ est la longueur de l'image. $h_{ij}$ est donc le nombre de pixels noirs (�crits) selon une droite formant un angle $i \times 10^o$ avec la verticale et interceptant la ligne d'appui basse au point d'abscisse $j$. Ces histogrammes sont ensuite liss�s par une moyenne mobile analogue aux formules~(\ref{image_lissage_equation}). On d�finit $e_t$ comme �tant l'�paisseur du trac� (paragraphe~\ref{image_epaisseur_trace}), $e_l$ correspond � la largeur moyenne d'une lettre estim�e au paragraphe~\ref{image_largeur_lettre}. Enfin $C$ est l'ensemble de coupures et d�fini par~: \begin{eqnarray} - C &=& \acc{ h_{ij} \sac h_{ij} \infegal \beta \, e_t } \text{ o� } \beta \supegal 1 + C &=& \acc{ h_{ij} \sac h_{ij} \leqslant \beta \, e_t } \text{ o� } \beta \supegal 1 \label{image_graphem_seg_eq_1} \end{eqnarray} @@ -1233,15 +1233,15 @@ \subsection{Segmentation � partir d'histogrammes} \begin{eqnarray} C &=& \union{k=-3}{3} \union{i=1}{I} \; \cro{a_i^k, b_i^k} \text{ avec } \left\{ \begin{array}{l} - a_i^k \infegal b_i^k < a^k_{i+1} \; \forall i,k \\ - h_x^k \infegal \beta \, e_t \; \forall x \in \cro{a_i^k, b_i^k} + a_i^k \leqslant b_i^k < a^k_{i+1} \; \forall i,k \\ + h_x^k \leqslant \beta \, e_t \; \forall x \in \cro{a_i^k, b_i^k} \end{array} \right. \label{image_graphem_seg_eq_2} \end{eqnarray} -Pour chaque intervalle de la forme $\cro{a_i^k, b_i^k}$, on v�rifie que $b_i^k - a_i^k \infegal e_l$. Dans le cas contraire, on scinde cet intervalle jusqu'� ce que chacun des morceaux soit inf�rieur � $e_l$. La figure~\ref{image_graphem_zone_coupure_soulignement} soul�ve le probl�me de soulignement. Etant donn� la condition exprim�e en~(\ref{image_graphem_seg_eq_2}), il est impossible de s�lectionner une seule zone de coupure probable entre graph�mes. Par cons�quent, la solution adopt�e est l'introduction de points de coupure entre les zones de non-coupure correspondant � des minima locaux. +Pour chaque intervalle de la forme $\cro{a_i^k, b_i^k}$, on v�rifie que $b_i^k - a_i^k \leqslant e_l$. Dans le cas contraire, on scinde cet intervalle jusqu'� ce que chacun des morceaux soit inf�rieur � $e_l$. La figure~\ref{image_graphem_zone_coupure_soulignement} soul�ve le probl�me de soulignement. Etant donn� la condition exprim�e en~(\ref{image_graphem_seg_eq_2}), il est impossible de s�lectionner une seule zone de coupure probable entre graph�mes. Par cons�quent, la solution adopt�e est l'introduction de points de coupure entre les zones de non-coupure correspondant � des minima locaux. \begin{figure}[ht] $$\frame{$\begin{array}[c]{c}\includegraphics[height=1.6cm, width=3cm] @@ -1256,7 +1256,7 @@ \subsection{Segmentation � partir d'histogrammes} Dans ce cas, pour une direction donn�e $k$, l'ensemble des points de coupures correspond aux minima locaux de l'histogramme $\pa{h_i^k}_i$. Un minimum $m^k$ local v�rifie la condition suivante~: \begin{eqnarray} - h^k_{m^k} &=& \min \acc{ h_x^k \sac m^k - e_t \infegal x \infegal m^k + e_t } + h^k_{m^k} &=& \min \acc{ h_x^k \sac m^k - e_t \leqslant x \leqslant m^k + e_t } \label{image_graphem_seg_eq_2_prime} \end{eqnarray} @@ -1294,10 +1294,10 @@ \subsection{Segmentation � partir d'histogrammes} -Les nombres $s_{x^-}^k$ et $s_{x^+}^k$ sont d�finis par la figure~\ref{image_graphem_aire_cut}. L'ensemble $\acc{c^k_i}_{ik}$ est l'ensemble des droites de segmentation possibles s�lectionn�es par l'algorithme, cet ensemble est tri� par $i$ et $k$ croissant ($i$ d'abord, l'indice $k$ d�partageant les points de m�me indice $i$) et aboutit � la suite $\pa{d_n}_{ 1 \infegal n \infegal N }$. Il reste � d�terminer quelles sont parmi les points de cette suite les droites de segmentation les plus pertinentes. +Les nombres $s_{x^-}^k$ et $s_{x^+}^k$ sont d�finis par la figure~\ref{image_graphem_aire_cut}. L'ensemble $\acc{c^k_i}_{ik}$ est l'ensemble des droites de segmentation possibles s�lectionn�es par l'algorithme, cet ensemble est tri� par $i$ et $k$ croissant ($i$ d'abord, l'indice $k$ d�partageant les points de m�me indice $i$) et aboutit � la suite $\pa{d_n}_{ 1 \leqslant n \leqslant N }$. Il reste � d�terminer quelles sont parmi les points de cette suite les droites de segmentation les plus pertinentes. -A cette suite, sont ajout�s les �l�ments s�lectionn�s par l'�quation~(\ref{image_graphem_seg_eq_2_prime}) et deux �l�ments $d_0$ et $d_{N+1}$ qui correspondent aux deux s�parations verticales de d�but et de fin, c'est-�-dire les limites de l'image. On suppose qu'il existe une distance entre deux droites de coupures $i$ et $j$ not�e $\pa{D_{ij}}_{ 0 \infegal i,j \infegal N+1 }$, trouver la meilleure segmentation revient alors � trouver le plus court chemin entre les n\oe uds $d_0$ et $d_{N+1}$ en passant ou non par $n$ autres n\oe uds $\pa{d_n}_{ 1 \infegal n \infegal N }$. Ce probl�me est usuel et r�solu par un algorithme du plus court chemin de type Djikstra (voir \citeindex{Dijkstra1971}). Il reste � d�terminer la distance $D_{ij}$ entre deux droites de coupures qui doit prendre en compte trois �l�ments~: +A cette suite, sont ajout�s les �l�ments s�lectionn�s par l'�quation~(\ref{image_graphem_seg_eq_2_prime}) et deux �l�ments $d_0$ et $d_{N+1}$ qui correspondent aux deux s�parations verticales de d�but et de fin, c'est-�-dire les limites de l'image. On suppose qu'il existe une distance entre deux droites de coupures $i$ et $j$ not�e $\pa{D_{ij}}_{ 0 \leqslant i,j \leqslant N+1 }$, trouver la meilleure segmentation revient alors � trouver le plus court chemin entre les n\oe uds $d_0$ et $d_{N+1}$ en passant ou non par $n$ autres n\oe uds $\pa{d_n}_{ 1 \leqslant n \leqslant N }$. Ce probl�me est usuel et r�solu par un algorithme du plus court chemin de type Djikstra (voir \citeindex{Dijkstra1971}). Il reste � d�terminer la distance $D_{ij}$ entre deux droites de coupures qui doit prendre en compte trois �l�ments~: \indexfr{Djikstra} \indexfr{plus court chemin} @@ -1442,13 +1442,13 @@ \subsection{Segmentation � partir de "r�servoirs"} Parmi ces diff�rents probl�mes, seul le cas des accents appartenant � des composantes connexes diff�rentes sera trait�. Les autres n'apparaissent que pour des couples ou des groupes de lettres pr�cis et seront mod�lis�s ult�rieurement notamment (voir paragraphe~\ref{hmm_bi_lettre}, page~\pageref{hmm_bi_lettre}). Il n'est pas non plus n�cessaire de traiter des probl�mes qui ne surviennent que peu fr�quemment, des d�veloppements sp�cifiques risquent d'introduire de mauvais cas parmi ceux d�j� bien trait�s. Un motif trop peu fr�quent ne peut �tre appris par des mod�les probabilistes tels que les cha�nes de Markov cach�es et les r�seaux de neurones, et ce, qu'il soit bien ou mal segment�. -L'algorithme qui suit permet de d�terminer la profondeur des vall�es, celle des collines s'en d�duit facilement. On cherche la vall�e la plus profonde et pour ce faire, on construit la matrice $v\pa{x,y}_{ \begin{subarray}{c} 1 \infegal x \infegal X \\ 1 \infegal y \infegal Y \end{subarray}}$ o� $\pa{x,y}$ est un pixel de l'image. Cette matrice est d�finie par l'algorithme suivant~\ref{image_algorithm_vpaxy_profondeur}. +L'algorithme qui suit permet de d�terminer la profondeur des vall�es, celle des collines s'en d�duit facilement. On cherche la vall�e la plus profonde et pour ce faire, on construit la matrice $v\pa{x,y}_{ \begin{subarray}{c} 1 \leqslant x \leqslant X \\ 1 \leqslant y \leqslant Y \end{subarray}}$ o� $\pa{x,y}$ est un pixel de l'image. Cette matrice est d�finie par l'algorithme suivant~\ref{image_algorithm_vpaxy_profondeur}. \begin{xalgorithm}{profondeur des vall�es, calcul de $v\pa{x,y}$ %$v\pa{x,y}_{ \begin{subarray} - % 1 \infegal x \infegal X \\ 1 \infegal y \infegal Y \end{subarray}}$ + % 1 \leqslant x \leqslant X \\ 1 \leqslant y \leqslant Y \end{subarray}}$ } \label{image_algorithm_vpaxy_profondeur} @@ -1473,7 +1473,7 @@ \subsection{Segmentation � partir de "r�servoirs"} \begin{xfor}{x}{2}{X} $v\pa{x,y} \longleftarrow \left\{ \begin{array} {ll} 0 & - \text{si } \forall i \infegal x, \; N\pa{i,y} \text{ est faux}\\ + \text{si } \forall i \leqslant x, \; N\pa{i,y} \text{ est faux}\\ max \acc{\; v\pa{x,y}, \; v\pa{x,y+1}+1 \; } & \text{sinon} \end{array} \right.$ \end{xfor} \\ @@ -1900,7 +1900,7 @@ \subsection{Restauration de l'image des graph�mes} Soit $v\pa{G}$ un vecteur de caract�ristiques attach� � un graph�me~$G$ et~$v\pa{H}$ le vecteur attach� au graph�me~$H$ qui est un exemple repr�sentatif d'une classe quelconque, est-il possible de trouver une forme $G'$ obtenue par une transformation $f$ de co�t $c_f$ telle que~: $$ - d\pa{v\pa{G'},v\pa{H}} + c_f \infegal d\pa{v\pa{G},v\pa{H}} + d\pa{v\pa{G'},v\pa{H}} + c_f \leqslant d\pa{v\pa{G},v\pa{H}} $$ \indexfrr{carte}{distance} @@ -1938,7 +1938,7 @@ \subsection{Restauration de l'image des graph�mes} $$ \begin{array}{rl} \forall i, & G\pa{p_i} \neq H\pa{p_i} \\ - \forall \pa{i,j}, & i \infegal j \Longrightarrow D_G\pa{p_i} \infegal D_G\pa{p_j} + \forall \pa{i,j}, & i \leqslant j \Longrightarrow D_G\pa{p_i} \leqslant D_G\pa{p_j} \end{array} $$ @@ -2069,8 +2069,8 @@ \subsection{Connexion de plusieurs composantes connexes} par l'ensemble~: $$ - V\pa{x,y} = \acc{ \pa{x',y'} \sac \pa{x',y'} \neq \pa{x,y}, \; \abs{x'-x} \infegal 1, - \; \abs{y'-y} \infegal 1 } + V\pa{x,y} = \acc{ \pa{x',y'} \sac \pa{x',y'} \neq \pa{x,y}, \; \abs{x'-x} \leqslant 1, + \; \abs{y'-y} \leqslant 1 } $$ \begin{xalgostep}{tri de l'ensemble $F$} @@ -2087,7 +2087,7 @@ \subsection{Connexion de plusieurs composantes connexes} \begin{xalgostep}{connexion des composantes connexes} L'ensemble $F$ est tri�, on note $F = \vecteur{p_1}{p_M}$, il v�rifie~: $$ - \forall i, \; dist_I\pa{p_i} \infegal dist_I\pa{p_{i+1}} + \forall i, \; dist_I\pa{p_i} \leqslant dist_I\pa{p_{i+1}} $$ \end{xalgostep} diff --git a/_todo/ngrams/ngrams.tex b/_todo/ngrams/ngrams.tex index 77c1f07f..338143a0 100644 --- a/_todo/ngrams/ngrams.tex +++ b/_todo/ngrams/ngrams.tex @@ -128,11 +128,11 @@ \section{Estimation} p_e\pa{x,C} &=& \dfrac { card \acc {u \in C \sachant u_1^{n-1} = x }} { \card{C}} \\ \\ p_t\pa{x,y,C} &=& \left\{\begin{array}{l} 0 \text{ si } card \acc { \; \pa{u,t} \sachant u \in C, \; - n \infegal t \infegal l\pa{u}, \; u_{t-n+1}^{n-1} = x} = 0 \\ \\ + n \leqslant t \leqslant l\pa{u}, \; u_{t-n+1}^{n-1} = x} = 0 \\ \\ \text{sinon } \dfrac { card \acc { \; \pa{u,t} \sachant u \in C, \; - n \infegal t \infegal l\pa{u}, \; u_{t-n+1}^{n-1} = x, \; u_t = y}} - { card \acc { \; \pa{u,t} \sachant u \in C, \; n \infegal t \infegal + n \leqslant t \leqslant l\pa{u}, \; u_{t-n+1}^{n-1} = x, \; u_t = y}} + { card \acc { \; \pa{u,t} \sachant u \in C, \; n \leqslant t \leqslant l\pa{u}, \; u_{t-n+1}^{n-1} = x}} \end{array} \right. @@ -225,7 +225,7 @@ \subsection{Classes de symboles} \indexfr{perplexit�} \indexfr{entropie} -Alors que l'article \citeindex{Perraud2003} �labore les classes de mani�re s�mantique (les mots sont class�s selon leur fonction grammaticale), l'article~\citeindex{Yamamoto2003} propose une m�thode permettant de d�terminer le nombre de classes ainsi qu'un crit�re d'�valuation nomm� \emph{perplexit�} et d�fini comme suit pour une liste de s�quence de symboles ${\vecteur{s_1^k}{s_{T_s}^k}}_{ 1 \infegal k \infegal K}$~: +Alors que l'article \citeindex{Perraud2003} �labore les classes de mani�re s�mantique (les mots sont class�s selon leur fonction grammaticale), l'article~\citeindex{Yamamoto2003} propose une m�thode permettant de d�terminer le nombre de classes ainsi qu'un crit�re d'�valuation nomm� \emph{perplexit�} et d�fini comme suit pour une liste de s�quence de symboles ${\vecteur{s_1^k}{s_{T_s}^k}}_{ 1 \leqslant k \leqslant K}$~: \begin{eqnarray} H &=& - \frac{1}{K} \; \summy{k=1}{K} \ln \pr{ \vecteurno {s_1^k}{s_{T_s}^k} } \nonumber\\ diff --git a/_todo/space_metric/space_metric.tex b/_todo/space_metric/space_metric.tex index 4b82b31f..7fb05b01 100644 --- a/_todo/space_metric/space_metric.tex +++ b/_todo/space_metric/space_metric.tex @@ -26,7 +26,7 @@ Chercher des mots identiques ou similaires dans un dictionnaire est un probl�me classique et peut �tre d�fini pour tout espace m�trique. \indexfr{dictionnaire}\indexfr{lexique}\indexfr{plus proches voisins}\indexfrr{distance}{�dition} Soit $\pa{E,d}$ un espace m�trique quelconque et $D \subset E$ un ensemble fini quelconque, $x \in E$ est un �l�ment de $E$ et $s \in \mathbb{R}_+$ un r�el positif. L'objectif est de trouver le sous-ensemble $D'\pa{x,s} \subset D$ des voisins les plus proches de $x$ tels que~: $$ - D'\pa{x,s} = \acc{ y \in D \sac d\pa{x,y} \infegal s} + D'\pa{x,s} = \acc{ y \in D \sac d\pa{x,y} \leqslant s} $$ Afin de d�terminer les voisins de $x$, une m�thode simple consiste � estimer toutes les distances entre $x$ et les �l�ments de $D$. Le co�t de cette m�thode est proportionnel au nombre d'�l�ments de $D$ et � la complexit� du calcul de la distance. On distingue g�n�ralement deux directions afin d'am�liorer la rapidit� des algorithmes de recherche~: @@ -78,7 +78,7 @@ \subsection{Arbre de partitionnement} \begin{xremark}{cas particulier} -Si $A,B \subset D$ et $A \subset B$, cela n'implique pas que $R\pa{A} \infegal R\pa{B}$ comme le montre la +Si $A,B \subset D$ et $A \subset B$, cela n'implique pas que $R\pa{A} \leqslant R\pa{B}$ comme le montre la figure~\ref{figure_partition_inclusion} o� $$R\pa{A} = d\pa{x,y} > d\pa{x,z} = R\pa{B}$$. \end{xremark} @@ -155,7 +155,7 @@ \subsection{Arbre de partitionnement} -La suite $\pa{P_n}_{1 \infegal n \infegal N}$ d�finit un graphe d'inclusion illustr� par la +La suite $\pa{P_n}_{1 \leqslant n \leqslant N}$ d�finit un graphe d'inclusion illustr� par la figure~\ref{figure_partition_inclusion_graph}) pour cinq �l�ments.\\ @@ -223,12 +223,12 @@ \subsection{Arbre de partitionnement} \begin{xtheorem}{hi�rarchie}\label{theorem_hierarchy} \indexfr{hi�rarchie} - Soit $\pa{P_n}_{1 \infegal n \infegal N}$ la suite construite par l'algorithme~\ref{algorithm_AHC}. + Soit $\pa{P_n}_{1 \leqslant n \leqslant N}$ la suite construite par l'algorithme~\ref{algorithm_AHC}. Soit $i\pa{P_n}$ d�fini par~: $$ i\pa{P_n} = \underset{p \in P_n} {\max} \, R\pa{p} $$ - Alors, la suite $\pa{i\pa{P_n}}_{1 \infegal n \infegal N}$ est croissante. + Alors, la suite $\pa{i\pa{P_n}}_{1 \leqslant n \leqslant N}$ est croissante. \indexfrr{suite}{croissante} \end{xtheorem} @@ -240,12 +240,12 @@ \subsection{Arbre de partitionnement} Afin que la d�monstration soit plus claire, les partitions not�es~: $$ - \pa{P_{ni}}_{ \begin{subarray}{l} 1 \infegal n \infegal N \\ 1 \infegal i \infegal N-n+1 \end{subarray} }% + \pa{P_{ni}}_{ \begin{subarray}{l} 1 \leqslant n \leqslant N \\ 1 \leqslant i \leqslant N-n+1 \end{subarray} }% \text{ avec } \forall \pa{n,i}, \; P_{ni} \neq \emptyset $$ sont maintenant not�es~: $$ - \pa{P_{ni}}_{\begin{subarray}{l} 1 \infegal n \infegal N \\ 1 \infegal i \infegal N \end{subarray}} % + \pa{P_{ni}}_{\begin{subarray}{l} 1 \leqslant n \leqslant N \\ 1 \leqslant i \leqslant N \end{subarray}} % \text{ avec } \forall n, \; card \acc{ i | P_{ni} = \emptyset } = N-n+1 $$ @@ -319,8 +319,8 @@ \subsection{Arbre de partitionnement} &\Longrightarrow& \acc{a_{k+1},b_{k+1}} \in \underset{ \begin{subarray}{c} i < j \\ i \neq a_k, j\neq b_k\\ P_{k-1}^i \neq \emptyset \\ P_{k-1}^j \neq \emptyset\end{subarray} } {\arg \min} \, R\pa{P_{k-1}^i \bigcup P_{k-1}^j}\\ - &\Longrightarrow& R\pa{P_k^{a_{k-1}} \bigcup P_k^{b_{k-1}}} \infegal R\pa{P_k^{a_{k+1}} \bigcup P_k^{b_{k+1}}} \\ - &\Longrightarrow& R\pa{ P_k^{a_{k}} } \infegal R\pa{ P_{k+1}^{a_{k+1}} } + &\Longrightarrow& R\pa{P_k^{a_{k-1}} \bigcup P_k^{b_{k-1}}} \leqslant R\pa{P_k^{a_{k+1}} \bigcup P_k^{b_{k+1}}} \\ + &\Longrightarrow& R\pa{ P_k^{a_{k}} } \leqslant R\pa{ P_{k+1}^{a_{k+1}} } \end{eqnarray*} D'o�~: @@ -358,9 +358,9 @@ \subsection{Arbre de partitionnement} \item si $C_{k+1}^{a_k} \in P_{k}^{a_{k}}$, alors : \begin{eqnarray} R_k^{a_k} &=& \underset{y \in P_{k}^{a_{k}}}{\max} \, d\pa{C_{k}^{a_k},y} %\nonumber\\ - \infegal \underset{y \in P_{k}^{a_{k}}}{\max} \, d\pa{C_{k+1}^{a_k},y} - \infegal \underset{y \in P_{k+1}^{a_{k}}}{\max} \, d\pa{C_{k+1}^{a_k},y} %\nonumber\\ - \infegal R_{k+1}^{a_k} \label{equation_reca_2} + \leqslant \underset{y \in P_{k}^{a_{k}}}{\max} \, d\pa{C_{k+1}^{a_k},y} + \leqslant \underset{y \in P_{k+1}^{a_{k}}}{\max} \, d\pa{C_{k+1}^{a_k},y} %\nonumber\\ + \leqslant R_{k+1}^{a_k} \label{equation_reca_2} \end{eqnarray} \item si $C_{k+1}^{a_k} \in P_{k}^{b_{k+1}}$, alors l'algorithm~\ref{algorithm_AHC} implique que~: \begin{eqnarray} @@ -382,7 +382,7 @@ \subsection{Arbre de partitionnement} En conclusion, la r�currence est d�montr�e par les in�galit�s (\ref{equation_reca_1}), (\ref{equation_reca_2}), -(\ref{equation_reca_3}). Par cons�quent, la suite d'indices $\pa{i\pa{P_n}}_{1 \infegal n \infegal N}$ est croissante. +(\ref{equation_reca_3}). Par cons�quent, la suite d'indices $\pa{i\pa{P_n}}_{1 \leqslant n \leqslant N}$ est croissante. \end{xdemo} @@ -397,13 +397,13 @@ \subsection{Arbre de partitionnement} soit $n$ un n\oe ud quelconque de cet arbre, alors~:\indexfr{successeur} \begin{eqnarray} \textnormal{le successeur } s\pa{n} \text { de } n\; { existe} - \Longrightarrow R\pa{n} \infegal R\pa{s\pa{n}} + \Longrightarrow R\pa{n} \leqslant R\pa{s\pa{n}} \end{eqnarray} \end{xcorollary} Finalement, si $p_1$ et $p_2$ sont deux partitions de l'arbre de partitionnement, et $p_1 \subset p_2$, alors -$R\pa{p_1} \infegal R\pa{p_2}$. Cette conclusion n'�tait pas �vidente d'apr�s le cas particulier de la figure~\ref{figure_partition_inclusion}. +$R\pa{p_1} \leqslant R\pa{p_2}$. Cette conclusion n'�tait pas �vidente d'apr�s le cas particulier de la figure~\ref{figure_partition_inclusion}. @@ -496,7 +496,7 @@ \subsection{Ajouter un �l�ment au graphe} \xelse $$ \begin{array}{lr} - \exists n \in N \text{ tel que } d\pa{m,C\pa{n}} \infegal R\pa{n} & + \exists n \in N \text{ tel que } d\pa{m,C\pa{n}} \leqslant R\pa{n} & \hspace{6.5cm}\refstepcounter{equation}(\theequation) \label{amelioration_insertion_2} \\ \text{et } N \longleftarrow \acc{N - \acc{n} } \cup \acc{p_1\pa{n},p_2\pa{n}} & @@ -537,7 +537,7 @@ \subsection{Ajouter un �l�ment au graphe} \begin{eqnarray} \text{si } && \forall n \in N, \; d\pa{m,ArgC\pa{n}} > R\pa{n} \label{amelioration_insertion_1_p} \\ - \text{sinon } && \exists n \in N \text{ tel que } d\pa{m,ArgC\pa{n}} \infegal R\pa{n} + \text{sinon } && \exists n \in N \text{ tel que } d\pa{m,ArgC\pa{n}} \leqslant R\pa{n} \label{amelioration_insertion_2_p} \end{eqnarray} @@ -572,7 +572,7 @@ \subsection{Optimisation de la recherche des plus proches voisins} Cette optimisation de la recherche utilise un des arbres construits par l'algorithme~\ref{algorithm_AHC} ou la r�p�tition de l'algorithme~\ref{algorithm_insertion} ou~\ref{algorithm_insertion}$^*$. Chaque n\oe ud d�finit une partie d�crite par un centre et un rayon. Le probl�me � r�soudre consiste ici � trouver pour un �l�ment $m$ la liste $B\pa{s}$ des voisins inclus dans le sous-ensemble $D\vecteur{y_1}{y_N}$ v�rifiant~: $$ - B\pa{s} = \acc{ x \in D \sachant d\pa{x,m} \infegal s } + B\pa{s} = \acc{ x \in D \sachant d\pa{x,m} \leqslant s } $$ Soit $P \subset E$ une partie dont le centre est $C\pa{P}$ et le rayon $R\pa{P}$, l'optimisation est bas�e sur les deux remarques suivantes~: @@ -581,8 +581,8 @@ \subsection{Optimisation de la recherche des plus proches voisins} d\pa{m,C\pa{P}} > s + R\pa{P} &\Longrightarrow& \forall w \in P, \; d\pa{m,w} > s \Longrightarrow B\pa{s} \cap P = \emptyset \label{equation_un} \\ - d\pa{m,C\pa{P}} + R\pa{P} \infegal s &\Longrightarrow& - \forall w \in P, \; d\pa{m,w} \infegal s + d\pa{m,C\pa{P}} + R\pa{P} \leqslant s &\Longrightarrow& + \forall w \in P, \; d\pa{m,w} \leqslant s \Longrightarrow B\pa{s} \subset P \label{equation_deux} \end{eqnarray} @@ -593,7 +593,7 @@ \subsection{Optimisation de la recherche des plus proches voisins} Soit $r$ la racine de l'arbre $A$ obtenu par un des algorithmes~\ref{algorithm_AHC}, \ref{algorithm_insertion_all}, $\ref{algorithm_insertion}^*$. $N$ est un ensemble de n\oe uds. Soit $s \in \mathbb{R}_+$, $B\pa{s}$ est - l'ensemble cherch�, il est d�fini par $B\pa{s} = \acc{ x \in D \sachant d\pa{x,m} \infegal s }$. + l'ensemble cherch�, il est d�fini par $B\pa{s} = \acc{ x \in D \sachant d\pa{x,m} \leqslant s }$. \begin{xalgostep}{initialisation} $N \longleftarrow r$ \\ @@ -605,14 +605,14 @@ \subsection{Optimisation de la recherche des plus proches voisins} Soit $n \in N$ et $p$ la partie d�finie par $n$, $n$ est retir� de $N$ : $N \longleftarrow N \backslash n$ et~: \\ - \begin{xif}{$d\pa{m, C\pa{p}} + R\pa{p}\infegal s $} + \begin{xif}{$d\pa{m, C\pa{p}} + R\pa{p}\leqslant s $} $B\pa{s} \longleftarrow B\pa{s} \bigcup p$ \xelseif{$ d\pa{m, C\pa{p}} > s + R\pa{p} $} ne rien faire \xelse \begin{xif}{$p = \acc{ w \in D}$} - \begin{xif}{$d\pa{m, w} \infegal s$} + \begin{xif}{$d\pa{m, w} \leqslant s$} $B\pa{s} \longleftarrow B\pa{s} \bigcup \acc{w}$ \end{xif} \xelse @@ -644,7 +644,7 @@ \subsection{Crit�re d'efficacit�} \begin{eqnarray} Cr_1\pa{A} &=& \left\{ \begin{array}{l} 0 \text{ si } R\pa{D} = 0 \text{ ou } - card\pa{D} \infegal 1 \\ \\ \textnormal{sinon } + card\pa{D} \leqslant 1 \\ \\ \textnormal{sinon } \dfrac{\summyone{n \in A} R\pa{n}}{\pa{card\pa{D}-1} * R\pa{D}} \end{array}% \right. @@ -657,22 +657,22 @@ \subsection{Crit�re d'efficacit�} \end{eqnarray} -Si l'arbre $A$ choisi est construit par l'algorithme~\ref{algorithm_AHC}, le corollaire~\ref{corollary_AHC} permet d'affirmer que si $n$ est un n\oe ud de $A$, alors $R\pa{n} \infegal R\pa{D}$. De plus, l'arbre contient au plus $card\pa{D}-1$ n\oe uds dont le rayon est strictement positif~: +Si l'arbre $A$ choisi est construit par l'algorithme~\ref{algorithm_AHC}, le corollaire~\ref{corollary_AHC} permet d'affirmer que si $n$ est un n\oe ud de $A$, alors $R\pa{n} \leqslant R\pa{D}$. De plus, l'arbre contient au plus $card\pa{D}-1$ n\oe uds dont le rayon est strictement positif~: $$ - card \acc{n \in A \; | \; R \pa{n} > 0} \infegal card\pa{D}-1 + card \acc{n \in A \; | \; R \pa{n} > 0} \leqslant card\pa{D}-1 $$ Par cons�quent, l'arbre $A$ construit par l'algorithme~\ref{algorithm_AHC} satisfait~: \begin{eqnarray} - R\pa{D} \infegal \summyone{n \in A} R\pa{n} \infegal \pa{card\pa{D}-1} * R\pa{D} + R\pa{D} \leqslant \summyone{n \in A} R\pa{n} \leqslant \pa{card\pa{D}-1} * R\pa{D} \label{inegalite_critere} \end{eqnarray} L'in�galit� (\ref{inegalite_critere}) explique l'expression du crit�re (\ref{critere_optimalite}) puisque~: \begin{eqnarray} - R\pa{D} > 0 \Longrightarrow \dfrac{1}{card\pa{D}-1} \infegal Cr_1\pa{A} \infegal 1 && + R\pa{D} > 0 \Longrightarrow \dfrac{1}{card\pa{D}-1} \leqslant Cr_1\pa{A} \leqslant 1 && \label{inegalite_critere2} \end{eqnarray} @@ -754,7 +754,7 @@ \subsection{Crit�re d'efficacit�} \begin{eqnarray} Cr_2\pa{A} &=& \left\{\begin{array}{l} - 0 \text{ si } R\pa{D} = 0 \text{ ou } card\pa{D} \infegal 1 \\ + 0 \text{ si } R\pa{D} = 0 \text{ ou } card\pa{D} \leqslant 1 \\ \dfrac{ \summyone{n \in A} \biggcro{ 2 R\pa{n} - d\pa{n} }} {\pa{card\pa{D}-1} * R\pa{D}} \text{ sinon} \end{array}% @@ -768,7 +768,7 @@ \subsection{Crit�re d'efficacit�} De mani�re �vidente, ce crit�re v�rifie (\ref{inegalite_critere3})~: \begin{eqnarray} - R\pa{D} > 0 \Longrightarrow 0 \infegal Cr_2\pa{A} \infegal 2 && \label{inegalite_critere3} + R\pa{D} > 0 \Longrightarrow 0 \leqslant Cr_2\pa{A} \leqslant 2 && \label{inegalite_critere3} \end{eqnarray} Ce second crit�re ne sera pas �voqu� par la suite car il corrobore les d�ductions obtenus avec le premier crit�re. @@ -789,7 +789,7 @@ \subsection{R�sultats exp�rimentaux} \label{section_test} -La premi�re exp�rience consiste � chercher les voisins dans un ensemble de points tir�s al�atoirement dans le carr� $\cro{0,1} \times \cro{0,1}$ (figure~\ref{space_metric_rnd_01_01}). L'exp�rience consiste d'abord � tirer $N$ points al�atoires dans ce carr�. Pour diff�rentes valeurs de seuil~$s$, $N$~points sont de nouveau tir�s al�atoirement pour lesquels le voisinage $V_s\pa{x}=\acc{y \sac d\pa{x,y} \infegal s}$ est calcul� selon les deux algorithmes~\ref{algorithm_AHC} et~$\ref{algorithm_insertion}^*$. Si $X$ est une variable al�atoire de l'espace m�trique~$E$ -~les �l�ments de $E$ sont �quiprobables~-, l'objectif est d'estimer le nombre moyen de calculs de distance $r_s\pa{N}$ effectu�s pour d�terminer les voisins d'un �l�ment~: +La premi�re exp�rience consiste � chercher les voisins dans un ensemble de points tir�s al�atoirement dans le carr� $\cro{0,1} \times \cro{0,1}$ (figure~\ref{space_metric_rnd_01_01}). L'exp�rience consiste d'abord � tirer $N$ points al�atoires dans ce carr�. Pour diff�rentes valeurs de seuil~$s$, $N$~points sont de nouveau tir�s al�atoirement pour lesquels le voisinage $V_s\pa{x}=\acc{y \sac d\pa{x,y} \leqslant s}$ est calcul� selon les deux algorithmes~\ref{algorithm_AHC} et~$\ref{algorithm_insertion}^*$. Si $X$ est une variable al�atoire de l'espace m�trique~$E$ -~les �l�ments de $E$ sont �quiprobables~-, l'objectif est d'estimer le nombre moyen de calculs de distance $r_s\pa{N}$ effectu�s pour d�terminer les voisins d'un �l�ment~: \begin{eqnarray} r_s\pa{N} = \dfrac{1}{N} \; \esp{ \text{nombre de distances calcul�es pour $V_s\pa{X}$}} @@ -1025,11 +1025,11 @@ \subsection{B+ tree} \begin{xdefinition}{B+ tree} Soit $B_n$ un B+ tree, soit $N$ un n\oe ud de $B_n$, il contient un vecteur $V\pa{N} = \vecteur{x_1}{x_t}$ - avec $0 \infegal t \infegal n$ et $x_1 < ... < x_t$. Ce n\oe ud contient aussi exactement $t-1$ n\oe uds fils + avec $0 \leqslant t \leqslant n$ et $x_1 < ... < x_t$. Ce n\oe ud contient aussi exactement $t-1$ n\oe uds fils not�s $\vecteur{N_1}{N_{t-1}}$. On d�signe par $D\pa{N_t}$ l'ensemble des descendants du n\oe ud $N_t$ et $G\pa{N_t} = \acc{ V\pa{M} \sac M \in D\pa{N_t}}$. Le n\oe ud $N$ v�rifie~: \begin{eqnarray*} - && \forall x \in G\pa{N_t}, \; x_{t} \infegal x < x_{t+1} \\ + && \forall x \in G\pa{N_t}, \; x_{t} \leqslant x < x_{t+1} \\ && \text{avec par convention } x_0 = -\infty \text{ et } x_{t+1} = + \infty \end{eqnarray*} \end{xdefinition} @@ -1208,7 +1208,7 @@ \subsection{Branch and Bound} \indexfr{m�diane} \indexfr{analyse en composantes principales} -La m�thode propos�e dans cet article effectue une analyse en composantes principales afin de rep�rer l'axe principal du nuage qui correspond au vecteur propre $\vec{V}$ associ� � la plus grande des valeurs propres de la matrice $X'X$ o� chaque ligne de la matrice $X$ est un �l�ment du nuage de points $\vecteur{\vec{x_1}}{\vec{x_n}}$. On d�termine la m�diane $m$ de l'ensemble $\acc{ < \vec{V}, \vec{x_i} > \sac 1 \infegal i \infegal n}$. Le nuage de points est alors divis�e en deux sous-nuages de cardinaux �gaux selon que le produit scalaire $< \vec{V}, \vec{x_i} >$ est inf�rieur ou sup�rieur � $m$. Chaque sous-nuage est � nouveau divis� selon le m�me processus incluant une analyse en composantes principales et la recherche de la m�diane. L'algorithme s'arr�te lorsque les sous-ensembles sont r�duits � un seul �l�ment. +La m�thode propos�e dans cet article effectue une analyse en composantes principales afin de rep�rer l'axe principal du nuage qui correspond au vecteur propre $\vec{V}$ associ� � la plus grande des valeurs propres de la matrice $X'X$ o� chaque ligne de la matrice $X$ est un �l�ment du nuage de points $\vecteur{\vec{x_1}}{\vec{x_n}}$. On d�termine la m�diane $m$ de l'ensemble $\acc{ < \vec{V}, \vec{x_i} > \sac 1 \leqslant i \leqslant n}$. Le nuage de points est alors divis�e en deux sous-nuages de cardinaux �gaux selon que le produit scalaire $< \vec{V}, \vec{x_i} >$ est inf�rieur ou sup�rieur � $m$. Chaque sous-nuage est � nouveau divis� selon le m�me processus incluant une analyse en composantes principales et la recherche de la m�diane. L'algorithme s'arr�te lorsque les sous-ensembles sont r�duits � un seul �l�ment. @@ -1268,11 +1268,11 @@ \subsection{LAESA} inclus dans $E$ v�rifiant~: $$ - \forall y \in V\pa{x}, \; d\pa{x,y} \infegal \rho + \forall y \in V\pa{x}, \; d\pa{x,y} \leqslant \rho $$ - On suppose que la matrice $M = \pa{m_{ij}}_ { \begin{subarray} 1 \infegal i \infegal P \\ - 1 \infegal j \infegal N \end{subarray} }$ a �t� calcul�e pr�alablement comme suit~: + On suppose que la matrice $M = \pa{m_{ij}}_ { \begin{subarray} 1 \leqslant i \leqslant P \\ + 1 \leqslant j \leqslant N \end{subarray} }$ a �t� calcul�e pr�alablement comme suit~: $$ \forall \pa{i,j}, m_{ij} = d\pa{p_i, y_j} @@ -1330,7 +1330,7 @@ \subsection{LAESA} \begin{xif}{$A \neq \emptyset$} Retour � l'�tape~\ref{classif_laesa_step_b}. \xelse - Fin, l'ensemble cherch� correspond � $\acc{y \in E \sac g\pa{y}} \infegal \rho$. + Fin, l'ensemble cherch� correspond � $\acc{y \in E \sac g\pa{y}} \leqslant \rho$. \end{xif} \end{xalgostep} @@ -1386,11 +1386,11 @@ \subsection{LAESA} inclus dans $E$ v�rifiant~: $$ - \forall y \in V\pa{x}, \; d\pa{x,y} \infegal \rho + \forall y \in V\pa{x}, \; d\pa{x,y} \leqslant \rho $$ - On suppose que la matrice $M = \pa{m_{ij}}_ { \begin{subarray} 1 \infegal i \infegal P \\ - 1 \infegal j \infegal N \end{subarray} }$ a �t� calcul�e pr�alablement comme suit~: + On suppose que la matrice $M = \pa{m_{ij}}_ { \begin{subarray} 1 \leqslant i \leqslant P \\ + 1 \leqslant j \leqslant N \end{subarray} }$ a �t� calcul�e pr�alablement comme suit~: $$ \forall \pa{i,j}, \; m_{ij} = d\pa{p_i, y_j} @@ -1407,12 +1407,12 @@ \subsection{LAESA} \begin{xalgostep}{tri} Tri l'ensemble $g\pa{y_i}$ par ordre croissant $\longrightarrow g\pa{y_{\sigma\pa{j}}}$. \\ \begin{xfor}{j}{1}{N} - \begin{xif}{$g\pa{y_{\sigma\pa{j}}} \infegal \rho$} + \begin{xif}{$g\pa{y_{\sigma\pa{j}}} \leqslant \rho$} $g\pa{y_{\sigma\pa{j}}} = d\pa{x,y_{\sigma\pa{j}}}$ \end{xif} \end{xfor} - Fin, l'ensemble cherch� correspond � $\acc{y \in E \sac g\pa{y}} \infegal \rho$. + Fin, l'ensemble cherch� correspond � $\acc{y \in E \sac g\pa{y}} \leqslant \rho$. \end{xalgostep} \end{xalgorithm} @@ -1458,7 +1458,7 @@ \subsection{R�sultats th�oriques} \begin{xalgostep}{�laguage} On d�finit $t_0 \longleftarrow \underset{i} {\min} \; \gamma\pa{x_i}$. \\ - Puis on construit l'ensemble $F\pa{x} = \acc{ x_i \in E \sac \gamma\pa{x_i} }\infegal + Puis on construit l'ensemble $F\pa{x} = \acc{ x_i \in E \sac \gamma\pa{x_i} }\leqslant \frac{\alpha}{\beta} \, t_0$. \end{xalgostep} @@ -1506,7 +1506,7 @@ \subsection{R�sultats th�oriques} $$ \underset{ n \rightarrow \infty } { \lim \sup } \; - \esp{F_N} \infegal k + \pa{\frac{\alpha}{\beta}}^{2d} + \esp{F_N} \leqslant k + \pa{\frac{\alpha}{\beta}}^{2d} $$ \end{xtheorem} @@ -1529,7 +1529,7 @@ \subsection{Suppression des voisins inutiles} L'article \citeindex{Wu2002} propose une id�e int�ressante qui consiste � supprimer les voisins inutiles. Cette m�thode s'applique dans le cas d'une classification � l'aide de plus proches voisins. A un �l�ment � classer, cette m�thode attribue la classe du point le plus proche, il faut donc a priori calculer les distances du point en question � tous ceux d�j� class�s. Certains points de cet ensemble ont une forte "capacit� d'attraction"~: ils sont le centre d'une r�gion dans laquelle seuls des points de la m�me classe figurent. Plus concr�tement, soient un point $y$ � classer et une base de points class�s not� $\vecteur{x_1}{x_N}$ de classe $\vecteur{c\pa{x_1}}{c\pa{x_N}}$, on suppose que $x_i$ et $x_j$ sont deux points, enfin, on d�finit~: \begin{eqnarray} - y^* = \arg \min \acc{ d\pa{x_k, y} \sac 1 \infegal k \infegal n } + y^* = \arg \min \acc{ d\pa{x_k, y} \sac 1 \leqslant k \leqslant n } \end{eqnarray} On suppose �galement que $x_i$ est un point de forte capacit� et que~: diff --git a/_todo/squelette/squelette.tex b/_todo/squelette/squelette.tex index e298f455..a5832881 100644 --- a/_todo/squelette/squelette.tex +++ b/_todo/squelette/squelette.tex @@ -122,7 +122,7 @@ \section{4-connexit� ou 8-connexit�} \begin{xdefinition}{chemin} \indexfr{chemin} Un chemin $C$ allant du pixel $x$ au pixel $y$ est une succession de petits d�placements - $\pa{v_i}_{1 \infegal i \infegal n}$ telle que~: + $\pa{v_i}_{1 \leqslant i \leqslant n}$ telle que~: $$ y = x + \summy{i=1}{n} \; v_i @@ -157,7 +157,7 @@ \section{4-connexit� ou 8-connexit�} \begin{xdefinition}{chemin k-connexe} - Le chemin $C= \pa{v_i}_{1 \infegal i \infegal n}$ est dit $k$-connexe + Le chemin $C= \pa{v_i}_{1 \leqslant i \leqslant n}$ est dit $k$-connexe si $\forall i \in \ensemble{1}{n}, \; v_i \in E_k$. \end{xdefinition} @@ -290,7 +290,7 @@ \section{Carte de distance} & \begin{minipage}{6.5cm} Exemple de masque 5x5, si ce masque est not� - $M \in M_5\pa{\mathbb{R}} = \pa{m_{ij}}_{ -2 \infegal i,j \infegal 2}$, + $M \in M_5\pa{\mathbb{R}} = \pa{m_{ij}}_{ -2 \leqslant i,j \leqslant 2}$, lorsque $m_{20} > 2 m_{10}$, le calcul de distance d�fini en~\ref{squelette_def_dist_masque} ne fera jamais intervenir le d�placement $\vecteurim{2}{0}$. \end{minipage} @@ -350,7 +350,7 @@ \section{Carte de distance} \begin{xdefinition}{masque de distance} \indexfrr{masque}{distance} - Soit $M \in M_{2n+1}\pa{\mathbb{R}} = \pa{m_{ij}}_{ -n \infegal i,j \infegal n}$ une matrice carr�e + Soit $M \in M_{2n+1}\pa{\mathbb{R}} = \pa{m_{ij}}_{ -n \leqslant i,j \leqslant n}$ une matrice carr�e de dimension $2n+1$. La matrice $M$ est un masque de distance de dimension $n$ si~: \begin{itemize} @@ -381,23 +381,23 @@ \section{Carte de distance} \end{xdefinition} -L'application d�finie en~\ref{squelette_def_dist_masque} est bien une distance. Comme le masque est sym�trique, elle est aussi sym�trique. De plus, $d_M\pa{p_1,p_2} = 0 \Longleftrightarrow p_1 = p_2$. L'in�galit� triangulaire est aussi facile � v�rifier puisque pour trois points $p_1,p_2,p$, la concat�nation des chemins allant de $p_1$ � $p$, puis de $p$ � $p_2$ forme un chemin allant de $p_1$ � $p_2$. Par cons�quent~: $d_M\pa{p_1,p_2} \infegal d_M\pa{p_1,p} + d_M\pa{p_2,p}$. +L'application d�finie en~\ref{squelette_def_dist_masque} est bien une distance. Comme le masque est sym�trique, elle est aussi sym�trique. De plus, $d_M\pa{p_1,p_2} = 0 \Longleftrightarrow p_1 = p_2$. L'in�galit� triangulaire est aussi facile � v�rifier puisque pour trois points $p_1,p_2,p$, la concat�nation des chemins allant de $p_1$ � $p$, puis de $p$ � $p_2$ forme un chemin allant de $p_1$ � $p_2$. Par cons�quent~: $d_M\pa{p_1,p_2} \leqslant d_M\pa{p_1,p} + d_M\pa{p_2,p}$. \indexfr{passe d'image} L'algorithme qui suit permet d'obtenir la carte~\ref{ske_cart_dist} � partir d'une distance d�finie en~\ref{squelette_def_dist_masque} de mani�re rapide, soit en deux "passes" d'image. Plus pr�cis�ment, il est n�cessaire de parcourir deux fois l'ensemble des pixels de l'image afin de construire la carte de distance. Auparavant, on d�finit les deux voisinages de pixels suivants~: \begin{eqnarray*} V_h\pa{n} &=& \acc{ v = \vecteurimm{v_x}{v_y} \; \left| \; - -n \infegal v_y \infegal 0 \text{ et } - \left\{ \begin{array}{l} -n \infegal v_x < 0 \text{ si } v_y = 0 \\ - -n \infegal v_x \infegal n \text{ si } v_y < 0 + -n \leqslant v_y \leqslant 0 \text{ et } + \left\{ \begin{array}{l} -n \leqslant v_x < 0 \text{ si } v_y = 0 \\ + -n \leqslant v_x \leqslant n \text{ si } v_y < 0 \end{array} \right. \right. } \\ V_b\pa{n} &=& \acc{ v = \vecteurimm{v_x}{v_y} \; \left| \; - 0 \infegal v_y \infegal n \text{ et } - \left\{ \begin{array}{l} 0 < v_x \infegal n \text{ si } v_y = 0 \\ - -n \infegal v_x \infegal n \text{ si } v_y > 0 + 0 \leqslant v_y \leqslant n \text{ et } + \left\{ \begin{array}{l} 0 < v_x \leqslant n \text{ si } v_y = 0 \\ + -n \leqslant v_x \leqslant n \text{ si } v_y > 0 \end{array} \right. \right. } \end{eqnarray*} @@ -614,7 +614,7 @@ \subsection{Erosion � partir de masques $\pa{3,3}$} pour lesquels $C^I\pa{p} > 0$ o� $C$ est la carte de distance. Puis on construit la liste des pixels $L=\vecteur{p_1}{p_n}$. Cette liste est tri�e - par ordre de distance croissante~: $i \infegal j \Longrightarrow C^I\pa{p_i} \infegal C^I\pa{p_j}$. + par ordre de distance croissante~: $i \leqslant j \Longrightarrow C^I\pa{p_i} \leqslant C^I\pa{p_j}$. \end{xalgostep} \begin{xalgostep}{�rosion}\label{ske_algo_ske_2_a} @@ -814,7 +814,7 @@ \subsection{Erosion � partir de masques $\pa{3,3}$} $p$ pour lesquels $C^I\pa{p} > 0$ o� $C$ est la carte de distance. Puis on construit la liste des pixels $L=\vecteur{p_1}{p_n}$. Cette liste est tri�e - par ordre de distance croissante~: $i \infegal j \Longrightarrow C^I\pa{p_i} \infegal C^I\pa{p_j}$. + par ordre de distance croissante~: $i \leqslant j \Longrightarrow C^I\pa{p_i} \leqslant C^I\pa{p_j}$. \end{xalgostep} \begin{xalgostep}{�rosion}\label{ske_algo_ske_2_a} @@ -945,7 +945,7 @@ \subsection{Extraction du squelette bas�e sur un crit�re de connexit�} \indexfrr{crit�re}{connexit�} \label{ske_critere_connexite} -La m�thode est tir�e de l'article \citeindex{Choi2003}. Si on consid�re un point $P$ d'une forme � squelettiser, on note $Q\pa{P}$ le point le plus proche de $P$ appartenant au contour, on note �galement $\pa{P_i}_{1 \infegal i \infegal 8}$ les huits voisins de $P$. A priori, si le point $P$ n'appartient pas au squelette, l'ensemble de points $\pa{Q\pa{P_i}}_{1 \infegal i \infegal 8}$ seront proches les uns des autres. En revanche, si le point $P$ appartient au squelette, l'ensemble $\pa{Q\pa{P_i}}_{1 \infegal i \infegal 8}$ sera dispers� sur deux bords oppos�s du contour (voir figure~\ref{ske_choi2003}). +La m�thode est tir�e de l'article \citeindex{Choi2003}. Si on consid�re un point $P$ d'une forme � squelettiser, on note $Q\pa{P}$ le point le plus proche de $P$ appartenant au contour, on note �galement $\pa{P_i}_{1 \leqslant i \leqslant 8}$ les huits voisins de $P$. A priori, si le point $P$ n'appartient pas au squelette, l'ensemble de points $\pa{Q\pa{P_i}}_{1 \leqslant i \leqslant 8}$ seront proches les uns des autres. En revanche, si le point $P$ appartient au squelette, l'ensemble $\pa{Q\pa{P_i}}_{1 \leqslant i \leqslant 8}$ sera dispers� sur deux bords oppos�s du contour (voir figure~\ref{ske_choi2003}). \begin{figure}[ht] @@ -976,7 +976,7 @@ \subsection{Extraction du squelette bas�e sur un crit�re de connexit�} \end{xalgostep} \begin{xalgostep}{squelettisation} - Pour tout point $P \in F$, soit $\pa{P_i}_{1 \infegal i \infegal 8}$ les voinsins de $P$ + Pour tout point $P \in F$, soit $\pa{P_i}_{1 \leqslant i \leqslant 8}$ les voinsins de $P$ en 8-connexit�, on d�finit~: $$ @@ -987,7 +987,7 @@ \subsection{Extraction du squelette bas�e sur un crit�re de connexit�} \begin{eqnarray} \norme{Q_i - Q\pa{P}}^2 &\supegal& \rho \label{squelette_choi_condition_1}\\ - \text{et } \norme{Q_i}^2 - \norme{Q}^2 &\infegal& \max \acc{ X\pa{Q_i - Q}, \; Y\pa{Q_i - Q}} + \text{et } \norme{Q_i}^2 - \norme{Q}^2 &\leqslant& \max \acc{ X\pa{Q_i - Q}, \; Y\pa{Q_i - Q}} \end{eqnarray} \end{xalgostep} @@ -1079,7 +1079,7 @@ \subsection{Squelettisation � partir de filtre de Gabor} \label{squelette_su_gabor_2} \end{figure} -Ces quatre images sont ensuite binaris�es pour obtenir les quatre images $K_n\pa{x,y}_{1 \infegal n \infegal 4}$~: +Ces quatre images sont ensuite binaris�es pour obtenir les quatre images $K_n\pa{x,y}_{1 \leqslant n \leqslant 4}$~: \begin{eqnarray} @@ -1258,13 +1258,13 @@ \subsection{Nettoyage des barbules} Ce nettoyage peut s'appuyer sur des crit�res g�om�triques tel que celui propos� dans \citeindex{Jang1992} qui mesure le rapport entre la forme $F$ � squelettiser et l'aire form�e par l'ensemble $G$ des boules maximales incluses dans $F$ dont le centre appartient au squelette. Par d�finition, $G \subset F$, le crit�re de \citeindex{Jang1992} est �gal �~: \begin{eqnarray} - c_J = \frac{ aire\pa{G} } { aire \pa{F} } \infegal 1 + c_J = \frac{ aire\pa{G} } { aire \pa{F} } \leqslant 1 \end{eqnarray} Le squelette est rogn� � ses extr�mit�s tant que le crit�re $c_J$ est sup�rieur � un certain seuil. Un autre crit�re provient de \citeindex{Huang2003} qui compare les longueurs (en pixel) du squelette et du contour~: \begin{eqnarray} - c_H = \frac{ aire\pa{squelette} } { aire \pa{contour} } \infegal 1 + c_H = \frac{ aire\pa{squelette} } { aire \pa{contour} } \leqslant 1 \label{squelette_haung_critere} \end{eqnarray} @@ -1422,17 +1422,17 @@ \subsection{Vectorisation du squelette} satisfaisant l'in�galit�~: $$ - 0 \infegal ax + by + r < \omega + 0 \leqslant ax + by + r < \omega $$ De plus~: $$ \begin{tabular}{lcl} - si $1 \infegal w \infegal max\pa{\abs{a},\abs{b}}$ & alors & + si $1 \leqslant w \leqslant max\pa{\abs{a},\abs{b}}$ & alors & la droite n'est pas connexe et est dite d�connect�e. \\ si $\omega = max\pa{\abs{a},\abs{b}}$ & alors & la droite est 8-connexe. \\ - si $max\pa{\abs{a},\abs{b}} \infegal \omega \abs{a} + \abs{b}$ & alors & + si $max\pa{\abs{a},\abs{b}} \leqslant \omega \abs{a} + \abs{b}$ & alors & la droite est 8-connexe et 4-connexe par moment. \\ si $\omega = \abs{a} + \abs{b}$ & alors & la droite est 4-connexe. \\ si $\omega > \abs{a} + \abs{b}$ & alors & la droite est �paisse @@ -1748,18 +1748,18 @@ \subsection{Construction d'un graphe pour une classification} \indexfrr{matrice}{adjacence} \indexfrr{adjacence}{matrice} -L'auteur de l'article \citeindex{Ruberto2004} propose d'utiliser ce graphe "attribu�" afin de calculer une distance entre deux formes pour lesquels ce graphe $G$ aura �t� pr�alablement estim�. Ce graphe inclut un ensemble d'ar�tes d�crites par les caract�ristiques de la table~\ref{squelette_ruberto_carac} et $n$ n\oe uds qui sont les points singuliers du squelette. On d�finit $A = \pa{a_{ij}} _ { 1 \infegal i,j \infegal n } \in \cro{0,1} ^ {n^2}$ la matrice d'adjacence du graphe $G$, le graphe est donc enti�rement d�fini par $G = \acc{ A, \vecteur{v_{i,j,1}}{v_{i,j,6}} \sac 1 \infegal i,j \infegal n}$. La distance entre deux graphes~$G_1$ et~$G_2$ est d�finie par~: +L'auteur de l'article \citeindex{Ruberto2004} propose d'utiliser ce graphe "attribu�" afin de calculer une distance entre deux formes pour lesquels ce graphe $G$ aura �t� pr�alablement estim�. Ce graphe inclut un ensemble d'ar�tes d�crites par les caract�ristiques de la table~\ref{squelette_ruberto_carac} et $n$ n\oe uds qui sont les points singuliers du squelette. On d�finit $A = \pa{a_{ij}} _ { 1 \leqslant i,j \leqslant n } \in \cro{0,1} ^ {n^2}$ la matrice d'adjacence du graphe $G$, le graphe est donc enti�rement d�fini par $G = \acc{ A, \vecteur{v_{i,j,1}}{v_{i,j,6}} \sac 1 \leqslant i,j \leqslant n}$. La distance entre deux graphes~$G_1$ et~$G_2$ est d�finie par~: \begin{eqnarray} d\pa{G_1,G_2,\alpha} &=& \inf \acc{ E\pa{G_1,G_,M = \pa{m_{ik}}_ { - \begin{subarray} \, 1 \infegal i \infegal n_1 \\ - 1 \infegal k \infegal n_2 \end{subarray} } + \begin{subarray} \, 1 \leqslant i \leqslant n_1 \\ + 1 \leqslant k \leqslant n_2 \end{subarray} } ,\alpha} \left | \begin{array}{l} \forall i,k, \, m_{ik} \in \acc{0,1} \\ - \forall k, \, \sum_{i=1}^{n_1} m_{ik} \infegal 1 \\ - \forall i, \, \sum_{k=1}^{n_2} m_{ik} \infegal 1 + \forall k, \, \sum_{i=1}^{n_1} m_{ik} \leqslant 1 \\ + \forall i, \, \sum_{k=1}^{n_2} m_{ik} \leqslant 1 \end{array} \right. } \label{squelettisation_graphe_distance_matching} @@ -1844,7 +1844,7 @@ \subsection{Squelettisation � partir d'un treillis de Kohonen} \begin{eqnarray*} \summyone{t \supegal 0} \alpha_t = \infty \text { and } \summyone{t \supegal 0} - \alpha_t^2 \infegal \infty + \alpha_t^2 \leqslant \infty \end{eqnarray*} Par exemple~: @@ -1856,7 +1856,7 @@ \subsection{Squelettisation � partir d'un treillis de Kohonen} L'algorithme s'arr�te lorsque la condition suivante est v�rifi�e~: \begin{eqnarray*} - \forall i \in \ensemble{1}{n}, \; d\pa{W_i^{t+1}, W_i^{t} } \infegal \epsilon + \forall i \in \ensemble{1}{n}, \; d\pa{W_i^{t+1}, W_i^{t} } \leqslant \epsilon \end{eqnarray*} Il reste � g�rer la suppression de deux neurones trop proches, l'insertion d'un neurone entre deux autres trop �loign�s, l'insertion d'un neurone reliant trois voisins ou neurones "T". Ces op�rations sont effectu�es une fois que les �tapes pr�c�dentes ont abouti � une configuration ayant converg�. La suppression d'un neurone est effectu�e si la condition suivante est v�rifi�e~: diff --git a/_todo/svm/svm.tex b/_todo/svm/svm.tex index 8de061a9..c52e8df0 100644 --- a/_todo/svm/svm.tex +++ b/_todo/svm/svm.tex @@ -27,20 +27,20 @@ \subsection{Ensemble s�parable} \indexfrr{ensemble}{s�parable} -On s'int�resse tout d'abord � l'hyperplan s�parateur d'un ensemble de points r�partis en deux classes. Cet ensemble est not� $\pa{X_i,Y_i}_{1 \infegal i \infegal N}$ o�, $\forall i$, $X_i \in \mathbb{R}^d$ et $Y_i \in \acc{-1,1}$. Pour simplifier les expressions par la suite, les deux classes sont donc labell�es -1 et~1. On cherche alors un vecteur $w$ et une constante $b$ qui v�rifient~: +On s'int�resse tout d'abord � l'hyperplan s�parateur d'un ensemble de points r�partis en deux classes. Cet ensemble est not� $\pa{X_i,Y_i}_{1 \leqslant i \leqslant N}$ o�, $\forall i$, $X_i \in \mathbb{R}^d$ et $Y_i \in \acc{-1,1}$. Pour simplifier les expressions par la suite, les deux classes sont donc labell�es -1 et~1. On cherche alors un vecteur $w$ et une constante $b$ qui v�rifient~: $$ - \forall i, \; 1 \infegal i \infegal N, \; + \forall i, \; 1 \leqslant i \leqslant N, \; Y_i = \left\{ \begin{array}{rl} -1 & \text{ si } w.X_i + b \supegal 1 \\ - 1 & \text{ si } w.X_i + b \infegal -1 + 1 & \text{ si } w.X_i + b \leqslant -1 \end{array} \right. $$ On cherche donc $w$ et $b$ tels que~: $$ - \forall i, \; 1 \infegal i \infegal N, \; + \forall i, \; 1 \leqslant i \leqslant N, \; Y_i \pa{ w.X_i + b} - 1 \supegal 0 $$ @@ -50,7 +50,7 @@ \subsection{Ensemble s�parable} \begin{xproblem}{meilleur hyperplan s�parateur, cas s�parable}\label{svm_problem_def} \indexfr{s�parable}\indexfrr{hyperplan}{s�parateur} Le meilleur hyperplan s�parateur de l'ensemble de points labell�s - $\pa{X_i,Y_i}_{1 \infegal i \infegal N} \in \pa{ \mathbb{R}^d \times \acc{-1,1} }^N$ est la solution + $\pa{X_i,Y_i}_{1 \leqslant i \leqslant N} \in \pa{ \mathbb{R}^d \times \acc{-1,1} }^N$ est la solution d'un probl�me de minimisation. Cet hyperplan a pour �quation $x.w^* + b^* = 0$ o� $w^*$ et $b^*$ v�rifient~: $$ @@ -94,7 +94,7 @@ \subsection{Ensemble s�parable} \subsection{Ensemble non s�parable} \indexfrr{ensemble}{non s�parable} -Le paragraphe pr�c�dent supposait que l'ensemble $\pa{X_i,Y_i}_{1 \infegal i \infegal N} \in \pa{ \mathbb{R}^d \times \acc{-1,1} }^N$ �tait s�parable ce qui, d'apr�s le paragraphe~\ref{svm_dimension_vc_lin} implique dans la plupart des cas que $N \infegal d+1$. Pour un ensemble non s�parable (voir figure~\ref{svm_non_separable_fig}), il est impossible de trouver un hyperplan s�parateur. Par cons�quent, il n'existe pas de solution au probl�me~\ref{svm_problem_def} v�rifiant les contraintes telles qu'elles ont �t� exprim�es. La recherche du meilleur hyperplan s�parateur devient alors l'�nonc�~\ref{svm_problem_def_2}. +Le paragraphe pr�c�dent supposait que l'ensemble $\pa{X_i,Y_i}_{1 \leqslant i \leqslant N} \in \pa{ \mathbb{R}^d \times \acc{-1,1} }^N$ �tait s�parable ce qui, d'apr�s le paragraphe~\ref{svm_dimension_vc_lin} implique dans la plupart des cas que $N \leqslant d+1$. Pour un ensemble non s�parable (voir figure~\ref{svm_non_separable_fig}), il est impossible de trouver un hyperplan s�parateur. Par cons�quent, il n'existe pas de solution au probl�me~\ref{svm_problem_def} v�rifiant les contraintes telles qu'elles ont �t� exprim�es. La recherche du meilleur hyperplan s�parateur devient alors l'�nonc�~\ref{svm_problem_def_2}. \begin{figure}[ht] @@ -110,7 +110,7 @@ \subsection{Ensemble non s�parable} \indexfr{non s�parable} Soit $C \in \mathbb{R}^*_+$ une constante et $k \in \N^*$ un entier, le meilleur hyperplan s�parateur de l'ensemble de points labell�s - $\pa{X_i,Y_i}_{1 \infegal i \infegal N} \in \pa{ \mathbb{R}^d \times \acc{-1,1} }^N$ est la solution + $\pa{X_i,Y_i}_{1 \leqslant i \leqslant N} \in \pa{ \mathbb{R}^d \times \acc{-1,1} }^N$ est la solution d'un probl�me de minimisation. Cet hyperplan a pour �quation $x.w^* + b^* = 0$ o� $w^*$ et $b^*$ v�rifient~: $$ @@ -129,7 +129,7 @@ \subsection{Ensemble non s�parable} \label{svm_problem_def_2p}\indexfr{non s�parable}\indexfrr{probl�me}{dual} Soit $C \in \mathbb{R}^*_+$ une constante, le meilleur hyperplan s�parateur de l'ensemble de points labell�s - $\pa{X_i,Y_i}_{1 \infegal i \infegal N} \in \pa{ \mathbb{R}^d \times \acc{-1,1} }^N$ est la solution + $\pa{X_i,Y_i}_{1 \leqslant i \leqslant N} \in \pa{ \mathbb{R}^d \times \acc{-1,1} }^N$ est la solution d'un probl�me de minimisation. $$ \begin{array}{rcl} \pa{\alpha_i^*} &=& \underset{\alpha_i}{\arg \min} \dfrac{1}{2} @@ -138,7 +138,7 @@ \subsection{Ensemble non s�parable} Y_i Y_j \, X_i . X_j - \summy{i=1}{N} \alpha_i \\ - \text{avec } && \forall i, \; 1 \infegal \alpha_i \infegal C \\ + \text{avec } && \forall i, \; 1 \leqslant \alpha_i \leqslant C \\ \text{et } && \summy{i=1}{N} Y_i \, \alpha_i = 0 \end{array} $$ @@ -162,19 +162,19 @@ \subsection{D�finition} -Dans le probl�me de classification introduit au chapitre~\ref{svm_separateur_lineaire}, la dimension de Vapnik-Chervonenkis sert � majorer le risque d'erreur de classification empirique au risque d'erreur th�orique. Nous allons tout d'abord d�finir la dimension de Vapnik-Chervonenkis pour un ensemble de points donn� et not� $\pa{X_i}_{1 \infegal i \infegal N}$ et une classe de fonction $f\pa{x,\alpha}$ param�tr�e par $\alpha$. +Dans le probl�me de classification introduit au chapitre~\ref{svm_separateur_lineaire}, la dimension de Vapnik-Chervonenkis sert � majorer le risque d'erreur de classification empirique au risque d'erreur th�orique. Nous allons tout d'abord d�finir la dimension de Vapnik-Chervonenkis pour un ensemble de points donn� et not� $\pa{X_i}_{1 \leqslant i \leqslant N}$ et une classe de fonction $f\pa{x,\alpha}$ param�tr�e par $\alpha$. \begin{xdefinition}{dimension de Vapnik-Chervonenkis} - Soit $\pa{X_i}_{1 \infegal i \infegal N}$ un ensemble de points appartenant � $\mathbb{R}^d$. On d�finit une + Soit $\pa{X_i}_{1 \leqslant i \leqslant N}$ un ensemble de points appartenant � $\mathbb{R}^d$. On d�finit une fonction $f\pa{x,\alpha} : \mathbb{R}^d \times \Omega \longmapsto \mathbb{R}$ o� $x \in \mathbb{R}^d$ et $\alpha \in \Omega$. $\Omega$ est appel� l'ensemble des param�tres. On d�finit la dimension de Vapnik-Chervonenkis comme �tant le nombre de suites - $\pa{Y_i}_{1 \infegal i \infegal N} \in \acc{-1,1}^N$ v�rifiant~: + $\pa{Y_i}_{1 \leqslant i \leqslant N} \in \acc{-1,1}^N$ v�rifiant~: $$ - \exists \alpha \in \Omega, \text{ tel que } \forall i, \; 1 \infegal i \infegal N, \; + \exists \alpha \in \Omega, \text{ tel que } \forall i, \; 1 \leqslant i \leqslant N, \; sgn\pa{ f\pa{X_i,\alpha} } = Y_i $$ La fonction $sgn\pa{x}$ d�signe le signe de $x$~: $sgn\pa{x} = \left\{ \begin{array}{rl} @@ -212,7 +212,7 @@ \subsection{R�sultats} \subsection{Exemple} -On d�finit la suite de points $\pa{X_i}_{1 \infegal i \infegal N}$ par $\forall i, \, 1 \infegal i \infegal N, \; X_i = 10^{-i}$ et l'ensemble de fonctions~: +On d�finit la suite de points $\pa{X_i}_{1 \leqslant i \leqslant N}$ par $\forall i, \, 1 \leqslant i \leqslant N, \; X_i = 10^{-i}$ et l'ensemble de fonctions~: $$ \acc{\alpha \in \mathbb{R}, \; f\pa{x,\alpha} = \left\{ @@ -223,7 +223,7 @@ \subsection{Exemple} $$ -Quelque soit la suite $\pa{Y_i}_{1 \infegal i \infegal N} \in \acc{-1,1}^N$, il est possible de choisir~: +Quelque soit la suite $\pa{Y_i}_{1 \leqslant i \leqslant N} \in \acc{-1,1}^N$, il est possible de choisir~: $$ \alpha = \pi \pa{ 1 + \summy{i=1}{N} \frac{ \pa{ 1 - Y_i} 10^i}{ 2 } } @@ -244,7 +244,7 @@ \subsection{Risque} \end{eqnarray} \indexfrr{risque}{empirique} -Et le risque empirique pour le nuage de points $\pa{X_i,Y_i}_{1 \infegal i \infegal N}$ par~: +Et le risque empirique pour le nuage de points $\pa{X_i,Y_i}_{1 \leqslant i \leqslant N}$ par~: \begin{eqnarray} R_{emp}\pa{\alpha} = \frac{1}{2N} \; \summy{i=1}{N} \abs{ Y_i - f\pa{X_i,\alpha}} @@ -254,11 +254,11 @@ \subsection{Risque} \begin{xtheorem}{majoration du risque empirique} En reprenant les notations utilis�es dans les expressions (\ref{svm_risque_theorique}) et (\ref{svm_risque_empirique}). Pour - un nuage de points $\pa{X_i,Y_i}_{1 \infegal i \infegal N} \in \pa{\mathbb{R}^d \times \acc{-1,1} }^N$, + un nuage de points $\pa{X_i,Y_i}_{1 \leqslant i \leqslant N} \in \pa{\mathbb{R}^d \times \acc{-1,1} }^N$, on d�montre (voir \citeindex{Vapnik1995}) que $\forall \eta \in \cro{0,1}$~: $$ \pr{ - R\pa{\alpha} \infegal R_{emp}\pa{\alpha} + + R\pa{\alpha} \leqslant R_{emp}\pa{\alpha} + \sqrt{\frac {h \pa{ 1+ \ln \frac{2N}{h} } - \ln \frac{\eta}{4} } {N} } @@ -288,7 +288,7 @@ \subsection{Principe} \indexfrr{probl�me}{dual} Soit $C \in \mathbb{R}^*_+$ une constante, soit $K : \mathbb{R}^d \times \mathbb{R}^d \longmapsto \mathbb{R}^+$ une fonction noyau, le meilleur hyperplan s�parateur de l'ensemble de points labell�s - $\pa{X_i,Y_i}_{1 \infegal i \infegal N} \in \pa{ \mathbb{R}^d \times \acc{-1,1} }^N$ est la solution + $\pa{X_i,Y_i}_{1 \leqslant i \leqslant N} \in \pa{ \mathbb{R}^d \times \acc{-1,1} }^N$ est la solution d'un probl�me de minimisation~: $$ \begin{array}{rcl} \pa{\alpha_i^*} &=& \underset{\alpha_i}{\arg \min} \dfrac{1}{2} @@ -297,7 +297,7 @@ \subsection{Principe} Y_i Y_j \, K\pa{X_i,X_j} - \summy{i=1}{N} \alpha_i \\ - \text{avec } && \forall i, \; 1 \infegal \alpha_i \infegal C \\ + \text{avec } && \forall i, \; 1 \leqslant \alpha_i \leqslant C \\ \text{et } && \summy{i=1}{N} Y_i \, \alpha_i = 0 \end{array} $$ @@ -350,7 +350,7 @@ \subsection{Autre formulation} \indexfr{non s�parable} Soit $C \in \mathbb{R}^*_+$ une constante, soit $K : \mathbb{R}^d \times \mathbb{R}^d \longmapsto \mathbb{R}^+$ une fonction noyau, le meilleur hyperplan s�parateur de l'ensemble de points labell�s - $\pa{X_i,Y_i}_{1 \infegal i \infegal N} \in \pa{ \mathbb{R}^d \times \acc{-1,1} }^N$ est la solution + $\pa{X_i,Y_i}_{1 \leqslant i \leqslant N} \in \pa{ \mathbb{R}^d \times \acc{-1,1} }^N$ est la solution d'un probl�me de minimisation~: $$ \begin{array}{rcl} \pa{\alpha_i^*, \xi_i^*} &=& \underset{\alpha_i}{\arg \min} \dfrac{1}{2} diff --git a/mlstatpy/__init__.py b/mlstatpy/__init__.py index 83e6236e..5a7c90a9 100644 --- a/mlstatpy/__init__.py +++ b/mlstatpy/__init__.py @@ -1,17 +1,5 @@ -__version__ = "0.4.0" +__version__ = "0.5.0" __author__ = "Xavier Dupré" __github__ = "https://github.com/sdpython/mlstatpy" __url__ = "https://sdpython.github.io/doc/mlstatpy/dev/" __license__ = "MIT License" - - -def check(log=False): - """ - Checks the library is working. - It raises an exception. - If you want to disable the logs: - - :param log: if True, display information, otherwise - :return: 0 or exception - """ - return True diff --git a/mlstatpy/image/detection_segment/queue_binom.py b/mlstatpy/image/detection_segment/queue_binom.py index faa4c31f..df0cc4aa 100644 --- a/mlstatpy/image/detection_segment/queue_binom.py +++ b/mlstatpy/image/detection_segment/queue_binom.py @@ -12,7 +12,7 @@ def tabule_queue_binom(n, p): et :math:`t[(m,k)] = p * t [ (m-1, k-1)] + (1-p) * t [ (m-1,k) ]` Cette fonction calcule tous les coefficients :math:`t [ (a,b) ]` pour une - probabilité :math:`p` donnée et :math:`b \\infegal a \\infegal n`. + probabilité :math:`p` donnée et :math:`b \\leqslant a \\leqslant n`. Ces probabilités sont stockées dans un dictionnaire car s'ils étaient stockées dans une matrice, celle-ci serait triangulaire inférieure. diff --git a/mlstatpy/nlp/completion.py b/mlstatpy/nlp/completion.py index 83e7f558..298d2658 100644 --- a/mlstatpy/nlp/completion.py +++ b/mlstatpy/nlp/completion.py @@ -298,7 +298,7 @@ def min_keystroke(self, word: str) -> Tuple[int, int]: \\begin{eqnarray*} K(q, k, S) &=& \\min\\acc{ i | s_i \\succ q[1..k], s_i \\in S } \\\\ - M(q, S) &=& \\min_{0 \\infegal k \\infegal l(q)} k + K(q, k, S) + M(q, S) &=& \\min_{0 \\leqslant k \\leqslant l(q)} k + K(q, k, S) \\end{eqnarray*} """ nodes = [self] @@ -342,7 +342,7 @@ def min_keystroke0(self, word: str) -> Tuple[int, int]: \\begin{eqnarray*} K(q, k, S) &=& \\min\\acc{ i | s_i \\succ q[1..k], s_i \\in S } \\\\ - M(q, S) &=& \\min_{0 \\infegal k \\infegal l(q)} k + K(q, k, S) + M(q, S) &=& \\min_{0 \\leqslant k \\leqslant l(q)} k + K(q, k, S) \\end{eqnarray*} """ node = self.find(word) @@ -377,7 +377,7 @@ def min_dynamic_keystroke(self, word: str) -> Tuple[int, int]: \\begin{eqnarray*} K(q, k, S) &=& \\min\\acc{ i | s_i \\succ q[1..k], s_i \\in S } \\\\ - M'(q, S) &=& \\min_{0 \\infegal k \\infegal l(q)} + M'(q, S) &=& \\min_{0 \\leqslant k \\leqslant l(q)} \\acc{ M'(q[1..k], S) + K(q, k, S) | q[1..k] \\in S } \\end{eqnarray*} """ @@ -414,10 +414,10 @@ def min_dynamic_keystroke2(self, word: str) -> Tuple[int, int]: \\begin{eqnarray*} K(q, k, S) &=& \\min\\acc{ i | s_i \\succ q[1..k], s_i \\in S } \\\\ M"(q, S) &=& \\min \\left\\{ \\begin{array}{l} - \\min_{1 \\infegal k \\infegal l(q)} + \\min_{1 \\leqslant k \\leqslant l(q)} \\acc{ M"(q[1..k-1], S) + 1 + K(q, k, S) | q[1..k] \\in S } \\\\ - \\min_{0 \\infegal k \\infegal l(q)} + \\min_{0 \\leqslant k \\leqslant l(q)} \\acc{ M"(q[1..k], S) + \\delta + K(q, k, S) | q[1..k] \\in S } \\end{array} \\right . From 2654a256448646eb678ebac1a8879b22698c6264 Mon Sep 17 00:00:00 2001 From: xadupre Date: Tue, 4 Mar 2025 22:29:24 +0100 Subject: [PATCH 02/11] index --- _doc/index.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/_doc/index.rst b/_doc/index.rst index 52b94585..bed1d84e 100644 --- a/_doc/index.rst +++ b/_doc/index.rst @@ -71,3 +71,8 @@ Xavier Dupré .. image:: http://img.shields.io/github/issues/sdpython/mlstatpy.png :alt: GitHub Issues :target: https://github.com/sdpython/mlstatpy/issues + +Older versions +++++++++++++++ + +* `0.4.0 <../v0.4.0/index.html>`_ From 685d25ad9cff838faef9d673072016878b0f320b Mon Sep 17 00:00:00 2001 From: xadupre Date: Wed, 5 Mar 2025 11:29:17 +0100 Subject: [PATCH 03/11] fix --- _doc/conf.py | 18 ++++++++++++++++-- _doc/sg_execution_times.rst | 4 ++-- mlstatpy/ext_test_case.py | 6 +++--- mlstatpy/graph/graph_distance.py | 4 ++-- .../image/detection_segment/detection_nfa.py | 2 +- .../detection_segment_segangle.py | 2 +- mlstatpy/nlp/completion.py | 10 +++++++++- mlstatpy/nlp/completion_simple.py | 2 +- pyproject.toml | 1 + 9 files changed, 36 insertions(+), 13 deletions(-) diff --git a/_doc/conf.py b/_doc/conf.py index 7f540f3e..1123958d 100644 --- a/_doc/conf.py +++ b/_doc/conf.py @@ -19,10 +19,12 @@ "sphinx_gallery.gen_gallery", "sphinx_issues", "sphinx_runpython.blocdefs.sphinx_exref_extension", + "sphinx_runpython.blocdefs.sphinx_faqref_extension", "sphinx_runpython.blocdefs.sphinx_mathdef_extension", "sphinx_runpython.epkg", "sphinx_runpython.gdot", "sphinx_runpython.runpython", + "sphinxcontrib.blockdiag", "matplotlib.sphinxext.plot_directive", ] @@ -40,7 +42,7 @@ source_suffix = ".rst" master_doc = "index" project = "mlstatpy" -copyright = "2016-2024, Xavier Dupré" +copyright = "2016-2025, Xavier Dupré" author = "Xavier Dupré" version = __version__ release = __version__ @@ -50,7 +52,7 @@ todo_include_todos = True nbsphinx_execute = "never" -html_theme = "pydata_sphinx_theme" +html_theme = "furo" html_theme_path = ["_static"] html_theme_options = {} html_sourcelink_suffix = "" @@ -58,6 +60,18 @@ issues_github_path = "sdpython/mlstatpy" +nbsphinx_prolog = """ + +.. _nbl-{{ env.doc2path(env.docname, base=None).replace("/", "-").split(".")[0] }}: + +""" + +nbsphinx_epilog = """ +---- + +`Notebook on github `_ +""" + # The following is used by sphinx.ext.linkcode to provide links to github linkcode_resolve = make_linkcode_resolve( "mlstatpy", diff --git a/_doc/sg_execution_times.rst b/_doc/sg_execution_times.rst index 029d89fe..328f03c4 100644 --- a/_doc/sg_execution_times.rst +++ b/_doc/sg_execution_times.rst @@ -6,7 +6,7 @@ Computation times ================= -**00:00.945** total execution time for 1 file **from all galleries**: +**00:01.457** total execution time for 1 file **from all galleries**: .. container:: @@ -33,5 +33,5 @@ Computation times - Time - Mem (MB) * - :ref:`sphx_glr_auto_examples_plot_logistic_decision.py` (``examples/plot_logistic_decision.py``) - - 00:00.945 + - 00:01.457 - 0.0 diff --git a/mlstatpy/ext_test_case.py b/mlstatpy/ext_test_case.py index 380ed4be..bde7403f 100644 --- a/mlstatpy/ext_test_case.py +++ b/mlstatpy/ext_test_case.py @@ -139,7 +139,7 @@ def _local_loop(ur): raise e if chunk is None: - if len(res) >= 2 and res[:2] == b"\x1f\x8B": + if len(res) >= 2 and res[:2] == b"\x1f\x8b": # gzip format res = gzip.decompress(res) @@ -753,7 +753,7 @@ def ungzip_files( is_file = True if encoding is None: - f = gzip.open(filename, "rb") + f = gzip.open(filename, "rb") # noqa: SIM115 content = f.read() f.close() if unzip: @@ -769,7 +769,7 @@ def ungzip_files( return filename return content else: - f = gzip.open(filename, "rt", encoding="utf-8") + f = gzip.open(filename, "rt", encoding="utf-8") # noqa: SIM115 content = f.read() f.close() if is_file: diff --git a/mlstatpy/graph/graph_distance.py b/mlstatpy/graph/graph_distance.py index e8d5e8a0..25e4af41 100644 --- a/mlstatpy/graph/graph_distance.py +++ b/mlstatpy/graph/graph_distance.py @@ -3,7 +3,7 @@ class _Vertex: - __slots__ = ("nb", "label", "weight") + __slots__ = ("nb", "label", "weight") # noqa: RUF023 def __init__(self, nb, label, weight): self.nb = nb # kind of id @@ -62,7 +62,7 @@ def Label(self): class _Edge: - __slots__ = ("from_", "to", "label", "weight", "nb") + __slots__ = ("from_", "to", "label", "weight", "nb") # noqa: RUF023 def __init__(self, from_, to, label, weight): self.from_, self.to = from_, to diff --git a/mlstatpy/image/detection_segment/detection_nfa.py b/mlstatpy/image/detection_segment/detection_nfa.py index 9a1410c0..88590b50 100644 --- a/mlstatpy/image/detection_segment/detection_nfa.py +++ b/mlstatpy/image/detection_segment/detection_nfa.py @@ -34,7 +34,7 @@ class InformationPoint: proche du vecteur normal au segment (aligne)""" # voir la classe Point pour __slots__ - __slots__ = "pos", "aligne", "norme" + __slots__ = ("pos", "aligne", "norme") # noqa: RUF023 def __init__(self, pos, aligne, norme): """constructeur, initialisation""" diff --git a/mlstatpy/image/detection_segment/detection_segment_segangle.py b/mlstatpy/image/detection_segment/detection_segment_segangle.py index b488dcf1..812e4da7 100644 --- a/mlstatpy/image/detection_segment/detection_segment_segangle.py +++ b/mlstatpy/image/detection_segment/detection_segment_segangle.py @@ -28,7 +28,7 @@ class SegmentBord(SegmentBord_Commun): """ # voir la remarque de la classe Point a propos de __slots__ - __slots__ = "angle", "fin", "vecteur", "bord1", "dangle" + __slots__ = ("angle", "fin", "vecteur", "bord1", "dangle") # noqa: RUF023 def __init__(self, dim, dangle=math.pi / 24.0): """initialise les dimensions et diff --git a/mlstatpy/nlp/completion.py b/mlstatpy/nlp/completion.py index 298d2658..768cdbb6 100644 --- a/mlstatpy/nlp/completion.py +++ b/mlstatpy/nlp/completion.py @@ -10,7 +10,15 @@ class CompletionTrieNode: It should be done another way (:epkg:`cython`, :epkg:`C++`). """ - __slots__ = ("value", "children", "weight", "leave", "stat", "parent", "disp") + __slots__ = ( # noqa: RUF023 + "value", + "children", + "weight", + "leave", + "stat", + "parent", + "disp", + ) def __init__(self, value, leave, weight=1.0, disp=None): """ diff --git a/mlstatpy/nlp/completion_simple.py b/mlstatpy/nlp/completion_simple.py index 5477de60..d5d72f7f 100644 --- a/mlstatpy/nlp/completion_simple.py +++ b/mlstatpy/nlp/completion_simple.py @@ -26,7 +26,7 @@ class CompletionElement: :param disp: original string, use this to identify the node """ - __slots__ = ( + __slots__ = ( # noqa: RUF023 "value", "weight", "disp", diff --git a/pyproject.toml b/pyproject.toml index 22ea65e6..fa4debec 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -86,6 +86,7 @@ select = [ ] "_unittests/**" = ["SIM113", "RUF005", "E402"] "**/plot*.py" = ["B018"] +"_doc/conf.py" = ["E501"] "_doc/sphinxdoc/source/conf.py" = ["F821"] "_doc/notebooks/dsgarden/**" = ["B007", "E402"] "_doc/notebooks/metric/**" = ["C400", "RUF005", "B007", "C417"] From 51003192a9db3d21b1781bc576af4885fda730eb Mon Sep 17 00:00:00 2001 From: xadupre Date: Wed, 5 Mar 2025 11:29:29 +0100 Subject: [PATCH 04/11] remove --- _doc/sg_execution_times.rst | 37 ------------------------------------- 1 file changed, 37 deletions(-) delete mode 100644 _doc/sg_execution_times.rst diff --git a/_doc/sg_execution_times.rst b/_doc/sg_execution_times.rst deleted file mode 100644 index 328f03c4..00000000 --- a/_doc/sg_execution_times.rst +++ /dev/null @@ -1,37 +0,0 @@ - -:orphan: - -.. _sphx_glr_sg_execution_times: - - -Computation times -================= -**00:01.457** total execution time for 1 file **from all galleries**: - -.. container:: - - .. raw:: html - - - - - - - - .. list-table:: - :header-rows: 1 - :class: table table-striped sg-datatable - - * - Example - - Time - - Mem (MB) - * - :ref:`sphx_glr_auto_examples_plot_logistic_decision.py` (``examples/plot_logistic_decision.py``) - - 00:01.457 - - 0.0 From 66891db27aa1c2137782eb7f0ccfcf529dfb1821 Mon Sep 17 00:00:00 2001 From: xadupre Date: Wed, 5 Mar 2025 22:52:14 +0100 Subject: [PATCH 05/11] fix yml --- .github/workflows/documentation.yml | 2 +- .gitignore | 1 + _doc/c_ml/survival_analysis.rst | 3 --- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 2f0f34fb..b7fee23e 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -35,7 +35,7 @@ jobs: run: python -m pip install -r requirements-dev.txt - name: Cache pip - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('requirements-dev.txt') }} diff --git a/.gitignore b/.gitignore index 64bf9595..9011cb17 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ prof temp_* .ipynb_checkpoints _doc/CHANGELOGS.rst +_doc/sg_execution_times.rst _doc/LICENSE.txt _doc/auto_examples/* _doc/examples/_cache/* diff --git a/_doc/c_ml/survival_analysis.rst b/_doc/c_ml/survival_analysis.rst index 1e6f2546..e85f9ab2 100644 --- a/_doc/c_ml/survival_analysis.rst +++ b/_doc/c_ml/survival_analysis.rst @@ -15,9 +15,6 @@ C'est domaine développé pour mesurer les effets d'une substance, d'un médicament sur un corps vivant, une personne. -.. contents:: - :local: - Lien avec le machine learning ============================= From f11b4c874d16a677ea9bbe53768babf093ca0735 Mon Sep 17 00:00:00 2001 From: xadupre Date: Wed, 5 Mar 2025 22:53:07 +0100 Subject: [PATCH 06/11] misspelling --- _doc/c_ml/survival_analysis.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_doc/c_ml/survival_analysis.rst b/_doc/c_ml/survival_analysis.rst index e85f9ab2..9e5907cc 100644 --- a/_doc/c_ml/survival_analysis.rst +++ b/_doc/c_ml/survival_analysis.rst @@ -59,9 +59,9 @@ Par simplification, on note :math:`n_i = n_{t_i}`. On suppose les :math:`t_i` des dates à intervalles plutôt réguliers et croissants. La suite :math:`(n_i)` est décroissantes (on ne rescuscite pas). Ces calculs rappellent les calculs liés à l'espérance de vie -(voir `Evoluation d’une population - énoncé +(voir `Evolution d’une population - énoncé `_, -`Evoluation d'une population (correction) +`Evolution d'une population (correction) `_). L'espérance de vie est définie par : From a999e560a2de932deffe976d0b4e0b821d459cc6 Mon Sep 17 00:00:00 2001 From: xadupre Date: Wed, 5 Mar 2025 23:00:41 +0100 Subject: [PATCH 07/11] fix issues --- .github/workflows/documentation.yml | 2 +- .github/workflows/wheels-any.yml | 2 +- CHANGELOGS.rst | 3 +-- _doc/api/data.rst | 4 ---- _doc/api/graph.rst | 4 ---- _doc/api/image.rst | 4 ---- _doc/api/ml.rst | 4 ---- _doc/api/optim.rst | 4 ---- _doc/api/text.rst | 4 ---- _doc/c_algo/gest.rst | 3 --- _doc/c_algo/graph_distance.rst | 3 --- _doc/c_clus/gauss_mixture.rst | 3 --- _doc/c_clus/kmeans.rst | 3 --- _doc/c_clus/kohonen.rst | 3 --- _doc/c_garden/file_dattente.rst | 3 --- _doc/c_garden/quantization.rst | 3 --- _doc/c_garden/strategie_avec_alea.rst | 3 --- _doc/c_metric/pvalues.rst | 3 --- _doc/c_metric/roc.rst | 3 --- _doc/c_ml/l1l2.rst | 3 --- _doc/c_ml/lr_trees.rst | 3 --- _doc/c_ml/lr_voronoi.rst | 3 --- _doc/c_ml/missing_values_mf.rst | 3 --- _doc/c_ml/piecewise.rst | 3 --- _doc/c_ml/regression_quantile.rst | 3 --- _doc/c_ml/rn/rn_4_densite.rst | 3 --- _doc/c_ml/rn/rn_5_newton.rst | 3 --- _doc/c_ml/rn/rn_6_apprentissage.rst | 3 --- _doc/c_ml/rn/rn_7_clas2.rst | 3 --- _doc/c_ml/rn/rn_8_prol.rst | 3 --- _doc/c_ml/rn/rn_9_auto.rst | 3 --- _doc/c_nlp/completion_digression.rst | 3 --- _doc/c_nlp/completion_fausse.rst | 3 --- _doc/c_nlp/completion_formalisation.rst | 3 --- _doc/c_nlp/completion_implementation.rst | 3 --- _doc/c_nlp/completion_metrique.rst | 3 --- _doc/c_nlp/completion_optimisation.rst | 3 --- _doc/c_nlp/completion_propriete.rst | 3 --- _doc/defthe_index.rst | 3 --- _doc/examples/plot_logistic_decision.py | 3 --- _doc/i_ex.rst | 3 --- _doc/index.rst | 3 +++ 42 files changed, 6 insertions(+), 124 deletions(-) diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index b7fee23e..20791617 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -86,6 +86,6 @@ jobs: exit 1 fi - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: path: ./dist/html/** diff --git a/.github/workflows/wheels-any.yml b/.github/workflows/wheels-any.yml index 1c00dece..7088b13d 100644 --- a/.github/workflows/wheels-any.yml +++ b/.github/workflows/wheels-any.yml @@ -24,6 +24,6 @@ jobs: - name: build wheel run: python -m pip wheel . - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: path: ./mlstatpy*.whl diff --git a/CHANGELOGS.rst b/CHANGELOGS.rst index 50f1e9c5..fd5dee6e 100644 --- a/CHANGELOGS.rst +++ b/CHANGELOGS.rst @@ -5,7 +5,7 @@ Change Logs +++++ 0.4.0 -===== ++++++ * :pr:`42`: quantization * :pr:`39`: refactoring, use black, better documentation @@ -28,4 +28,3 @@ Change Logs * :pr:`9`: fix unittest on wikipedia_dump after a change on wikipedia website (2018-04-01) * :pr:`4`: implémentation la complétion en C++ (2016-09-25) * :pr:`1`: ajouter les petits exposés finance... (2016-06-29) - diff --git a/_doc/api/data.rst b/_doc/api/data.rst index 64c31e93..cc771fa3 100644 --- a/_doc/api/data.rst +++ b/_doc/api/data.rst @@ -2,10 +2,6 @@ Source de données ================= -.. contents:: - :local: - :depth: 2 - Wikipédia +++++++++ diff --git a/_doc/api/graph.rst b/_doc/api/graph.rst index cf6c6666..517a3324 100644 --- a/_doc/api/graph.rst +++ b/_doc/api/graph.rst @@ -2,10 +2,6 @@ Graphes ======= -.. contents:: - :local: - :depth: 2 - Distance ++++++++ diff --git a/_doc/api/image.rst b/_doc/api/image.rst index 3891c59b..214df9af 100644 --- a/_doc/api/image.rst +++ b/_doc/api/image.rst @@ -2,10 +2,6 @@ Image ===== -.. contents:: - :local: - :depth: 2 - Conversion ++++++++++ diff --git a/_doc/api/ml.rst b/_doc/api/ml.rst index 33c99211..5413544a 100644 --- a/_doc/api/ml.rst +++ b/_doc/api/ml.rst @@ -2,10 +2,6 @@ Machine Learning ================ -.. contents:: - :local: - :depth: 2 - Matrices ++++++++ diff --git a/_doc/api/optim.rst b/_doc/api/optim.rst index 14e39515..5ccb55ba 100644 --- a/_doc/api/optim.rst +++ b/_doc/api/optim.rst @@ -2,10 +2,6 @@ Optimisation ================ -.. contents:: - :local: - :depth: 2 - Gradient ++++++++ diff --git a/_doc/api/text.rst b/_doc/api/text.rst index d3a6738a..8f2952aa 100644 --- a/_doc/api/text.rst +++ b/_doc/api/text.rst @@ -1,10 +1,6 @@ Traitement du langage naturel ============================= -.. contents:: - :local: - :depth: 2 - Complétion ++++++++++ diff --git a/_doc/c_algo/gest.rst b/_doc/c_algo/gest.rst index 72dd3f3f..b4d35c89 100644 --- a/_doc/c_algo/gest.rst +++ b/_doc/c_algo/gest.rst @@ -5,9 +5,6 @@ Détection de segments ===================== -.. contents:: - :local: - L'idée ====== diff --git a/_doc/c_algo/graph_distance.rst b/_doc/c_algo/graph_distance.rst index 6ba89c96..b07dacd5 100644 --- a/_doc/c_algo/graph_distance.rst +++ b/_doc/c_algo/graph_distance.rst @@ -13,9 +13,6 @@ One of the solution is the a better solution is described in [Blondel2004]_. You can also read `Graph similarity `_. -.. contents:: - :local: - Definitions =========== diff --git a/_doc/c_clus/gauss_mixture.rst b/_doc/c_clus/gauss_mixture.rst index c59ea468..c96dcd84 100644 --- a/_doc/c_clus/gauss_mixture.rst +++ b/_doc/c_clus/gauss_mixture.rst @@ -5,9 +5,6 @@ Mélange de lois normales ======================== -.. contents:: - :local: - Algorithme EM ============= diff --git a/_doc/c_clus/kmeans.rst b/_doc/c_clus/kmeans.rst index c6a4ebcf..fe1b4b9a 100644 --- a/_doc/c_clus/kmeans.rst +++ b/_doc/c_clus/kmeans.rst @@ -5,9 +5,6 @@ k-means ======= -.. contents:: - :local: - *Dénomination française : algorithme des centres mobiles.* .. index:: centres mobiles, k-means, variance intra-classe, inertie diff --git a/_doc/c_clus/kohonen.rst b/_doc/c_clus/kohonen.rst index 6fdbdff8..909562e8 100644 --- a/_doc/c_clus/kohonen.rst +++ b/_doc/c_clus/kohonen.rst @@ -5,9 +5,6 @@ Carte de Kohonen ================ -.. contents:: - :local: - Principe ======== diff --git a/_doc/c_garden/file_dattente.rst b/_doc/c_garden/file_dattente.rst index a48747da..832b43bb 100644 --- a/_doc/c_garden/file_dattente.rst +++ b/_doc/c_garden/file_dattente.rst @@ -5,9 +5,6 @@ File d'attente, un petit exemple *Psychokinèse, les ampoules grillent à distance* -.. contents:: - :local: - Petite histoire =============== diff --git a/_doc/c_garden/quantization.rst b/_doc/c_garden/quantization.rst index 2745f2ba..89893bbf 100644 --- a/_doc/c_garden/quantization.rst +++ b/_doc/c_garden/quantization.rst @@ -5,9 +5,6 @@ Quantization ============ -.. contents:: - :local: - Un problème simple ================== diff --git a/_doc/c_garden/strategie_avec_alea.rst b/_doc/c_garden/strategie_avec_alea.rst index 817522ba..4b48687b 100644 --- a/_doc/c_garden/strategie_avec_alea.rst +++ b/_doc/c_garden/strategie_avec_alea.rst @@ -5,9 +5,6 @@ Optimisation avec données aléatoires ==================================== -.. contents:: - :local: - Un problème simple ================== diff --git a/_doc/c_metric/pvalues.rst b/_doc/c_metric/pvalues.rst index 3c408901..6ac99c9f 100644 --- a/_doc/c_metric/pvalues.rst +++ b/_doc/c_metric/pvalues.rst @@ -5,9 +5,6 @@ Confidence Interval and p-Value =============================== -.. contents:: - :local: - This document explains the relationship between p-value and confidence intervals. It goes on with the specific case of a binamial law. Assuming we want to determine whether or not two binomial laws are significantly different, how many observations diff --git a/_doc/c_metric/roc.rst b/_doc/c_metric/roc.rst index 6e2f5168..7a17a18e 100644 --- a/_doc/c_metric/roc.rst +++ b/_doc/c_metric/roc.rst @@ -5,9 +5,6 @@ Courbe ROC ========== -.. contents:: - :local: - .. index:: ROC Ce document introduit la `courbe ROC diff --git a/_doc/c_ml/l1l2.rst b/_doc/c_ml/l1l2.rst index 526be44f..cc392395 100644 --- a/_doc/c_ml/l1l2.rst +++ b/_doc/c_ml/l1l2.rst @@ -24,9 +24,6 @@ transposée dans l'espace initial. Une autre astuce consiste à imposer une contrainte supplémentaire sur le poids des coefficients de la régression, le plus souvent en les pénalisant. -.. contents:: - :local: - Réduction de dimension ====================== diff --git a/_doc/c_ml/lr_trees.rst b/_doc/c_ml/lr_trees.rst index 774eac05..7bb11362 100644 --- a/_doc/c_ml/lr_trees.rst +++ b/_doc/c_ml/lr_trees.rst @@ -12,9 +12,6 @@ logistiques à mi-chemin entre les arbres de décisions et les réseaux de neurones. Dans un premier temps, on s'intéresse uniquement à une classification binaire. -.. contents:: - :local: - Parallèle entre un neurone et une régression logistique ======================================================= diff --git a/_doc/c_ml/lr_voronoi.rst b/_doc/c_ml/lr_voronoi.rst index dac85b19..dae50061 100644 --- a/_doc/c_ml/lr_voronoi.rst +++ b/_doc/c_ml/lr_voronoi.rst @@ -13,9 +13,6 @@ qui allie la régression logistique et les clustering type :ref:`l-k-means`. Le point de départ est une conjecture : les régions créées par une régression logistique sont convexes. -.. contents:: - :local: - Diagramme de Voronoï ==================== diff --git a/_doc/c_ml/missing_values_mf.rst b/_doc/c_ml/missing_values_mf.rst index 480fed2f..97ebe5a4 100644 --- a/_doc/c_ml/missing_values_mf.rst +++ b/_doc/c_ml/missing_values_mf.rst @@ -10,9 +10,6 @@ Cette méthode est utilisée dans le cadre de la recommandation de produits à des utilisateurs. Lire également [Acara2011]_, [Gupta2010]_. -.. contents:: - :local: - Factorisation de matrices et rang ================================= diff --git a/_doc/c_ml/piecewise.rst b/_doc/c_ml/piecewise.rst index bc3abcec..1dd12a6e 100644 --- a/_doc/c_ml/piecewise.rst +++ b/_doc/c_ml/piecewise.rst @@ -22,9 +22,6 @@ n'est pas de le faire mais de le faire efficacement. Et pour comprendre là où je veux vous emmener, il faudra un peu de mathématiques. -.. contents:: - :local: - Une implémentation de ce type de méthode est proposée dans la pull request `Model trees (M5P and co) `_ diff --git a/_doc/c_ml/regression_quantile.rst b/_doc/c_ml/regression_quantile.rst index ca4f08c8..21fb5177 100644 --- a/_doc/c_ml/regression_quantile.rst +++ b/_doc/c_ml/regression_quantile.rst @@ -9,9 +9,6 @@ La régression quantile est moins sensible aux points aberrants. Elle peut être définie comme une régression avec une norme *L1* (une valeur absolue). -.. contents:: - :local: - .. _l-reg-quantile-demo: Médiane et valeur absolue diff --git a/_doc/c_ml/rn/rn_4_densite.rst b/_doc/c_ml/rn/rn_4_densite.rst index 230de98b..79e7fe49 100644 --- a/_doc/c_ml/rn/rn_4_densite.rst +++ b/_doc/c_ml/rn/rn_4_densite.rst @@ -2,9 +2,6 @@ Démonstration du théorème de la densité des réseaux de neurones =============================================================== -.. contents:: - :local: - .. _rn_enonce_probleme_regression: Formulation du problème de la régression diff --git a/_doc/c_ml/rn/rn_5_newton.rst b/_doc/c_ml/rn/rn_5_newton.rst index f0212898..0c06ff04 100644 --- a/_doc/c_ml/rn/rn_5_newton.rst +++ b/_doc/c_ml/rn/rn_5_newton.rst @@ -2,9 +2,6 @@ Descente de gradient ==================== -.. contents:: - :local: - Lorsqu'un problème d'optimisation n'est pas soluble de manière déterministe, il existe des algorithmes permettant de trouver une solution approchée à condition toutefois que la fonction à maximiser ou minimiser soit dérivable, diff --git a/_doc/c_ml/rn/rn_6_apprentissage.rst b/_doc/c_ml/rn/rn_6_apprentissage.rst index 7827dafd..4cefff1a 100644 --- a/_doc/c_ml/rn/rn_6_apprentissage.rst +++ b/_doc/c_ml/rn/rn_6_apprentissage.rst @@ -2,9 +2,6 @@ Apprentissage d'un réseau de neurones ===================================== -.. contents:: - :local: - Le terme apprentissage est encore inspiré de la biologie et se traduit par la minimisation de la fonction :eq:`equation_fonction_erreur_g` où :math:`f` est un réseau de neurone défini par un :ref:`perceptron `. diff --git a/_doc/c_ml/rn/rn_7_clas2.rst b/_doc/c_ml/rn/rn_7_clas2.rst index f6619bab..449014cb 100644 --- a/_doc/c_ml/rn/rn_7_clas2.rst +++ b/_doc/c_ml/rn/rn_7_clas2.rst @@ -4,9 +4,6 @@ Classification ============== -.. contents:: - :local: - Vraisemblance d'un échantillon de variable suivant une loi multinomiale +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ diff --git a/_doc/c_ml/rn/rn_8_prol.rst b/_doc/c_ml/rn/rn_8_prol.rst index 844ba970..0cde1c21 100644 --- a/_doc/c_ml/rn/rn_8_prol.rst +++ b/_doc/c_ml/rn/rn_8_prol.rst @@ -2,9 +2,6 @@ Prolongements ============= -.. contents:: - :local: - Base d'apprentissage et base de test ++++++++++++++++++++++++++++++++++++ diff --git a/_doc/c_ml/rn/rn_9_auto.rst b/_doc/c_ml/rn/rn_9_auto.rst index 24a32d95..17be24c2 100644 --- a/_doc/c_ml/rn/rn_9_auto.rst +++ b/_doc/c_ml/rn/rn_9_auto.rst @@ -4,9 +4,6 @@ Analyse en composantes principales (ACP) et Auto Encoders ========================================================= -.. contents:: - :local: - .. index:: ACP Cet algorithme est proposé dans [Song1997]_. diff --git a/_doc/c_nlp/completion_digression.rst b/_doc/c_nlp/completion_digression.rst index 2b078a74..c9ed1209 100644 --- a/_doc/c_nlp/completion_digression.rst +++ b/_doc/c_nlp/completion_digression.rst @@ -2,9 +2,6 @@ Digressions =========== -.. contents:: - :local: - Synonymes, Contexte +++++++++++++++++++ diff --git a/_doc/c_nlp/completion_fausse.rst b/_doc/c_nlp/completion_fausse.rst index 4b3ba468..d8d71562 100644 --- a/_doc/c_nlp/completion_fausse.rst +++ b/_doc/c_nlp/completion_fausse.rst @@ -2,9 +2,6 @@ Fausses idées reçues ==================== -.. contents:: - :local: - Il faut trier les complétions par fréquence décroissante ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ diff --git a/_doc/c_nlp/completion_formalisation.rst b/_doc/c_nlp/completion_formalisation.rst index 774fe962..76123669 100644 --- a/_doc/c_nlp/completion_formalisation.rst +++ b/_doc/c_nlp/completion_formalisation.rst @@ -2,9 +2,6 @@ Formalisation ============= -.. contents:: - :local: - .. _l-completion-optim: Problème d'optimisation diff --git a/_doc/c_nlp/completion_implementation.rst b/_doc/c_nlp/completion_implementation.rst index 30cf036c..0c7bf913 100644 --- a/_doc/c_nlp/completion_implementation.rst +++ b/_doc/c_nlp/completion_implementation.rst @@ -2,9 +2,6 @@ Implémentation ============== -.. contents:: - :local: - .. _trie: https://fr.wikipedia.org/wiki/Trie_(informatique) J'allais vous raconter en détail ce qu'est un trie_ et le paragraphe suivant diff --git a/_doc/c_nlp/completion_metrique.rst b/_doc/c_nlp/completion_metrique.rst index 1b3cb574..cea98489 100644 --- a/_doc/c_nlp/completion_metrique.rst +++ b/_doc/c_nlp/completion_metrique.rst @@ -2,9 +2,6 @@ Nouvelle métrique ================= -.. contents:: - :local: - Intuitions ++++++++++ diff --git a/_doc/c_nlp/completion_optimisation.rst b/_doc/c_nlp/completion_optimisation.rst index 9d20d3d7..14864b51 100644 --- a/_doc/c_nlp/completion_optimisation.rst +++ b/_doc/c_nlp/completion_optimisation.rst @@ -2,9 +2,6 @@ Problème d'optimisation ======================= -.. contents:: - :local: - Enoncé 1 ++++++++ diff --git a/_doc/c_nlp/completion_propriete.rst b/_doc/c_nlp/completion_propriete.rst index eb76d7ad..2420558e 100644 --- a/_doc/c_nlp/completion_propriete.rst +++ b/_doc/c_nlp/completion_propriete.rst @@ -6,9 +6,6 @@ On s'intéresse principalement à la métrique :math:`M'` définie par Dynamic Minimum Keystroke :eq:`completion-metric2` mais les résultats seront étendues aux autres quand cela est possible. -.. contents:: - :local: - Calcul pour une complétion ++++++++++++++++++++++++++ diff --git a/_doc/defthe_index.rst b/_doc/defthe_index.rst index 4fa626d9..6c37a5ef 100644 --- a/_doc/defthe_index.rst +++ b/_doc/defthe_index.rst @@ -2,9 +2,6 @@ Listes des définitions et théorèmes =================================== -.. contents:: . - :depth: 2 - Corollaires +++++++++++ diff --git a/_doc/examples/plot_logistic_decision.py b/_doc/examples/plot_logistic_decision.py index 3a74e87d..d41b4daf 100644 --- a/_doc/examples/plot_logistic_decision.py +++ b/_doc/examples/plot_logistic_decision.py @@ -11,9 +11,6 @@ une classe est majoritaire. Mais certains cas, c'est une chose compliquée. -.. contents:: - :local: - Un cas simple et un cas compliqué +++++++++++++++++++++++++++++++++ diff --git a/_doc/i_ex.rst b/_doc/i_ex.rst index 1d5e6c76..6c6676df 100644 --- a/_doc/i_ex.rst +++ b/_doc/i_ex.rst @@ -4,8 +4,5 @@ Examples ======== -.. contents:: - :local: - .. exreflist:: :contents: diff --git a/_doc/index.rst b/_doc/index.rst index bed1d84e..1c92e321 100644 --- a/_doc/index.rst +++ b/_doc/index.rst @@ -42,6 +42,9 @@ Le site est aussi disponible (format brut de fonderie) sur glossary CHANGELOGS license + genindex + modindex + search On fait beaucoup de choses avec l'informatique mais en pratique on doit maintenir, on doit réécrire sans cesse. From 4029e0e8ed82b0c71e015bfff82b77b2544e8160 Mon Sep 17 00:00:00 2001 From: xadupre Date: Wed, 5 Mar 2025 23:13:46 +0100 Subject: [PATCH 08/11] fix link --- _unittests/ut_data/test_wikipedia_dump.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_unittests/ut_data/test_wikipedia_dump.py b/_unittests/ut_data/test_wikipedia_dump.py index e7d24dd4..0e62c235 100644 --- a/_unittests/ut_data/test_wikipedia_dump.py +++ b/_unittests/ut_data/test_wikipedia_dump.py @@ -7,7 +7,7 @@ class TestWikipediaDump(ExtTestCase): def test_wikipedia_dump(self): temp = get_temp_folder(__file__, "temp_wikipedia_abstract_gz") name = download_dump( - "fr", "latest-abstract.xml.gz-rss.xml", folder=temp, unzip=False + "fr", "latest-page.sql.gz-rss.xml", folder=temp, unzip=False ) # print(name) self.assertTrue(name is not None) From 3314f6d238b65510eda6e293cb350f113bd2c29c Mon Sep 17 00:00:00 2001 From: xadupre Date: Thu, 6 Mar 2025 00:19:35 +0100 Subject: [PATCH 09/11] doc --- .github/workflows/documentation.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 20791617..db344d67 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -52,7 +52,7 @@ jobs: export PYTHONPATH= - name: test notebooks - run: python -m pytest _unittests/ut_xrun_doc/test_documentation_notebook.py --durations=10 + run: SCIPY_ARRAY_API=1 python -m pytest _unittests/ut_xrun_doc/test_documentation_notebook.py --durations=10 - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v3 @@ -68,7 +68,7 @@ jobs: run: cp CHANGELOGS* ./_doc - name: Documentation - run: python -m sphinx ./_doc ./dist/html -n -w doc.txt + run: SCIPY_ARRAY_API=1 python -m sphinx ./_doc ./dist/html -n -w doc.txt - name: Summary run: cat doc.txt From 5d30d3c7bf96478c23187ce6b4e38808ca822dd7 Mon Sep 17 00:00:00 2001 From: xadupre Date: Thu, 6 Mar 2025 00:34:09 +0100 Subject: [PATCH 10/11] fix req --- requirements-dev.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements-dev.txt b/requirements-dev.txt index 04d8189a..cf105e0f 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -41,6 +41,7 @@ skl2onnx sphinx sphinx-gallery sphinx-issues +sphinxcontrib-blockdiag git+https://github.com/sdpython/sphinx-runpython.git stack_data statsmodels From 35664894152c549f01cf49b46fa7e2a5f5a682a2 Mon Sep 17 00:00:00 2001 From: xadupre Date: Thu, 6 Mar 2025 13:45:43 +0100 Subject: [PATCH 11/11] fix --- requirements-dev.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements-dev.txt b/requirements-dev.txt index cf105e0f..cb400493 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -5,6 +5,7 @@ coverage Cython cytoolz dill +furo graphviz hummingbird-ml ijson