Skip to content
Snippets Groups Projects
Commit e2cb6207 authored by Alice Brenon's avatar Alice Brenon
Browse files

Introduce the Maximal Confusion Matrix/Graph properly + improve the figures

parent 096d1962
No related branches found
No related tags found
No related merge requests found
......@@ -8,6 +8,9 @@ figure/*
!figure/text
!figure/textometry
data/classification/*_superdomain/results.tsv
data/classification/**/*.json
data/classification/**/falsePositives.tsv
data/classification/**/falseNegatives.tsv
data/corpus/**/*.tsv
!data/corpus/metadata.tsv
!data/corpus/Parallel.tsv
......
......@@ -482,7 +482,7 @@ classe *Métiers* qui est parmi les domaines les mieux représentés. Cette
hypothèse semble confirmée par la matrice de confusion de la figure
\ref{fig:confusion_matrix}.
![Matrice de confusion matrix pour la combinaison *SGD+TF-IDF* sur le jeu de test.](figure/classification/sgd_tf_idf_s10000.png){#fig:confusion_matrix width=63%}
![Matrice de confusion matrix pour la combinaison *SGD+TF-IDF* sur le jeu de test.](figure/classification/SGD+TF-IDF_domainGroup/confusionMatrix.png){#fig:confusion_matrix width=63%}
Sur cette figure, une colonne pâle est en effet visible vers la droite. Cette
colonne représente des articles de nombreux domaines pour lesquels le modèle
......
......@@ -54,9 +54,9 @@ retenue pour entraîner le modèle (correspondant à la cellule en vert sur la
figure). Or d'une part il ne semble pas y avoir d'ordre d'importance entre les
désignants présents en tête d'un article, et d'autre part les combinaisons de
classes apparaissant ensemble au sein de ces 5% possèdent une certaine
cohérence. Il y a ainsi plusieurs articles relevant à la fois de l'Histoire
Naturelle et de la Botanique[^bromelia] mais aucun relevant à la fois de la
Pharmacie et du Spectacle. Malgré le choix d'une classe parmi plusieurs pour
cohérence. Il y a ainsi plusieurs articles relevant à la fois de l'*Histoire
Naturelle* et de la *Botanique*[^bromelia] mais aucun relevant à la fois de la
*Pharmacie* et du *Spectacle*. Malgré le choix d'une classe parmi plusieurs pour
simplifier la tâche du classifieur automatique, les combinaisons de classe
existantes sont également une source d'information intéressante.
......@@ -257,65 +257,184 @@ la *Géographie*. Ces contenus nourrissent les articles de nombreux autres
domaines, montrant la Géographie comme une science transverse, nécessaire dans
l'articulation du discours des autres sciences.
#### Étude d'un modèle d'AA comme un graphe {#sec:graph_model}
Les matrices et les graphes sont des représentations complémentaires des mêmes
informations qui permettent de poursuivre l'exploration des relations entre
classes. Un graphe peut être changé en une matrice d'adjacence et, inversement,
un graphe peut servir à montrer les dynamiques qu'impliquent une matrice. En
effet, les poids dans une matrice de confusion peuvent servir de coefficients
d'attraction entre les nœuds d'un graphe car conceptuellement c'est bien ainsi
qu'est définie une matrice de confusion: en comptant le nombre d'articles d'une
classe source que le modèle a en fait prédit appartenir à la classe de
destination. Dans une matrice de confusion, une première diagonale (celle de la
matrice identité, d'en-haut à gauche à en-bas à droite) forte, c'est-à-dire dont
les coefficients sont très grands devant ceux présents hors de la diagonale, est
un signe de stabilité. En effet, la diagonale dans une matrice carrée correspond
aux coefficients décrivant la relation de chaque élément de la base avec
lui-même. Dans le cadre du problème de classification que l'on étudie, ils
correspondent aux vrais positifs: à la proportion d'articles d'une classe donnée
qui a été correctement assignée à cette même classe. Un modèle parfaitement
précis — et par-là même parfaitement stable — enverrait chaque nœud (chaque
classe donc, ici) vers lui-même, ce qui signifierait que tous ses articles
seraient classés correctement par le modèle. Les cases colorées hors de cette
diagonale dans une matrice de confusion montrent la proportion d'articles
mal classés par le modèle.
Si l'on considère la matrice de confusion présentée à la figure
\ref{fig:confusion_matrix} (p.\pageref{fig:confusion_graph}), appelée $C$ dans
ce qui suit, on constate que la plupart des classes sont mal classifiées dans
une certaine mesure par le modèle SGD+TF-IDF. Le graphe représenté par cette
matrice serait donc extrêmement dense, avec la plupart des nœuds connectés à la
plupart des autres. Par conséquent, il peut être utile dans un premier temps de
restreindre l'information dans ce graphe pour ne garder que la classe la plus
confondue avec chacune des autres classes et former ainsi un graphe de
«confusion maximale» (voir la figure \ref{fig:confusion_graph}). Effectuer cette
opération revient, sur la matrice de confusion du modèle, à appliquer ces
transformations pour obtenir la matrice de transition du graphe simplifié:
d'abord, mettre à 0 les cellules diagonales, qui n'encodent que les prédictions
exactes du modèle, puis calculer la valeur maximale sur chaque ligne et, pour
cette ligne, rendre également nulles toutes les cellules sauf celles où le
maximum a été atteint. On obtient alors la matrice présentée à la figure
\ref{fig:adjacency_matrix}.
![(À AMÉLIORER POUR LA LISIBILITÉ) Graphe de confusion maximale pour la méthode SGD+TF-IDF sur le jeu de test.](figure/classification/Confusion_graph_SGD_TFIDF_10k.png){#fig:confusion_graph}
![Matrice d'adjacence du graphe de confusion maximale pour la méthode SGD+TF-IDF sur le jeu de test.](figure/classification/Adjacency_matrix_SGD_TFIDF_10k_weighted.png){#fig:adjacency_matrix width=80%}
Le graphe correspondant présente déjà des motifs qui ont du sens au regard de la
connaissance qualitative préalable que l'on peut avoir de l'*EDdA*. Par exemple,
il apparaît cohérent que la classe *Mathématiques* soit le plus souvent
confondue avec *Physique - \[Sciences physico-mathématiques\]*, et que *Mesure*
et *Monnaie* aient toutes deux une arête vers *Commerce*. *Médecine - Chirurgie*
est relié à *Anatomie*, *Chimie* et *Pharmacie*. Enfin, *Métiers* attire des
articles de nombreuses autres classes décrivant une activité professionelle
comme *Agriculture - Économie rustique*, *Architecture*, *Arts et métiers*,
*Commerce* et *Militaire (Art) - Guerre - Arme*. Cet ensemble de flèches
pointant toutes sur *Métiers* en haut à droite du graphe correspond à la colonne
déjà visible à droite dans la matrice d'adjacence simplifiée. En ne représentant
que l'erreur de classification la plus fréquente pour chaque classe, le graphe
constitue déjà une ressource visuelle utile pour identifier les domaines
[@=ENCCRE] proches entre eux.
#### Graphe de confusion maximale {#sec:graph_model}
L'étude préliminaire qui précède révèle déjà des traits intéressants de la
*Géographie* mais serait trop fastidieuse à conduire sur chacun des 38 *domaines
regroupés* et, surtout, ignorerait des dynamiques complexes impliquants plus de
deux domaines à la fois. Pour approfondir l'exploitation des erreurs du modèle,
il faut des outils permettant d'adopter une approche d'ensemble.
Les matrices et les graphes sont des représentations complémentaires et
équivalentes de la même information: l'évolution atomique d'un système dynamique
discret et linéaire (SDDL) — un déplacement sur un réseau, une étape de
transformation d'un modèle physique ou dans le cas présent la prédiction des
classes d'un ensemble d'articles. À tout graphe dirigé fini et sans arêtes
multiples correspond une matrice d'adjacence pondérée. Réciproquement toute
matrice carrée dont les coefficients peuvent représenter les poids d'un graphe
peut être vue comme sa matrice d'adjacence pondérée (ou matrice des poids). En
effet, dans un graphe de $n$ nœuds n'admettant qu'une seule arête entre deux
nœuds donnés, il peut y avoir au plus $n^2$ arêtes. Si le graphe est complet ou
si les coefficients qui pondèrent ses arêtes peuvent prendre une valeur
particulière pour représenter une absence d'arête (typiquement $0$), alors ces
arêtes peuvent être stockées dans une matrice carrée de taille $n$: sa matrice
des poids. Inversement, une matrice $M$ de taille $n$ permet de construire un
graphe en créant $n$ nœuds puis en ajoutant une arête pondérée du coefficient
$M_{i,j}$ du nœud $i$ vers le nœud $j$ (de même que pour la traduction du graphe
en matrice, en n'ajoutant éventuellement aucune arête si ce coefficient a une
valeur particulière, typiquement $0$) pour tous les coefficients de la matrice
$M$. Cette équivalence est représentée par la figure
\ref{fig:mat_graph_equivalence}.
\begin{figure}
\centering
\begin{subfigure}[b]{0.49\textwidth}
\centering
\[\begin{pmatrix}
m_{0,0} & m_{0,1} & \dots & m_{0,n}\\
m_{1,0} & m_{1,1} & \dots & m_{1,n}\\
\vdots & \ddots & \\
m_{n,0} & m_{n,1} & \dots & m_{n,n}\\
\end{pmatrix}\]
\caption{Les coefficients dans la matrice}
\end{subfigure}
\begin{subfigure}[b]{0.49\textwidth}
\centering
\includegraphics[width=0.7\textwidth]{figure/exampleGraph.png}
\caption{Les poids des arêtes du graphe}
\end{subfigure}
\caption{Représentation schématique de l'équivalence entre matrice et graphe}
\label{fig:mat_graph_equivalence}
\end{figure}
Il faut remarquer ici la part d'arbitraire qui existe dans les deux opérations
de conversion puisqu'elles reposent sur un choix implicite pour faire
correspondre le sens d'une arête sur le graphe avec l'ordre entre colonne et
ligne dans la matrice. Il aurait tout à fait été possible de stocker en
$M_{j,i}$ le poids de l'arête de $i$ vers $j$ ou, de manière équivalente de
construire à partir de $M_{i,j}$ l'arête de $j$ vers $i$ dans le graphe. La
seule chose qui importe est d'adopter des conventions compatibles (ce qui est le
cas de celles choisies) pour les deux transformations
`matrice`$\rightarrow$`graphe` et `graphe`$\rightarrow$`matrice` afin que leur
composée revienne à la matrice ou au graphe de départ, et pas à la matrice
transposée ou au graphe opposé (le même graphe en renversant le sens des
arêtes).
Cette dualité entre matrices et graphes permet d'explorer les SDDL en adoptant
alternativement les points de vue d'un graphe ou d'une matrice. Lorsque le
nombre de nœuds et d'arêtes devient trop élevé dans un graphe pour pouvoir
exploiter sa représentation graphique (voire parfois même pour pouvoir
simplement tracer une telle représentation en deux dimensions), l'exploitation
de sa matrice des poids, qui dans tous les cas donne «seulement» un tableau
bidimensionnel permet de prendre le relai. À l'inverse, il peut être compliqué
d'obtenir une intuition de l'évolution d'un système à partir de sa seule matrice
d'adjacence pondérée alors qu'un graphe traduit facilement une idée de
dynamique. Dans le cadre de la présente étude, un objet capture bien la
différence entre les intentions des auteurs de l'*EDdA* et les ressemblances
textuelles enregistrées par le modèle: sa matrice de confusion normalisée,
présentée à la figure \ref{fig:confusion_matrix} page
\pageref{fig:confusion_matrix}. Elle sera notée $C$ dans tout le reste de cette
section. Suite à la remarque précédente et vu la manière dont une matrice de
confusion est définie, la convention choisie pour le sens des arêtes signifie
que l'analyse est orientée vers les faux négatifs (les lignes de la matrice de
confusion). La représentation de la matrice de confusion du modèle sous forme de
graphe revient donc à le voir «déplacer» les articles du domaine auquel ils
appartiennent d'après l'[@=ENCCRE] vers le domaine qu'il considère le plus
probable. La convention contraire (basée sur les colonnes et donc les faux
positifs) aurait signifié que les articles d'un domaine prédit par le modèle
auraient été issus des vrais domaines pointé par les arêtes partant du nœud
correspondant). Elle semble moins intuitive, ce qui justifie la convention
adoptée.
La matrice de confusion d'un modèle parfait est à la matrice identité: des $1$
sur la diagonale principale (du coin supérieur gauche au coin inférieur droit)
et des $0$ partout ailleurs, signifiant que pour chaque classe donnée tous les
articles de cette classe sont correctement identifiés par le modèle («laissés au
même endroit»). Avec l'équivalence précédente, le graphe correspondant à un tel
modèle parfait serait formé d'autant de nœuds qu'il y a de classes, tous isolés,
et ne possédant chacun qu'une unique arête vers eux-mêmes (une boucle) pondérée
de la valeur $1$. Mais le graphe d'un vrai modèle comme le $SGD+TF-IDF$ étudié
est bien plus difficile à représenter, comme le suggèrent les nombreuses cases
colorées hors de la diagonale sur la figure \ref{fig:confusion_matrix}. Il est
d'ailleurs difficile de distinguer précisément quelles cases sont nulles ou pas
à cause des différences d'ordre de grandeur dans les coefficients. En reprenant
les données numériques, 484 cellules sont non nulles sur les 1 444 cellules au
total dans la matrice ($38 \times 38$). Ce «bruit de fond» sur la matrice
correspondrait donc à un graphe extrêmement dense, avec $\frac{1}{3}$ des arêtes
d'un graphe complet ($\frac{484}{1444} \simeq 0.335$). Il est donc difficile de
se donner une intuition de la dynamique sous-jacente à cette matrice de
confusion.
Pour dépasser cette difficulté, on simplifie le système considéré pour ne
considérer que les erreurs les plus significatives, désignées par l'expression
«Confusion Maximale». On définit ainsi deux nouveaux objets duaux: la Matrice de
Confusion Maximale (MCM) et le Graphe de Confusion Maximale (GCM) liés par la
correspondance décrite ci-dessus (la MCM est la matrice d'adjacence pondérée du
GCM). En pratique, il est plus aisé de décrire la MCM à partir de la matrice de
confusion du modèle, puis de générer le GCM correspondant. Pour obtenir la MCM à
partir de la matrice de confusion, il suffit de mettre à 0 toutes les cellules
diagonales (celles qui d'après la remarque ci-dessus encodent les prédictions
exactes du modèles qui ne contiennent donc pas d'information sur ses erreurs)
puis de calculer la valeur maximale sur chaque ligne et, pour une ligne donnée,
rendre également nulles toutes les cellules sauf celle(s) où le maximum a été
atteint. Ici encore, la simplification a lieu par ligne puisque ce sont les
lignes qui régissent le graphe: ce choix correspond à ne garder que l'arête la
plus forte qui quitte chaque nœud, c'est à dire le domaine qui attire le plus de
faux négatifs du domaine de départ. En appliquant cette procédure à $C$, on
obtient la MCM pour le modèle *SGD+TF-IDF* présentée à la figure
\ref{fig:max_confusion_matrix}.
![Matrice de Confusion Maximale pour la méthode SGD+TF-IDF sur le jeu de test.](figure/classification/SGD+TF-IDF_domainGroup/maximalConfusionMatrix.png){#fig:max_confusion_matrix width=63%}
À partir de cette matrice, il est aisé de construire le GCM correspondant en
appliquant la procédure utilisée plus haut pour prouver le sens retour dans
l'équivalence entre graphe et matrice, à savoir construire le graphe à partir
des coefficients de la matrice. Le résultat de cette opération appliquée à la
MCM de la figure \ref{fig:max_confusion_matrix} est le GCM du modèle
*SGD+TF-IDF* visible à la figure \ref{fig:max_confusion_graph}. Ses arêtes
reprennent le schéma de couleur utilisé dans ce manuscrit pour les matrices de
confusion: le mauve y est d'autant plus prononcé que le taux de faux négatifs y
est important. Ainsi, le cas des classes *Minéralogie* et *Arts et métiers*,
très mal reconnues, ressort nettement sur le graphe: plus de la moitié de leurs
articles sont incorrectement prédits par le modèle (en faveur des classes
*Histoire Naturelle* et *Métiers* respectivement).
![Graphe de Confusion Maximale pour la méthode SGD+TF-IDF sur le jeu de test.](figure/classification/SGD+TF-IDF_domainGroup/maximalConfusionGraph.png){#fig:max_confusion_graph}
La particularité la plus visible est sans doute la très forte attractivité de la
classe *Métiers*, traduisant la densité relativement élevée de la colonne
correspondant à cette classe sur la MCM de la figure
\ref{fig:max_confusion_matrix}. De manière cohérente avec le résultat des
analyses du début de cette section, la *Géographie* pointe sur l'*Histoire* car
ce domaine est le plus fort attracteur de ses faux négatifs. En revanche, il
apparaît que les relations ne sont évidemment pas symétriques car si la plupart
des faux positifs de *Géographie* viennent de l'*Histoire*, le modèle «envoie»
encore plus d'article de ce domaine vers *Droit - Jurisprudence*. Entre ces deux
classes par contre, il y a une réciprocité, car l'*Histoire* est aussi le
domaine qui attire le plus de faux négatifs de *Droit - Jurisprudence*. Une
autre configuration intéressante est celle de la classe *Mathématiques* dont
partent deux arêtes (c'est le seul nœud dans ce cas): les classes *Physique* et
*Grammaire* attirent autant de faux négatifs de la classe *Mathématiques*. Sans
cet équilibre, le graphe serait partagé en deux composantes indépendantes: la
partie supérieure de la figure \ref{fig:max_confusion_graph} rassemble plutôt
des domaines liés à un certain savoir-faire et la partie inférieure des domaines
liés à la connaissance et à la réflexion. Il n'y a pas d'explication évidente à
cette division qui soit liée à la méthodologie employée: elle n'est probablement
pas stricte et certains liens s'expliquerait sans doute davantage par des
ressemblances de thématiques et de vocabulaire que par une démarche similaire
(on peut penser par exemple au lien entre *Histoire Naturelle* et
*Agriculture*), mais il n'en demeure pas moins intéressant de remarquer que la
*Physique* et la *Chimie* font toutes deux partie de la composante supérieure
(ce qui est assez surprenant avec une perspective contemporaine très théorique
de ces deux disciplines). La *Géographie*, quant à elle, se situe bien dans la
composante inférieure ce qui semble traduire — si l'on accepte l'interprétation
précédentes des deux partitions — un domaine qui compile des informations plus
qu'il ne décrit des procédés. En représentant les dynamiques des faux négatifs
dans les prédictions d'un modèle, le GCM constitue donc déjà une ressource
visuelle utile pour identifier les proximités existant entre les classes. La
section suivante poursuit l'exploration des graphes et des matrices en
utilisant cette notion de *Confusion Maximale*, bien qu'appliquée à d'autres
objets que les prédictions d'un modèle.
### Similarités lexicales {#subsubsection:lexical_similarities}
......
......@@ -18,7 +18,8 @@ FILTERS = pandoc-fignos $(CUSTOM_FILTER)
LUA_FILTERS = ./filter/with-bibliography.lua
WITH_FILTERS = $(FILTERS:%=--filter %) $(LUA_FILTERS:%=--lua-filter %)
PANDOC_OPTIONS = --pdf-engine=xelatex
CONFUSION_MATRIX = geopyck confusionMatrix -c Purples -w 13
FIGURE_GEOPYCK_OPTIONS = --cmap Purples --maxWidth 13
CONFUSION_MATRIX = geopyck drawMatrix $(FIGURE_GEOPYCK_OPTIONS)
DEPENDENCIES=$(CUSTOM_FILTER) $(HEADER) $(FIGURES) $(TABLES) $(BIBLIOGRAPHY)
......@@ -67,6 +68,18 @@ figure/classification/%.png: data/classification/%.csv
figure/classification/%.png: data/classification/%.tsv
$(CONFUSION_MATRIX) $< $@
data/classification/%/confusionMatrix.json: data/classification/%/labels.txt data/classification/%/results.tsv
geopyck confusionMatrix --labels $< $> $@
%/maximalConfusionMatrix.json: %/confusionMatrix.json
geopyck confusionMatrix --maximal $< $@
figure/classification/%.png: data/classification/%.json
$(CONFUSION_MATRIX) $< $@
figure/classification/%Graph.png: data/classification/%Matrix.json
geopyck graph $(FIGURE_GEOPYCK_OPTIONS) $< $@
figure/classification/%.png: data/classification/%/results.csv data/classification/%/labels.txt
$(CONFUSION_MATRIX) $< --labels data/classification/$*/labels.txt $@
......@@ -79,6 +92,9 @@ figure/classification/parallelCorpus.png: data/corpus/Parallel/pairs.tsv
figure/classification/domainGroup.png: data/corpus/metadata.tsv
./visualisation/SortedHistogram.py <($(SELECT) $(ARTICLES),$(GROUPED_DOMAIN) $<) $@ domainGroup
figure/classification/%.png: data/classification/%.tsv
./visualisation/SortedHistogram.py $< $@ domainGroup
%/results.tsv: data/corpus/metadata.tsv %/predictions.tsv
sed '1 s/domain/truth/' $(METADATA) > $@
......@@ -109,9 +125,6 @@ data/corpus/Parallel/geo_in_%.tsv: data/corpus/Parallel/pairs.tsv
table/LGE_evaluation.tex: data/classification/LGE_evaluation.tsv
./visualisation/Repartition.py $< $@ score domain Précision
figure/repartition/classification/%.png: data/classification/%.tsv
./visualisation/Repartition.py $< $@ count domainGroup
figure/repartition/corpus/%.png: data/corpus/%.tsv
./visualisation/Repartition.py $< $@ count domain
......
......@@ -14,6 +14,7 @@ glossary-root: Glossaire
glossary-title: Glossaire
mainfont: "Libertinus Serif"
header-includes:
- \usepackage{amsmath}
- \usepackage[french]{babel}
- \usepackage{booktabs}
- \usepackage{caption}
......
../domainGroup.txt
\ No newline at end of file
This diff is collapsed.
Agriculture - Economie rustique
Anatomie
Antiquité
Architecture
Arts et métiers
Beaux-arts
Belles-lettres - Poésie
Blason
Caractères
Chasse
Chimie
Commerce
Droit - Jurisprudence
Economie domestique
Géographie
Grammaire
Histoire
Histoire naturelle
Jeu
Maréchage - Manège
Marine
Mathématiques
Médailles
Médecine - Chirurgie
Mesure
Métiers
Militaire (Art) - Guerre - Arme
Minéralogie
Monnaie
Musique
Pêche
Pharmacie
Philosophie
Physique - [Sciences physico-mathématiques]
Politique
Religion
Spectacle
Superstition
figure/classification/Adjacency_matrix_SGD_TFIDF_10k_weighted.png

343 KiB

figure/classification/Confusion_graph_SGD_TFIDF_10k.png

282 KiB

digraph {
0 -> 0 [label=<m<SUB>0,0</SUB>>];
0 -> 1 [label=<m<SUB>0,1</SUB>>];
0 -> n [label=<m<SUB>0,n</SUB>>];
1 -> 0 [label=<m<SUB>1,0</SUB>>];
1 -> 1 [label=<m<SUB>1,1</SUB>>];
1 -> n [label=<m<SUB>1,n</SUB>>];
n -> 0 [label=<m<SUB>n,0</SUB>>];
n -> 1 [label=<m<SUB>n,1</SUB>>];
n -> n [label=<m<SUB>n,n</SUB>>];
other [label="…" shape="plaintext"]
0 -> other;
other -> n;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment