# Module d’apprentissage

La section Machine Learning de cette preuve de concept est structurée en deux options d'exécution.

#### [<mark style="color:$primary;">Option 1 : Pipeline intégré à la plate-forme (recommandé pour la continuité)</mark>](#option-1-platform-integrated-pipeline)

Cette option applique le pipeline prédictif à l'ensemble de données réduit\
`Learning_homr_any_visit_10pct.csv`.

Elle assure la continuité de la preuve de concept en permettant une exécution bout en bout plus légère et entièrement intégrée au sein de MEDomics. Le modèle entraîné est ensuite enregistré et réutilisé dans les **Évaluation** et **Application** modules.

Cette option est conçue pour :

* Maintenir la continuité du flux de travail au sein de la plate-forme
* Réduire la charge informatique
* Permettre une transition fluide vers l'évaluation et le déploiement

#### [<mark style="color:$primary;">Option 2 : Reproduction sur l'ensemble de données complet (configuration étendue)</mark>](#option-2-full-dataset-reproduction-extended-configuration-1)

Cette configuration optionnelle exécute le même pipeline sur l'ensemble de données complet (`homr_any_visit.csv`), tout en adaptant des paramètres spécifiques pour tenir compte des contraintes de mémoire et d'évolutivité au sein de MEDomics.

Étant donné que le pipeline complet a déjà été détaillé dans l'Option 1, aucune modification structurelle n'est requise. En revanche, cette option implique :

* Mettre à jour les **nœuds Dataset** pour utiliser l'ensemble de données complet plutôt que la version réduite.
* Ajuster la **configuration Train Model** pour mieux gérer les contraintes d'évolutivité au sein de la plate-forme.
* Génération de **notebooks de code** pour permettre l'entraînement du modèle en dehors de MEDomics en utilisant des paramètres qui correspondent davantage à la configuration de l'étude originale.

Cette option permet un alignement méthodologique plus approfondi avec l'étude originale tout en assurant la reproductibilité en dehors de l'environnement MEDomics.

## <mark style="color:$primary;">Option 1 : Pipeline intégré à la plate-forme</mark>

Cette sous-section propose un tutoriel pratique pour créer la scène de machine learning nous permettant d'entraîner un modèle Random Forest en utilisant le `Learning_homr_any_visit_10pct.csv` jeu de données.

