• Aucun résultat trouvé

PREDICTION DES DIAGNOSTICS DIFFERENTIELS LES PLUS P

B)- Modèles algorithmiques

Afin d’évaluer la performance de l’apprentissage automatique dans la classification d’un patient dans l’une des différentes étiologies de l’uvéite, nous avons décidé de tester trois types de modèles algorithmiques d’apprentissage automatique supervisé qui sont le plus souvent utilisés dans les tâches de classification.

Notre choix s’est porté sur un réseau de neurones artificiels, une forêt d’arbres décisionnels (Random forest RF), et une machine à vecteurs de support (Support vectors machines SVM).

Tous les modèles algorithmiques ont été codés et paramétrés en collaboration avec un ingénieur informaticien, doctorant de la faculté des sciences de Kénitra. On a exposé à l’expert l’ensemble des besoins et les résultats attendus.

1)- Première étape : conversion de la base de données en système binaire (0/1)

Pour pouvoir exploiter nos données, il est nécessaire de traduire notre base de données en informations pouvant être interprétées par le modèle algorithmique.

Ainsi, l’ensemble de notre base de données est transformée en un système binaire : on attribue une valeur de 1 à un « OUI », et une valeur de 0 à un « NON ». (Tableau 11)

Tableau 9 : Base de données sous forme de système binaire pouvant être interprétée par les algorithmes.

2)- Deuxième étape : construction des modèles algorithmiques

Nous avons choisi de tester 3 modèles algorithmiques très performants dans les tâches de classification. Ces derniers ont été utilisés plusieurs fois dans la classification de plusieurs autres pathologies.

L’objectif principal de ces modèles est de classifier une nouvelle observation (patient) dans les différentes classes sélectionnées, et de générer une liste de diagnostics différentiels avec la probabilité de leur présence. L’ensemble des modèles ont été codés et paramétrés sur le langage Python.

Nous commençons par importer notre base de données sur Python, ainsi que l’ensemble des modèles algorithmiques d’une bibliothèque (Scikit Learn) (73) prévue à cet effet.

Figure 39 : Importation de la base de données sur Python.

Pour chacun des modèles, nous avons réglé les hyper-paramètres propres à l’algorithme afin d’optimiser la classification. Pour chaque modèle, nous essayons à trois reprises plusieurs combinaisons d’hyper-paramètres, et nous demandons à Python de nous présenter la meilleure combinaison que nous utiliserons comme hyper-paramètres d’apprentissage.

 Modèle I : Forêt d’arbres décisionnels (Random Forest RF)

Il existe plusieurs hyper-paramètres utilisés dans la construction de la forêt d’arbres décisionnels. Nous expliquerons certains de ces hyper-paramètres utilisés dans la construction de notre modèle algorithmique (39) :

- n_estimators : Il s’agit du nombre d’arbres différents à entrainer. Nous essayons des modèles à 100, 500, 1000, 1500 arbres.

- criterion : c’est le critère statistique utilisé pour couper les feuilles de chaque arbre en cours de construction, comme expliqué un peu plus haut. Nous testons les critères de Gini et d’Entropie.

- max_features : c’est le nombre maximum de variables qu’on tire aléatoirement pour chaque arbre selon le concept du Feature Sampling. Nous essayons plusieurs combinaisons de ces hyper-paramètres.

Figure 40 : Paramétrage de la forêt d'arbres décisionnels.

Python compare ensuite l’accuracy de chacune des combinaisons et nous présente la meilleure :

La combinaison avec 100 arbres décisionnels à entrainer et le critère de Gini obtient le meilleur score qui est de 0,913. La combinaison de ces hyper-paramètres sera utilisée dans la construction de notre modèle RF.

Figure 42 : Meilleure combinaison d'hyper-paramètres obtenue pour la forêt d'arbres décisionnels qui sera utilisée ultérieurement pour l’apprentissage du modèle.

 Modèle II : Machine à vecteurs de support (SVM) avec RBF kernel.

Pour ce modèle, nous utilisons un RBF Kernel avec plusieurs combinaisons des hyper-paramètres C et Gamma. Nous testons 5 valeurs de C (0.1, 1, 10, 100, 1000) ainsi que 6 valeurs de Gamma (100, 10, 1, 0.01, 0.001, 0.0001).

Nous demandons à Python de nous présenter la meilleure des différentes combinaisons de Gamma et C.

Figure 44 : Combinaison ayant obtenue la meilleure « accuracy ».

La combinaison utilisant le RBF kernel et une valeur de C à 1000 et une valeur de Gamma de 0,0001 obtient le meilleur score avec une accuracy de 0,802.

Celle-ci sera alors sélectionnée comme hyper-paramètres pour notre modèle de SVM.

Figure 45 : Meilleure combinaison d'hyper-paramètres obtenue pour la machine à vecteurs de support qui sera utilisée ultérieurement pour l’apprentissage du modèle.

 Modèle III : Réseau de neurones artificiels (Deep Learning DL)

En ce qui concerne le modèle d’apprentissage profond (deep learning), nous construisons un réseau de neurones artificiels fait d’une couche d’entrées (inputs) de 86. Il s’agit des 86 critères de description des différents patients de la base de données.

La couche des neurones cachés est faite d’une première et une deuxième couche de 86 neurones chacune.

Les neurones de sorties (output) sont faits de 10 neurones. Dans notre cas, il s’agit des 10 étiologies de l’uvéite à prédire.

Figure 47 : Rassemblement des données et étapes de conception d’un réseau de neurones artificiels. Les entrées (inputs) représentent les 86 critères de description des patients.

Les meilleurs hyper-paramètres obtenus pour chaque modèle seront utilisés comme paramètres d’apprentissage pour nos trois modèles. Ces derniers utiliseront la base de données initiale pour apprendre, mais également pour tester leur apprentissage.

 Notion de « testing set » et « training set » (74)

Le « training set » ou données d’entrainement sont l’ensemble des données sur lesquelles l’algorithme apprend les règles afin de réaliser les prédictions. Ce dernier a tendance à avoir des très bons résultats lorsqu’on le teste sur ces données, puisqu’il les apprend « par cœur ». L’objectif étant de savoir si ces résultats peuvent être généralisés sur des nouvelles données encore inconnues pour l’algorithme : c’est tout l’intérêt du « testing set ».

Le « testing set » ou données de test sont un ensemble de données étiquetées qu’on demande à l’algorithme de classer et qui n’ont pas servi d’entrainements, donc inconnues pour le modèle. C’est à partir des résultats obtenus à partir du « testing set » qu’on réalise nos mesures de performances afin d’évaluer le comportement du modèle d’apprentissage automatique, et savoir si ce dernier peut être généralisable sur de nouvelles données ou non.

Dans notre cas, nous réalisons 100 réarrangements aléatoires de l’échantillon. Le 2/3 de chaque réarrangement est utilisé pour entrainer le modèle, et le 1/3 restant pour le tester. Nous obtenons alors nos trainings et testings set.

Chaque modèle réalise alors 100 entrainements, soit 300 entrainements pour nos 3 modèles, sur les bases de données réarrangées aléatoirement, et pour chaque modèle obtenu en fin d’entrainement, nous réalisons 4 mesures de performance (précision, rappel, F-score et accuracy) pour pouvoir comparer leur comportement respectif.

II- Résultats