# Entraînement

Maintenant que vous avez initialisé les composants principaux de votre expérience, il est temps de définir le processus d'entraînement de votre expérience. À l'intérieur, vous pouvez utiliser deux nœuds essentiels :

* **Entraîner le modèle**: Définissez le processus d'apprentissage de votre pipeline.
* **Combiner les modèles**: Combinez des modèles provenant de différents pipelines.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FOs5oV1qw7cHRmE8O7fed%2Fimage.png?alt=media&#x26;token=b2d791fe-ae25-4124-a1a8-4125a68fe919" alt=""><figcaption><p>Exemple d'une boîte d'initialisation</p></figcaption></figure>

## **Entraîner le modèle : nœud d'entraînement et d'optimisation du modèle**

Ce nœud offre un contrôle complet sur le développement du modèle via quatre fonctions clés :

1. **Entraînement du modèle de base**
2. **Ajustement des hyperparamètres**
3. **Ensembles de modèles**
4. **Calibration des probabilités**
5. **Optimisation du seuil**

Les options de configuration correspondent à [PyCaret `create_model()` fonction](https://pycaret.readthedocs.io/en/stable/api/classification.html#pycaret.classification.create_model) paramètres (à l'exclusion des `paramètres de l'estimateur` , qui sont définis dans le [nœud Modèle](https://medomicslab.gitbook.io/medomics-docs/v1-fr/tutorials/development/initialisation#model-node-configure-your-machine-learning-algorithm)).

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FZMpnjYYEKMnOr71nQqtk%2FBreakdownTrainModel2Node.png?alt=media&#x26;token=5ab0f9bc-b036-4856-8198-33ac6ca1fea5" alt=""><figcaption><p>Répartition du nœud Entraîner le modèle</p></figcaption></figure>

Dans le flux de travail d'apprentissage automatique, le nœud Entraîner le modèle est utilisé dans la section montrée ci-dessous :

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2F2lxn3z8Qjk9MsLkr79e7%2FTrainModelNodeUsageNew.png?alt=media&#x26;token=d00f7186-2e27-4d11-870d-5a81cf719a7f" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Lecture [suggérée](https://remykarem.github.io/blog/evaluation-metrics.html) pour comprendre comment fonctionnent les métriques.
{% endhint %}

#### 1. Entraînement du modèle de base :

Dans PyCaret, le processus d'entraînement du modèle de base agit comme un pont automatisé entre les données cliniques et les informations prédictives. Pour les informaticiens, cela représente une couche d'abstraction au-dessus de `scikit-learn` qui gère le cycle de vie de sélection des modèles ; pour les professionnels de la santé, c'est un « diagnostic » standardisé de vos données, identifiant quelle approche mathématique capture le mieux les résultats des patients.

Le processus commence par le nœud Jeu de données, qui établit un pipeline reproductible en traitant les défis des données médicales tels que les valeurs manquantes (imputation) et l'encodage des variables catégorielles (par ex., la démographie des patients). Une fois initialisé, l'objectif principal est d'identifier une architecture « de base » performante avant un affinage ultérieur.

Les options suivantes permettent aux utilisateurs d'équilibrer efficacité computationnelle et rigueur clinique :

* Comparer les modèles (utilisé dans [Scène expérimentale](https://medomicslab.gitbook.io/medomics-docs/v1-fr/tutorials/development/learning-module/scene-experimentale)) : Cela sert d'évaluation « de haut en bas », entraînant tous les algorithmes disponibles (par ex., régression logistique, forêt aléatoire, XGBoost) sur le même ensemble de données. Il fournit une grille de scores de métriques telles que l'AUC et le F1-score, et identifie quels modèles équilibrent le mieux la sensibilité (détecter les vrais cas) et la spécificité (éviter les fausses alertes).
* Entraînement : Ceci est utilisé lorsqu'un algorithme spécifique est préféré — peut-être parce qu'il est très interprétable, comme un arbre de décision, ou connu pour ses bonnes performances dans des contextes cliniques. Il entraîne un seul modèle en utilisant une validation croisée k-fold, un sous-échantillonnage aléatoire ou le bootstrap, un processus qui remélange les données à plusieurs reprises pour s'assurer que les résultats ne sont pas simplement un artefact statistique de l'échantillon de patients actuel.
* Mesures de performance : Les utilisateurs peuvent prioriser des métriques spécifiques en fonction de l'objectif clinique. MEDomics utilise les métriques suivantes pour évaluer la performance du modèle : AUC, Exactitude, Sensibilité (Rappel), Spécificité, F1-score, VPN et VPP.
* Reproductibilité du pipeline : Chaque transformation appliquée lors de l'entraînement de base est stockée dans un pipeline. Cela garantit que lorsqu'un informaticien déploie le modèle, celui-ci traite les nouvelles données de patients « non vues » avec les mêmes étapes utilisées lors de l'entraînement initial. Consultez [ici](https://medomicslab.gitbook.io/medomics-docs/v1-fr/tutorials/development/medmodel#id-1.-serialized-scikit-learn-pipeline) pour plus de détails.

#### 2. Ajustement des hyperparamètres :

Activez cette fonctionnalité pour optimiser la performance de votre modèle. Cette fonctionnalité implémente directement [PyCaret `tune_model()` fonction](https://pycaret.readthedocs.io/en/stable/api/classification.html#pycaret.classification.tune_model). Les paramètres de la fonction peuvent être définis dans le nœud.

**Options d'ajustement :**

* **Grille d'ajustement par défaut de PyCaret** : Le système va automatiquement :
  * Tester des plages de paramètres optimales
  * Appliquer la validation croisée
  * Retourner la configuration la plus performante
* **Grille d'ajustement personnalisée :** Pour un contrôle avancé :
  * Sélectionner les paramètres à ajuster parmi les options de votre modèle
  * Spécifier soit :
    * Des valeurs exactes à tester (discrètes)
    * Des plages de recherche (continues)

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2F5el1m6tkLqzPNv4owzfj%2FBreakdownTrainModel3Node.png?alt=media&#x26;token=11af8b7c-6e48-415a-b02d-a4b91ab63a21" alt=""><figcaption><p>Répartition de la fonctionnalité d'ajustement du modèle</p></figcaption></figure>

#### 3. **Ensembles de modèles**:

Activez pour mettre en ensemble votre modèle entraîné. Cette fonctionnalité implémente directement [PyCaret `ensemble_model()` fonction](https://pycaret.readthedocs.io/en/stable/api/classification.html#pycaret.classification.ensemble_model).

**Configuration :**

* **Sélectionnez la méthode d'ensemble (**`méthode`**):**
  * *Bagging* : Entraînement en parallèle avec des échantillons bootstrap
  * *Boosting* : Entraînement séquentiel avec correction des erreurs
* **Sélectionnez le nombre d'estimateurs** `n_estimators`**:** Nombre de modèles à assembler (par défaut : 10)

#### 2. **Calibration des probabilités**:

Améliorer la fiabilité des probabilités de classification. Cette fonctionnalité implémente directement [PyCaret `calibrate_model()` fonction](https://pycaret.readthedocs.io/en/stable/api/classification.html#pycaret.classification.calibrate_model).

**Pour configurer, choisissez la méthode de calibration :**

* *Régression logistique* : Mieux pour les petits ensembles de données (< 1 000 échantillons)
* *Régression isotone* : Plus flexible pour des distributions complexes

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FaFJjm25Jh5z2sfKyQYkd%2FBreakdownTrainModel1Node.png?alt=media&#x26;token=d56a211c-9cb8-404e-afb1-604ddf58a939" alt=""><figcaption><p>Comment contrôler les fonctionnalités de Entraîner le modèle dans le nœud</p></figcaption></figure>

#### 5. Optimisation du seuil :

{% hint style="danger" %}
L'optimisation du seuil n'est pas prise en charge pour les modèles suivants : 'gbc', 'ada', 'et', 'catboost' et 'rf'. L'utilisation de ces modèles provoque [cette erreur](https://github.com/pycaret/pycaret/issues/3915), qui n'a pas encore été résolue.
{% endhint %}

L'optimisation du seuil est le processus d'ajustement du point de coupure qui transforme le score de probabilité d'un modèle en une décision finale. Cela signifie déplacer la frontière de décision pour maximiser une métrique spécifique ; en d'autres termes, c'est une manière de calibrer le modèle pour qu'il soit soit plus « prudent » soit plus « sensible » en fonction du problème clinique étudié. Elle implémente [l' *optimize\_threshold()* fonction](https://pycaret.readthedocs.io/en/stable/api/classification.html#pycaret.classification.optimize_threshold).

**Options d'optimisation :**

{% hint style="info" %}
Lecture [suggérée](https://remykarem.github.io/blog/evaluation-metrics.html) pour comprendre comment fonctionnent les métriques.
{% endhint %}

* Sélection de la métrique : Vous pouvez demander à MEDomics de trouver le seuil qui maximise la meilleure métrique sélectionnée parmi les options suivantes :&#x20;
  * Indice de Youden
  * Exactitude
  * Exactitude équilibrée (BAC)
  * F1-score
  * Coefficient de corrélation de Matthews (MCC)
* Sensibilité vs. Spécificité : Les cliniciens peuvent choisir un seuil qui privilégie le rappel pour détecter toute progression potentielle, ou la précision pour minimiser les procédures de suivi inutiles chez les patients qui sont en réalité stables.
* Ajustement de la fonction de coût : En santé, un faux négatif (passer à côté d'une maladie) coûte souvent plus cher qu'un faux positif ; le seuil est optimisé pour minimiser ce risque clinique total.
* Cartographie des probabilités : Au lieu d'un seuil par défaut de 0,5, le système visualise le « seuil de discrimination » pour montrer exactement comment la performance change lorsque vous déplacez la frontière à travers votre cohorte de patients. Voir l'exemple suivant :

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FUvfG4m2Hyn1fZc1utruO%2Fnewplot%20(1).png?alt=media&#x26;token=0c8ab55c-a085-48a5-aef7-81fd55980098" alt="" width="563"><figcaption><p>Distribution des seuils de probabilité pour un modèle de régression logistique</p></figcaption></figure>

## Combiner les modèles : Combiner des modèles entraînés

Ce nœud permet des techniques de combinaison de modèles pour améliorer la performance prédictive. Connectez des modèles entraînés depuis des [**Entraîner le modèle**](#train-model-model-training-and-optimization-node) nœuds pour créer soit des ensembles empilés (stacked) soit des prédictions mélangées (blended). Il représente la section de combinaison du flux de travail d'apprentissage automatique, comme montré ci-dessous :

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FI42UIA1s2qnZlFEMmTrG%2FCombineModelsNodeUsageNew.png?alt=media&#x26;token=59e42ce8-a5a0-4b02-92dd-c930a2f19ddb" alt=""><figcaption></figcaption></figure>

**Méthodes de combinaison**

* **Empilement de modèles :** Implémente [PyCaret `stack_models()` fonction](https://pycaret.readthedocs.io/en/stable/api/classification.html#pycaret.classification.stack_models) pour entraîner un méta-modèle sur les sorties des modèles de base :
  * Nécessite au moins 2 modèles
  * Le méta-modèle (par défaut : régression logistique) apprend les poids de combinaison optimaux
* **Mélange de modèles :** Exécute [PyCaret `blend_models()` fonction](https://pycaret.readthedocs.io/en/stable/api/classification.html#pycaret.classification.blend_models) pour moyenner les prédictions :
  * Pas d'entraînement de méta-modèle (exécution plus rapide)
  * Idéal pour les modèles ayant des profils de performance similaires

Notez que le modèle combiné final peut être calibré en utilisant [PyCaret `calibrate_model()` fonction](https://pycaret.readthedocs.io/en/stable/api/classification.html#pycaret.classification.calibrate_model) simplement en activant l'interrupteur Calibrer dans le nœud.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FwAOoR6qKMWSiMpw2Gmv0%2FBreakdownCombineModelsNode.png?alt=media&#x26;token=bbaae056-b579-4f2b-8fd5-eb09d8705e93" alt=""><figcaption><p>Répartition du nœud Combiner les modèles</p></figcaption></figure>

Ceci résume tout ce que vous devez savoir sur la boîte d'entraînement. Bien qu'elle n'utilise qu'un ou deux nœuds, elle est essentielle pour votre expérience ML. À la page suivante, vous apprendrez la boîte d'analyse ainsi que le mode Analyse, qui sont essentiels pour analyser les résultats de votre expérience.
