[PYTHON] Calibrer le modèle avec PyCaret
introduction
- Lors de la classification par binaire, il est bon de décider du seuil et de classer Pos / Neg.
- Puis-je considérer la valeur de sortie du modèle comme la probabilité de devenir positif? C'est une autre affaire.
- Si vous souhaitez faire ce qui précède, vous devrez peut-être calibrer selon le modèle.
- Je souhaite effectuer cet étalonnage à l'aide de PyCaret.
Faire un modèle
- Suivez le tutoriel de PyCaret pour modéliser avec un arbre de décision comme d'habitude.
- Utilisez l'ensemble de données sur le diabète comme ensemble de données.
Chargement des données
from pycaret.datasets import get_data
diabetes = get_data('diabetes')
Modélisation à l'aide d'un arbre de décision
- Je veux classer, alors importez pycaret.classification.
- Et vous pouvez modéliser en spécifiant dt (arbre de décision) dans create_model.
- Observez le modèle créé avec evalutate_model.
#Importer un package de classification
from pycaret.classification import *
clf1 = setup(data = diabetes, target = 'Class variable')
#Créer un arbre de décision
dt = create_model(estimator='dt')
#Visualisation
evaluate_model(dt)
Vérifiez la courbe d'étalonnage avant l'étalonnage
- Cliquez sur le bouton ci-dessous pour vérifier la courbe d'étalonnage.
- L'axe horizontal est l'élément qui a regroupé le résultat de la notation du modèle et l'a arrangé par ordre de valeur.
- L'axe vertical est le pourcentage de données positives qui sont apparues jusqu'à ce bac.
- Dans une situation idéale (*)
- Les données positives apparaissent de manière bien équilibrée par rapport à la valeur de sortie du modèle.
- Le modèle (ligne bleue) s'approche de la ligne diagonale idéale (ligne brisée)
Calibrer le modèle
- Le calibrage est le travail pour rapprocher le modèle actuel de la situation décrite ci-dessus (*).
En abordant la situation de * *, il devient plus facile de considérer la valeur de sortie du modèle comme la probabilité que le résultat de la prédiction soit positif.
- Facile à mettre en œuvre, utilisez calibrate_model.
#étalonner
calibrated_dt = calibrate_model(dt)
#Visualiser
evaluate_model(calibrated_dt)
- Par rapport à la fois précédente, le modèle (ligne bleue) est plus proche de la ligne idéale (ligne brisée).
- Pour le résultat de la notation du modèle
- Nous avons pu créer une augmentation linéaire du taux d'apparition cumulé de Positive à ce moment-là (situation proche de *).
Qu'est-ce que l'étalonnage est effectué?
Quel modèle nécessite un étalonnage "Oui?"
-
Puisque SVM maximise la marge, la valeur de sortie du modèle est concentrée à 0,5 et un étalonnage est nécessaire car la zone autour de la limite de décision est strictement vérifiée. Le point est [cet article](https://yukoishizaki.hatenablog.com/entry/2020/05/24/145155#:~:text=SVM%E3%81%AF%E3%83%9E%E3% Il est discuté dans 83% BC% E3% 82% B8% E3% 83% B3% E3% 82% 92% E6% 9C% 80% E5% A4% A7% E5% 8C% 96), mais qu'en est-il des autres? C'est ça?
-
Laissez la discussion rigoureuse sur le modèle à étalonner aux experts, et dans cet article, j'aimerais écrire une courbe d'étalonnage avant et après l'étalonnage et observer quelles sont les tendances.
-
Régression logistique
-
À l'origine, elle peut être interprétée comme une probabilité positive, elle est donc bien équilibrée même avant l'étalonnage.
-
Cela ne change pas beaucoup après l'étalonnage.
-
SVM du noyau RBF
-
C'est féroce. Comme mentionné dans l'article ci-dessus, il semble que les données soient proches de 0,5 en maximisant la marge.
-
L'étalonnage ne s'améliore pas beaucoup et il semble dangereux de traiter la valeur de sortie du modèle comme une probabilité.
-
Forêt aléatoire
-
La balance semble être bonne dans une certaine mesure avant même l'étalonnage.
-
Cette fois, en raison de l'étalonnage, un pic est apparu autour de 0,7.
-
XGBoost,LightGBM
-
Modéré même avant l'étalonnage. Si vous le calibrez, il se calmera un peu.
algorithme |
Avant l'étalonnage |
Après l'étalonnage |
Logistic Regression |
|
|
RBF SVM |
|
|
Random Forest |
|
|
XGBoost |
|
|
LightGBM |
|
|
finalement
- J'ai essayé de calibrer le modèle avec PyCaret.
- Si vous souhaitez considérer la valeur de sortie du modèle comme une probabilité positive, vous devez vérifier la courbe d'étalonnage.
- Même s'ils sont calibrés, les caractéristiques originales de l'algorithme, telles que la maximisation de la marge de SVM, peuvent être sévères.
- Certains modèles, comme la régression logistique, peuvent être facilement considérés comme des probabilités sans calibration, donc je pense qu'il existe une approche pour les utiliser correctement en fonction de l'application.