# Module d’apprentissage

Comme expliqué dans le [flux de travail du module d’apprentissage](https://medomicslab.gitbook.io/medomics-docs/v1-fr/tutorials/development/learning-module#the-learning-modules-architecture), il est fortement recommandé de commencer par effectuer une comparaison des algorithmes d’apprentissage automatique à l’aide de la scène d’expérimentation avant d’entraîner un modèle final dans la scène principale. Ainsi, ce processus est séparé en deux étapes : l’étape d’expérimentation et l’étape de création du modèle final.

### Expérimentation : sélection du meilleur algorithme ML

#### Création de scène

{% hint style="info" %}
Apprenez à créer une scène d’expérimentation [ici](https://medomicslab.gitbook.io/medomics-docs/v1-fr/tutorials/development/learning-module#how-to-create-a-scene).
{% endhint %}

Commencez par créer une scène d’expérimentation dans le module d’apprentissage. Ensuite, ouvrez votre scène et utilisez la configuration suivante en faisant glisser, déposer et connecter les nœuds :

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FbG16QfOrqRKpszS6BTMD%2Fimage.png?alt=media&#x26;token=b1619a71-fdcb-423f-801d-7b8ccbc4977e" alt=""><figcaption><p>Fig. 23 - Scène d’expérimentation PARIS</p></figcaption></figure>

Pour le nœud Dataset, utilisez la configuration suivante :

* **Type** : Fichier de données personnalisé
* **Fichiers** : Learning\_PARIS\_Final.csv (ou tout autre nom donné à l’ensemble d’apprentissage des données PARIS)
* **Cible** : target

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FsHI6lsZFS7fqAHHg3MU0%2Fimage.png?alt=media&#x26;token=c3103e21-a051-44f7-add8-7316ee2756fc" alt=""><figcaption><p>Fig. 24 - Configuration du nœud Dataset</p></figcaption></figure>

Aucune modification ne sera nécessaire pour le reste des nœuds, et une fois la scène prête, cliquez sur Exécuter.

#### Résultats de la scène expérimentale

{% hint style="info" %}
Les modèles dans les scènes expérimentales sont entraînés et testés à l’aide d’une seule itération, ce qui se traduit par un biais faible mais une variance élevée (incertitude).
{% endhint %}

Une fois les résultats prêts, cliquez sur le bouton « Voir les résultats » et sélectionnez la section « Comparer les modèles ». Cela affichera une liste d’algorithmes d’apprentissage automatique classés selon leurs performances sur la tâche de prédiction des patients en détresse émotionnelle. Pour plus de clarté, les étapes sont illustrées dans la figure ci-dessous :

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FxKhrIFCZHZBKb0IhuEqV%2FCompareModelsResults.png?alt=media&#x26;token=fc92f7ca-bf0e-4e6f-bdd7-1c1499bdf321" alt=""><figcaption><p>Fig. 25 - Résultats de Comparer les modèles</p></figcaption></figure>

Comme indiqué dans le panneau des résultats, le modèle Random Forest obtient les meilleures performances ; il sera donc utilisé pour entraîner notre modèle final dans la scène principale.

### Scène principale : entraînement et évaluation du modèle final

Maintenant que nous avons sélectionné l’algorithme le plus performant, nous allons entraîner un modèle final en suivant les bonnes pratiques de l’apprentissage automatique, tout en nous concentrant sur l’optimisation du processus d’entraînement pour de meilleures performances. À cette fin, créez une scène principale et appliquez la configuration suivante :

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FDxkemACCyEO20fAVpupY%2Fimage.png?alt=media&#x26;token=f61cdcb3-510e-4096-bb8c-2a6a105e7eba" alt=""><figcaption><p>Fig. 26 - La scène principale pour la prédiction de la détresse émotionnelle à partir des données PARIS</p></figcaption></figure>

#### Configuration des nœuds

Appliquez les configurations suivantes à vos nœuds :

* **Nœud Dataset** : utilisez l’ensemble d’apprentissage créé à l’étape précédente avec la colonne cible « target ». De plus, l’encodage one-hot est automatiquement appliqué lors de l’utilisation de PyCaret, et comme notre ensemble de données n’en a pas besoin, il sera désactivé en définissant `max_encoding_ohe` à 0. Vous pouvez ajouter cette option en cliquant sur le bouton plus du nœud et en l’activant. Enfin, ajoutez l’option session\_id et définissez-la sur un nombre fixe afin de contrôler l’aléa de l’expérience.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2Fyi8Ivaeycuk132qbbRmZ%2Fimage.png?alt=media&#x26;token=9ce5ac4d-668c-448a-9dec-c0f9c3bdb718" alt=""><figcaption><p>Fig. 27 - Configuration du nœud Dataset</p></figcaption></figure>

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2F1GbTXjMHw7uerkYaWoyu%2Fimage.png?alt=media&#x26;token=02be4e39-4381-4b33-a80e-f56ba1bf1e3e" alt=""><figcaption><p>Fig. 28 - Option supplémentaire pour le nœud Dataset</p></figcaption></figure>

* **Nœud Clean** : le processus de nettoyage par défaut de pyCaret inclut déjà les étapes de traitement des données nécessaires, notamment :

  * &#x20;Inférence du type de données : détecte automatiquement les types de données.
  * Imputation des valeurs manquantes : imputation « Mean » pour les variables numériques, et imputation « Mode » pour les variables catégorielles.
  * Encodage catégoriel : convertit les catégories en entiers.

  Cependant, pour simplifier notre modèle, une sélection de variables avec un maximum de 5 variables finales est appliquée. Cliquez sur le nœud Clean, puis cliquez sur le bouton « + » et ajoutez les options suivantes :

  * ***feature\_selection*** : permet de sélectionner un sous-ensemble de variables en fonction de leur importance. Définir à **True**.
  * ***feature\_selection\_estimator*** : classificateur utilisé pour déterminer l’importance. Définir à « **lr » (régression logistique)**.
  * ***n\_features\_to\_select*** : nombre maximal de variables à sélectionner. Définir à **5**.

N’hésitez pas à tester d’autres options de nettoyage, comme l’ajout d’un processus de normalisation des variables.&#x20;

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FL9AZe8Xh6XHie8SO1YmX%2Fimage.png?alt=media&#x26;token=de8d1edb-7bc1-4666-8487-fd1c4cbd0fd2" alt=""><figcaption><p>Fig. 29 - Configuration de la sélection de variables dans le nœud de nettoyage</p></figcaption></figure>

* **Nœud Split** : utilisez Bootstrap comme méthode de découpage avec 100 itérations. Définissez la colonne de stratification sur « *target* ». Bootstrap aide à réduire le biais dans l’estimation des performances.

{% hint style="danger" %}
Si vous souhaitez éviter de longs temps d’attente, remplacez la méthode Bootstrap à 100 itérations par **un sous-échantillonnage aléatoire** sur 10 itérations.
{% endhint %}

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FPLJJyrcZHjrvFAFKGMZe%2Fimage.png?alt=media&#x26;token=68afdb24-80c9-4094-8bdf-4179e65483dc" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FKRpdFjuy1ALVyFG2QKsB%2Fimage.png?alt=media&#x26;token=629b7c56-724a-4411-a029-9df38bd27296" alt=""><figcaption><p>Fig. 30 - Configuration du nœud Split</p></figcaption></figure>

* **Nœud Model** : sélectionnez « *Random Forest* » comme algorithme d’apprentissage automatique.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FoczUmYnzA6OgmKjQZyQ5%2Fimage.png?alt=media&#x26;token=7c84f136-ed7b-4df8-adf4-ced24fda68a0" alt=""><figcaption><p>Fig. 31 - Configuration du nœud Model</p></figcaption></figure>

* **Entraîner le modèle** : activez le réglage pour ajuster les hyperparamètres du modèle et optimiser les performances.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FOZCWArnJ4Q2NsVFg7OGw%2Fimage.png?alt=media&#x26;token=87d29f7f-7215-47bb-bc1f-d09d623aeb39" alt=""><figcaption><p>Fig. 32 - Configuration du nœud Train Model</p></figcaption></figure>

* **Nœud Analyze** : aucune modification requise, mais vous pouvez changer la métrique à tracer.

#### Exécutez la scène et analysez les résultats

Une fois la scène configurée, appuyez sur le bouton Exécuter et suivez le processus d’exécution grâce à la barre de progression en bas. Une fois vos résultats prêts, le bouton « ***Mode d’analyse*** » sera activé et, en cliquant dessus, vous accéderez au panneau d’analyse en bas, où tous les résultats seront affichés. Sélectionnez ensuite les résultats de performance du modèle :

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FsldFnydZq2iVTs6ToZkg%2Fimage.png?alt=media&#x26;token=f36692fc-1619-472c-ace9-b331ce038f1d" alt=""><figcaption><p>Fig. 33 - Résultats du modèle</p></figcaption></figure>

Le modèle a atteint un AUC de 0,76, ce qui est considéré comme bon, mais il y a toujours une marge d’amélioration. Cette performance met en évidence le potentiel de notre modèle. Elle montre comment des utilisateurs sans expérience préalable en programmation peuvent créer des modèles exploitables, prouvant ainsi l’utilité de la plateforme MEDomics, en particulier du module d’apprentissage.

#### Finaliser et enregistrer notre modèle.

La dernière étape consiste à réentraîner notre modèle sur l’ensemble complet d’apprentissage et à l’enregistrer pour une évaluation finale sur l’ensemble de holdout créé à l’étape 3. Pour ce faire, vous pouvez cliquer sur le bouton « ***Finaliser et enregistrer le modèle*** ». Cela réentraînera votre modèle sur l’ensemble d’apprentissage complet en utilisant le même processus que précédemment. Une fois le modèle enregistré, vous devriez le voir dans le sous-dossier « models » de votre dossier de scène.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2F7NQQnNZQVgjDK1JbQHHP%2Fimage.png?alt=media&#x26;token=e2d371b6-4ff9-43ab-944c-5978439e0c37" alt=""><figcaption><p>Fig. 34 - Arborescence de la scène principale</p></figcaption></figure>

Une fois le modèle enregistré, vous êtes prêt pour l’étape suivante et finale, où nous évaluerons notre modèle sur l’ensemble de holdout, expliquerons et analyserons ses prédictions à l’aide du module d’évaluation.

#### *Supplément : autres configurations que vous pouvez essayer*

{% hint style="info" %}
Pour simplifier, nous avons choisi un modèle avec seulement cinq variables, mais de meilleures performances sont obtenues lorsque le nombre maximal de variables à utiliser n’est pas limité.
{% endhint %}

Le module d’apprentissage dispose de nombreux paramètres et fonctionnalités, ce qui conduit à une variété de configurations pouvant être mises en œuvre et testées. Dans cette section, nous réentraînons notre modèle sans fixer de nombre maximal de variables, ce qui a donné les résultats suivants :

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FfBYnyFPu5lYX3q4eJyfr%2Fimage.png?alt=media&#x26;token=23493818-14ec-4b63-bdf4-7022a4d8d769" alt=""><figcaption><p>Fig. 35 - Résultats du modèle entraîné</p></figcaption></figure>

Nous vous encourageons vivement à expérimenter différentes configurations et méthodes afin d’améliorer éventuellement vos résultats. Dans les sections suivantes, nous évaluerons le modèle enregistré sur l’ensemble de holdout.