{% hint style="info" %}
Si c'est la première fois que vous utilisez le Module Learning, nous recommandons de consulter la documentation dédiée, qui fournit des explications détaillées sur la [création de scènes](https://medomicslab.gitbook.io/medomics-docs/tutorials/development/learning-module#how-to-create-a-scene) et [l'architecture du module](https://medomicslab.gitbook.io/medomics-docs/tutorials/development/learning-module#the-learning-modules-architecture).
{% endhint %}

Nous commençons par créer une nouvelle scène.

Cliquez sur l'icône du **Module Learning** L'interface de création de scène apparaîtra, où vous pourrez nommer la scène `homr_scene`.

{% hint style="warning" %}
&#x20;Ne **pas** sélectionner la *configuration Experimental Scene.* Comme nous disposons déjà d'une stratégie de modélisation prédéfinie (Random Forest), il n'est pas nécessaire d'utiliser l'Experimental Scene, qui est conçue pour explorer et comparer automatiquement plusieurs modèles.

Vous pouvez en apprendre davantage sur la configuration de l'Experimental Scene [ici](https://medomicslab.gitbook.io/medomics-docs/tutorials/development/learning-module/experimental-scene).
{% endhint %}

L'étape suivante consiste à accéder à la nouvelle scène que vous avez créée. Dans votre espace de travail, vous trouverez un dossier nommé `homr_scene`. Cliquez dessus et accédez au fichier `homr_scene.medml` fichier.&#x20;

Ceci est un aperçu du pipeline que nous aurons à la fin de cette section. Dans les sections suivantes, chaque nœud sera décrit individuellement.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2F1ijvcu9518UCkW2sLBnW%2Fimage%20(35).png?alt=media&#x26;token=78eaee3a-6189-4df0-8557-c268ef81bf1b" alt=""><figcaption><p>Aperçu de la scène</p></figcaption></figure>

Suivez les étapes illustrées dans la figure pour créer une scène :

1. Double-cliquez sur l'icône **Module Learning** .
2. Cliquez sur **Créer la scène**.
3. Entrez le nom de la page : `homr_scene`.
4. Assurez-vous que le **configuration Experimental Scene.** bouton bascule est désactivé.
5. Cliquez sur **Créer** pour générer la scène.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2F27dDTSvwTMfoHeksswiD%2Fimage%2026.png?alt=media&#x26;token=de4efb34-b24e-4b12-b9eb-68952c0820b1" alt="" width="375"><figcaption><p>Créer la scène "homr_scene"</p></figcaption></figure>

Après la création de la scène, elle apparaît dans le dossier **EXPERIMENTS** sous le nom `homr_scene`.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FiKUWEDiH5RGO6IZhBIMB%2Fimage%2027.png?alt=media&#x26;token=fa62aad3-3c3c-4d5b-a4b7-9311f7c9ebd9" alt="" width="337"><figcaption><p>dossier homr_scene dans Experiments</p></figcaption></figure>

À l'intérieur de ce dossier de scène, il y a 3 éléments :

* **models/** : Ce dossier contient tous les modèles entraînés générés lors de l'expérience. Chaque fois qu'un modèle est entraîné et enregistré, il sera stocké ici.
* **notebooks/** : Ce dossier contient les notebooks générés associés à la scène. Ces notebooks vous permettent de reproduire ou d'étendre l'expérience en dehors de MEDomics.
* **homr\_scene.medml** : Il s'agit du fichier principal de la scène où le pipeline est construit et configuré. Tous les nœuds, connexions et paramètres de l'expérience sont définis dans ce fichier.

Cliquez sur l'icône du `homr_scene.medml` fichier. Maintenant, nous pouvons commencer la configuration des nœuds. Les nœuds sont disponibles dans la partie gauche de l'écran, sous 3 sections : *Initialisation*, *Entraînement* et *Analyse.*

{% hint style="info" %}
Si vous ne voyez pas la liste des nœuds disponibles, cliquez sur le **bouton de menu bleu** situé en haut à gauche de la scène (l'icône avec trois lignes horizontales).

Ce bouton bascule le panneau des nœuds et vous permet d'afficher ou de masquer la liste des nœuds.
{% endhint %}

### Configuration des nœuds

Nous présenterons les nœuds par section (*Initialisation*, *Entraînement* et *Analyse*).

#### Nœuds d'initialisation

{% hint style="info" %}
Vous pouvez en apprendre davantage sur les nœuds d'initialisation [ici](https://medomicslab.gitbook.io/medomics-docs/tutorials/development/learning-module/initialization).
{% endhint %}

* **Nœud Dataset**: Ce nœud est utilisé deux fois dans cette expérience pour représenter les deux ensembles de prédicteurs définis dans l'étude POYM : **AdmDemo** et **AdmDemoDx**.\
  Créez deux *nœuds Dataset*, définissez-les tous deux au format *MEDomics Standard* et nommez-les en conséquence, comme indiqué dans la figure ci-dessous. Chaque nœud correspond à un groupe distinct de prédicteurs et s'appuie sur les balises de colonnes créées précédemment.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FUDQYZesKbjXWduS2BXmw%2FDataset_nodes_annot%C3%A9e.png?alt=media&#x26;token=95d22a4f-cd9e-4e40-ac02-7c919394f129" alt="" width="188"><figcaption><p>Configuration des nœuds Dataset</p></figcaption></figure>

Aller plus loin, sélectionnez le `homr_any_visit.csv` fichier pour chaque nœud Dataset, et pour chaque ID (vu ci-dessus), appliquez les balises correspondantes, et définissez la variable cible comme "**oym**". Cette étape de configuration est illustrée dans la deuxième image ci-dessous.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FxyUwN6PZpaWeSaxejRH4%2FNodesConfig_annot%C3%A9e.png?alt=media&#x26;token=76e63bf6-d993-4d3f-88bf-36cde08b03c2" alt="" width="548"><figcaption><p>Configuration des nœuds Dataset</p></figcaption></figure>

* **Nœud Split**: Configurez la *Outer Split* pour utiliser la validation croisée comme méthode de séparation avec *5 folds*. Cette séparation externe définit la boucle externe d'une ***configuration de validation croisée imbriquée en 5 folds*** ; les séparations internes seront spécifiées plus tard dans le *configuration Train Model* nœud.\
  Sous *Paramètres généraux*, réglez le *random\_state* à 101, comme utilisé dans l'étude POYM originale, pour garantir la reproductibilité.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FtPiBmicRybvGCIYvOT5z%2FSplit_annot%C3%A9e.png?alt=media&#x26;token=1acb09b3-c235-4332-830c-fccf2a6e6c6d" alt="" width="275"><figcaption><p>Configuration du nœud Split</p></figcaption></figure>

{% hint style="info" %}
Si vous n'êtes pas familier avec la méthode de validation croisée imbriquée en apprentissage automatique, vous pouvez consulter ce [lien](https://machinelearningmastery.com/nested-cross-validation-for-machine-learning-with-python/) pour plus d'informations.
{% endhint %}

* **Nœud Model**: Sélectionnez *Random Forest* comme algorithme d'apprentissage automatique.&#x20;

> L'étude originale s'appuie sur *SKRanger*, une implémentation en C++ de l' *Random Forest* algorithme, tandis que notre *Module Learning* est basé sur *PyCaret*, qui s'appuie sur *scikit-learn*.\
> Pour assurer la cohérence méthodologique, nous utilisons donc les hyperparamètres équivalents les plus proches disponibles dans *PyCaret* pour reproduire ceux utilisés dans *SKRanger*. Bien que des différences d'implémentation mineures subsistent, cette approche nous permet de rester aussi proches que possible de la configuration expérimentale originale.

<mark style="color:vert;">**Configuration initiale du modèle**</mark>

La spécification de valeurs initiales pour les hyperparamètres dans le nœud Model n'est **pas obligatoire**.

Quel que soit les valeurs initiales définies (y compris les valeurs par défaut), le modèle sera finalement entraîné et optimisé en utilisant la **grille d'hyperparamètres personnalisée** définie dans le nœud Train Model.

Par conséquent, vous pouvez omettre une initialisation détaillée si vous le souhaitez. Cependant, il est essentiel de vous assurer que les hyperparamètres suivants sont sélectionnés dans le nœud Model, car seuls les hyperparamètres sélectionnés seront disponibles pour l'optimisation dans le nœud Train Model.

<mark style="color:vert;">**Hyperparamètres à sélectionner**</mark>

Les hyperparamètres suivants doivent être sélectionnés pour garantir qu'ils soient optimisés :

* **`n_estimators`** — Nombre d'arbres de décision dans la Random Forest.
* **`min_samples_leaf`** — Nombre minimum d'échantillons d'entraînement requis dans chaque nœud terminal (équivalent à `min_node_size` dans SKRanger).
* **`max_features`** — Nombre de caractéristiques sélectionnées aléatoirement à chaque séparation (équivalent à `MTRY` dans SKRanger).
* **`class_weight`** — Stratégie de gestion du déséquilibre des classes (équivalent à `weight` dans SKRanger).
* **`random_state`** — Graine de reproductibilité (équivalent à `seed` dans SKRanger).

{% hint style="warning" %}
Les valeurs spécifiques définies à ce stade n'impactent pas le modèle final optimisé, car le processus d'entraînement s'appuiera sur la grille d'hyperparamètres personnalisée définie dans la section suivante.

Cependant, vous pouvez les initialiser en utilisant les valeurs indiquées dans la figure ci-dessous pour plus de cohérence.
{% endhint %}

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FCsNYxAkvgDfPsyDOmZ31%2Fimage%2018.png?alt=media&#x26;token=ac126dac-c287-4a55-ac92-bb579d406e23" alt="" width="530"><figcaption><p>Configuration des hyperparamètres du modèle</p></figcaption></figure>

#### Nœuds d'entraînement

* **Train Model :** Dans cette section, nous n'utilisons que le nœud Train Model. Il s'agit de la partie la plus lourde en configuration du tutoriel, donc assurez-vous de suivre chaque étape attentivement.&#x20;

Assurez-vous d'activer le **bouton bascule Tune Model** comme montré 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%2FPM2GTLOVMRiP6wzwjzAs%2Fimage%20(38).png?alt=media&#x26;token=747a79a1-11d3-42ae-abb2-a3ceec36e422" alt=""><figcaption><p>Configuration du nœud Train Model</p></figcaption></figure>

<mark style="color:vert;">**Configuration de l'optimisation des hyperparamètres**</mark>

Lors de l'activation du **bouton bascule Tune Model** bascule dans le *configuration Train Model* nœud, vous remarquerez que l'option **"Utiliser l'espace de recherche d'hyperparamètres par défaut de PyCaret"** est automatiquement activée.

Puisque nous définissons une grille de réglage personnalisée, l'espace de recherche par défaut de PyCaret n'est pas requis. Veillez à **désactiver cette bascule**.

Une fois désactivée, la section Grille de réglage personnalisée pour le modèle Random Forest devient disponible, vous permettant de configurer manuellement les hyperparamètres.&#x20;

La figure ci-dessous illustre ces étapes.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2Fe5BdmfCaPgzzu8lU8Vy3%2Fimage%20(39).png?alt=media&#x26;token=5219648e-bc0b-4a93-9c67-a4715f79cf27" alt=""><figcaption><p>Grille de réglage personnalisée pour notre modèle</p></figcaption></figure>

\
Cliquez sur le bouton plus à côté de Random Forest. Chaque hyperparamètre sélectionné dans le nœud Model apparaîtra dans la grille, où vous pouvez spécifier soit :

* Une plage (début, fin, pas), ou
* Des valeurs discrètes.

<mark style="color:vert;">**Configuration de la grille personnalisée**</mark>

Définissez les hyperparamètres comme suit :

**1️. `n_estimators`**

Nombre d'arbres dans la forêt.

* Valeurs de la plage : {128, 256, 384, 512, 640, 768, 896, 1024}
* Début : **128**
* Fin : **1024**
* Pas : **128**

**2️. `min_samples_leaf`**

Nombre minimum d'échantillons requis dans un nœud feuille.

* Valeurs de la plage : {10, 20, 30, 40, 50, 60, 70, 80}
* Début : **10**
* Fin : **80**
* Pas : **10**

**3️. `max_features`**

Nombre de caractéristiques considérées à chaque séparation.

* Valeurs discrètes :\
  `10, 15, 20`

**4️. `class_weight`**

Stratégie de gestion du déséquilibre des classes.

* Valeurs discrètes :\
  `None, balanced, balanced_subsample`

{% hint style="warning" %}
L'optimisation de `class_weight` diffère de l'étude originale. Pour cette preuve de concept, nous adoptons une configuration simplifiée afin d'assurer la stabilité et la clarté au sein de l'environnement MEDomics.
{% endhint %}

<mark style="color:vert;">**Options Tune Model**</mark>&#x20;

Après avoir défini la grille d'hyperparamètres personnalisée, configurez les options de réglage comme suit :&#x20;

**1. `fold`**

Définissez le **fold** paramètre sur **5**.

Cela correspond au nombre de folds internes utilisés dans notre **configuration de validation croisée imbriquée en 5 folds** configuration.

**2. `search_library`**

Définissez le **search\_library** paramètre sur **"scikit-learn"**.

Dans l'étude originale, l'optimisation des hyperparamètres a été réalisée en utilisant **Optuna** avec 100 essais. Cependant, au sein de MEDomics, Optuna est actuellement pris en charge uniquement via une stratégie de recherche aléatoire.

Pour cette preuve de concept, nous utilisons plutôt **Scikit-Learn**, car il permet une recherche structurée et contrôlée **par grille** sur des plages d'hyperparamètres prédéfinies.

**3. `search_algorithm`**

Définissez le **search\_algorithm** paramètre sur **"grid"**.

Cela garantit que toutes les combinaisons contenues dans la grille d'hyperparamètres définie sont évaluées de manière systématique.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FBGOvXxMfay0jUbCHXZfj%2Fimage%20(5).png?alt=media&#x26;token=8f4037de-78bb-4305-a590-affab986c613" alt=""><figcaption><p>Options Tune Model</p></figcaption></figure>

#### Nœuds d'analyse

* Aucun changement requis pour le *nœud Analyze*.

#### <mark style="color:rouge;">Création du pipeline</mark>&#x20;

{% hint style="info" %}
Si vous n'êtes pas familier avec les ports d'entrée/sortie (I/O) de chaque nœud, veuillez vous référer à la [documentation](https://medomicslab.gitbook.io/medomics-docs/tutorials/development/learning-module#available-nodes-summary-table) pour plus d'informations.
{% endhint %}

L'étape finale avant l'exécution de la scène consiste à connecter les nœuds pour former le pipeline.

1. Connectez les **nœuds Dataset** au nœud **Split** .
2. Connectez les **Split** nœud à la première entrée du **configuration Train Model** .
3. Connectez les **nœud Model** à la deuxième entrée du **configuration Train Model** .
4. Enfin, connectez le **configuration Train Model** nœud au **nœud Analyze** pour afficher les résultats.

Assurez-vous que toutes les connexions sont correctement établies avant de lancer la scène.

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

{% hint style="info" %}
Un aperçu de chaque bouton du Module Learning, ainsi que de sa fonctionnalité correspondante, est disponible dans la documentation. Vous pouvez y accéder [ici](https://medomicslab.gitbook.io/medomics-docs/tutorials/development/learning-module#id-4.-utils-menu).
{% endhint %}

Une fois la scène entièrement configurée, cliquez sur le bouton Run situé en haut à droite de l'interface, comme souligné 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%2FKMY5pcxx8lcX2FeXr7fJ%2Fimage%2028.png?alt=media&#x26;token=2290b24a-17f3-47b4-8359-16a3a3422a28" alt="" width="563"><figcaption><p>Exécuter la scène </p></figcaption></figure>

Vous pouvez suivre la progression à l'aide de la barre de progression affichée en bas de l'interface.

Lorsque l'exécution est terminée, le bouton *Mode Analyse* devient actif. Cliquez dessus pour ouvrir le panneau d'analyse en bas de l'écran, où les résultats pour **Pipeline 1** et **Pipeline 2** seront affichés.

Comme montré dans la figure ci-dessous :

* **Pipeline 1** correspond au nœud **AdmDemo** dataset.
* **Pipeline 2** correspond au nœud **AdmDemoDx** dataset.

Sélectionnez les résultats de performance des modèles pour consulter et comparer leurs métriques d'évaluation.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2F4u5gz6esTebGl2lmRTkD%2Fimage%20(6).png?alt=media&#x26;token=15ad0dc8-9f33-4db8-b256-52416d3971dd" alt=""><figcaption><p>Résultats du pipeline en mode Analyse</p></figcaption></figure>

Voici quelques-uns des résultats obtenus à partir du pipeline AdmDemo :&#x20;

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FbhiJBY8qKC91El5ZuCqU%2Fimage%2020.png?alt=media&#x26;token=c3ca97b2-cb53-4bb6-a6fe-d4a4a298ebef" alt=""><figcaption><p>Statistiques des métriques pour le modèle AdmDemo</p></figcaption></figure>

Et, les résultats du pipeline AdmDemoDx :&#x20;

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2Fj0xQDAcDHYc0H1GIPmO1%2Fimage%20(9).png?alt=media&#x26;token=2af41fa5-6e5e-4edc-8a7f-9b3bd61ca146" alt=""><figcaption><p>Statistiques des métriques pour le modèle AdmDemoDx</p></figcaption></figure>

#### <mark style="color:$success;">Résultats</mark>

Les modèles reproduits montrent une légère baisse de performance (dans MEDomics) par rapport à l'étude POYM originale.

Pour le modèle AdmDemo, l'AUC est passée de 0,876 dans l'étude originale à 0,8565 lors de l'utilisation de l'ensemble de données complet avec un réglage d'hyperparamètres limité. Lors de l'application de la stratégie de réglage complète sur l'ensemble d'apprentissage du jeu de données réduit à 10 %, l'AUC a encore diminué à 0,8489.

Plusieurs facteurs expliquent ces différences :

* **Réduction de l'ensemble de données :** L'entraînement sur l'ensemble d'apprentissage représentant 10 % des données réduit la capacité du modèle à généraliser, en particulier pour les interactions complexes entre les caractéristiques.
* **Configuration du poids des classes :** Les différences dans les stratégies de pondération des classes influencent les frontières de décision et le compromis sensibilité-spécificité.
* **Contraintes d'évolutivité dans MEDomics :** Les limites de mémoire et de calcul de la plate-forme ont nécessité des adaptations méthodologiques qui peuvent légèrement impacter les performances.

Dans l'ensemble, malgré ces contraintes, les modèles reproduits atteignent des niveaux de performance proches de l'étude originale, confirmant la validité de l'implémentation du pipeline.

<mark style="color:vert;">**Finaliser et enregistrer le modèle**</mark>&#x20;

Afin d'évaluer et de déployer notre modèle, cliquez sur le bouton *Finaliser & Enregistrer le modèle* visible dans la présentation du pipeline. Assurez-vous d'enregistrer le **modèle AdmDemo** (Pipeline 1). Vous pouvez lire ce [documentation](https://medomicslab.gitbook.io/medomics-docs/tutorials/development/learning-module/analysis#finalize-and-save-model) pour plus d'informations sur la marche à suivre.

{% hint style="warning" %}
Enregistrez la scène et les résultats en utilisant le bouton Save.
{% endhint %}

## <mark style="color:$primary;">Option 2 : Reproduction sur l'ensemble de données complet (configuration étendue)</mark>

Cette configuration optionnelle exécute le même pipeline décrit dans **Option 1**, mais sur l'ensemble de données complet (`homr_any_visit.csv`). L'objectif est de se rapprocher des résultats de l'étude POYM originale tout en tenant compte des contraintes de mémoire et d'évolutivité au sein de MEDomics.

Il est **fortement recommandé de créer une scène séparée** pour cette configuration afin d'éviter d'écraser ou de modifier la configuration utilisée dans l'Option 1.

Vous pouvez nommer cette nouvelle scène : `exp-with-all-data.medml`.

{% hint style="danger" %}
Assurez-vous de **sauvegarder les deux scènes** (la scène du jeu de données réduit et la scène du jeu de données complet) pour préserver la reproductibilité et permettre des comparaisons futures.
{% endhint %}

#### <mark style="color:vert;">Aperçu du flux de travail</mark>

Pour cette option, vous devrez :

* Réutiliser la même architecture de pipeline que dans l'Option 1.
* Remplacer l'ensemble de données réduit (`Learning_homr_any_visit_10pct.csv`) par l'ensemble de données complet (`homr_any_visit.csv`) dans les nœuds Dataset.
* Ajuster la configuration Train Model pour mieux gérer les contraintes d'évolutivité au sein de la plate-forme.

Aucune modification structurelle du pipeline n'est requise.

#### <mark style="color:vert;">Configuration du nœud Dataset</mark>

Le nœud Dataset est utilisé deux fois pour représenter les deux ensembles de prédicteurs définis dans l'étude POYM :

* **AdmDemo**
* **AdmDemoDx**

Pour les deux nœuds Dataset :

1. Sélectionnez `homr_any_visit.csv`.
2. Conserver le format en tant que *MEDomics Standard*.
3. Appliquez les balises de colonnes appropriées (`adm`, `demo`, `dx`) comme défini précédemment.
4. Définissez la variable cible sur **`oym`**.

{% hint style="warning" %}
Pour que cette configuration fonctionne, vous devez réappliquer les balises au `homr_any_visit.csv` jeu de données dans le Module Input.
{% endhint %}

#### <mark style="color:vert;">Adaptation de Train Model</mark>

En raison des contraintes d'évolutivité au sein de MEDomics, un réglage complet des hyperparamètres peut ne pas être réalisable lors de l'utilisation de l'ensemble de données complet.

Dans cette configuration :

* La stratégie de réglage peut être simplifiée (par exemple, en réglant un sous-ensemble réduit d'hyperparamètres tels que `max_features` seulement). Pour ce faire, sélectionnez un seul hyperparamètre au lieu de trois dans la configuration du nœud Model.
* Le reste du pipeline reste inchangé.

Ces ajustements permettent à l'expérience de s'exécuter dans les limites de calcul de la plate-forme tout en maintenant la cohérence méthodologique.

{% hint style="info" %}
En conséquence, les résultats présentés ci-dessous ont été obtenus en ne réglant qu'un seul hyperparamètre : **`max_features`** en utilisant les valeurs de la grille ci-dessus.
{% endhint %}

#### <mark style="color:vert;">Exécutez la scène et analysez les résultats</mark>

Une fois la scène configurée, appuyez sur le bouton Run et suivez le processus d'exécution via la barre de progression en bas. Sélectionnez les résultats de performance des modèles :

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FfPvVuyZpSFs1emrxaqM4%2Fimage%2019.png?alt=media&#x26;token=72f0137a-32a1-453f-9fdb-c9db200b525a" alt=""><figcaption><p>Résultats AdmDemo et AdmDemoDx</p></figcaption></figure>

Le modèle **AdmDemo** a atteint une AUC de **0.8565**, comparé à **0.876** rapporté dans l'étude originale. De même, le modèle **AdmDemoDx** a atteint une AUC de **0.8908**, comparé à **0.905** dans l'étude de référence.

Cet écart de performance peut s'expliquer principalement par deux facteurs :

* Différences dans la `class_weight` configuration
* Ne régler qu'un hyperparamètre (`max_features`) au lieu des quatre hyperparamètres optimisés dans l'étude originale

Puisque cette option utilise l'ensemble de données complet, les résultats sont supérieurs à ceux obtenus dans l'Option 1.

Le tableau comparatif ci-dessous présente une comparaison des AUC des différentes configurations évaluées dans la section Module Learning.

| nœud Model    | Étude originale | Ensemble de données complet – Réglage 1 HP | Jeu de données 10 % – Réglage complet |
| ------------- | --------------- | ------------------------------------------ | ------------------------------------- |
| **AdmDemo**   | 0.876           | 0.8565                                     | 0.8489                                |
| **AdmDemoDx** | 0.905           | 0.8908                                     | 0.875                                 |

### <mark style="color:vert;">Génération de notebook</mark>

Pour dépasser les limitations d'évolutivité de MEDomics, l'étape finale de l'Option 2 consiste à générer le notebook associé au pipeline entraîné. Cela permet d'exécuter la même expérience en externe avec une configuration qui correspond davantage à l'étude originale.

Pour générer le notebook, cliquez simplement sur le bouton *Générer* .

{% hint style="success" %}
Si vous n'exécutez pas la scène avec l'ensemble de données complet dans MEDomics, nous fournissons le notebook généré directement dans cette section. Toutes les étapes et directives requises sont incluses dans le notebook lui-même.
{% endhint %}

Dans le notebook, nous reproduisons d'abord la configuration MEDomics de l'étape précédente, puis incorporons progressivement les éléments manquants de la configuration de l'étude originale :

1. **Recherche par grille (scikit-learn) :** Régler tous les hyperparamètres définis par l'étude en utilisant la recherche par grille, qui évalue de manière exhaustive toutes les combinaisons prédéfinies.
2. **Optuna (100 essais) :** Effectuer le réglage des hyperparamètres en utilisant Optuna avec 100 essais. Optuna est un cadre d'optimisation adaptatif (par ex., TPE) qui explore l'espace des hyperparamètres plus efficacement que la recherche par grille en priorisant les configurations prometteuses en fonction des essais précédents.

<mark style="color:violet;">Le notebook est disponible à ce lien OneDrive. Vous pouvez le télécharger</mark> [<mark style="color:violet;">ici</mark>](https://usherbrooke-my.sharepoint.com/:u:/g/personal/kalm7073_usherbrooke_ca/IQDePwIl15EAQ5OpcWyyzzAuAecHdkoINCIEHS_C3GkQdUs?e=BndxAW)<mark style="color:violet;">.</mark>

> Cela conclut notre section Module Learning. Passons au Module Évaluation pour tester notre modèle enregistré !
