web-dev-qa-db-fra.com

Qu'est-ce qu'une courbe d'apprentissage dans l'apprentissage automatique?

Je veux savoir ce qu'est une courbe d'apprentissage en apprentissage automatique. Quelle est la manière standard de le tracer? Je veux dire quels devraient être les axes x et y de mon tracé?

50
Hossein

Il fait généralement référence à un graphique de la précision/erreur de prédiction en fonction de la taille du jeu d'entraînement (c'est-à-dire: comment le modèle parvient-il à prédire la cible à mesure que vous augmentez le nombre d'instances utilisées pour l'entraîner)

learning-curve

Habituellement, les performances de formation et de test/validation sont tracées ensemble afin que nous puissions diagnostiquer compromis biais-variance (c.-à-d. Déterminer si nous avons avantage à ajouter plus de données de formation et évaluer la complexité du modèle en contrôlant la régularisation ou le nombre des fonctionnalités).

bias-variance

41
Amro

Je veux juste laisser une brève note sur cette vieille question pour souligner que la courbe d'apprentissage et la courbe ROC ne sont pas synonymes.

Comme indiqué dans les autres réponses à cette question, une courbe d'apprentissage représente classiquement l'amélioration des performances sur l'axe vertical lorsqu'il y a des changements dans un autre paramètre (sur la axe horizontal), comme la taille de l'ensemble de formation (en apprentissage automatique) ou l'itération/le temps (en apprentissage machine et biologique). Un point saillant est que de nombreux paramètres du modèle changent à différents points du tracé. D'autres réponses ici ont fait un excellent travail pour illustrer les courbes d'apprentissage.

(Il existe également une autre signification de la courbe d'apprentissage dans la fabrication industrielle, qui découle d'une observation dans les années 1930 selon laquelle le nombre d'heures de travail nécessaires pour produire une unité individuelle diminue à un rythme uniforme à mesure que la quantité d'unités fabriquées double. Ce n'est pas vraiment pertinent mais mérite d'être noté pour être complet et pour éviter toute confusion dans les recherches sur le Web.)

En revanche, la courbe des caractéristiques de fonctionnement du récepteur , ou la courbe ROC , ne montrer l'apprentissage; il montre la performance. Une courbe ROC est une représentation graphique des performances du classificateur qui montre le compromis entre l'augmentation des taux positifs réels (sur l'axe vertical) et l'augmentation des taux de faux positifs (sur l'axe horizontal) lorsque le seuil de discrimination du classificateur varie. Ainsi, un seul paramètre (le seuil de décision/discrimination) associé au modèle change à différents points du graphique. Cette courbe ROC ( de Wikipedia ) montre les performances de trois classificateurs différents.

ROC curve, see previous link for CC licensing

Aucun apprentissage n'est décrit ici, mais plutôt des performances par rapport à deux classes différentes de succès/erreur, car le seuil de décision du classificateur est rendu plus clément/strict. En regardant l'aire sous la courbe, nous pouvons voir une indication globale de la capacité du classificateur à distinguer les classes. Cette mesure de zone sous la courbe est insensible au nombre de membres dans les deux classes, donc elle peut ne pas refléter les performances réelles si l'appartenance à la classe est déséquilibrée. La courbe ROC comporte de nombreux sous-titres et les lecteurs intéressés peuvent consulter:

Fawcett, Tom. "Graphiques ROC: Notes et considérations pratiques pour les chercheurs." Machine Learning 31 (2004): 1-38.

Swets, John A., Robyn M. Dawes et John Monahan. "De meilleures décisions grâce à la science." Scientific American (2000): 83.

29
MattBagg

Certaines personnes utilisent la "courbe d'apprentissage" pour se référer à l'erreur d'une procédure itérative en fonction du nombre d'itérations, c'est-à-dire qu'elle illustre la convergence d'une fonction d'utilité. Dans l'exemple ci-dessous, je trace l'erreur quadratique moyenne (MSE) de l'algorithme LMS (moindres carrés moyens) en fonction du nombre d'itérations. Cela illustre la rapidité avec laquelle le LMS "apprend", dans ce cas, la réponse impulsionnelle du canal.

learningcurves.png

14
Steve Tjoa

Fondamentalement, une courbe d'apprentissage automatique vous permet de trouver le point à partir duquel l'algorithme commence à apprendre. Si vous prenez une courbe, puis coupez une pente tangente pour la dérivée au point où elle commence à devenir constante, c'est quand elle commence à développer sa capacité d'apprentissage.

Selon la façon dont vos axes x et y sont mappés, l'un de vos axes commencera à s'approcher d'une valeur constante tandis que les valeurs de l'autre axe continueront d'augmenter. C'est à ce moment que vous commencez à voir un peu d'apprentissage. La courbe entière vous permet à peu près de mesurer la vitesse à laquelle votre algorithme est capable d'apprendre. Le point maximum est généralement lorsque la pente commence à reculer. Vous pouvez prendre un certain nombre de mesures dérivées au point maximum/minimum.

Ainsi, à partir des exemples ci-dessus, vous pouvez voir que la courbe tend progressivement vers une valeur constante. Il commence par exploiter son apprentissage à travers les exemples d'entraînement et la pente s'élargit au point maximum/minimum où il a tendance à se rapprocher de plus en plus de l'état constant. À ce stade, il est capable de prendre de nouveaux exemples à partir des données de test et de trouver des résultats nouveaux et uniques à partir des données. Vous auriez de telles mesures d'axe x/y pour les époques par rapport à l'erreur.

7
meme

Comment pouvez-vous déterminer pour un modèle donné si plus de points de formation seront utiles? Un diagnostic utile pour cela est l'apprentissage des courbes.

• Graphique de la précision/erreur de prédiction par rapport à la taille de l'ensemble d'entraînement (c'est-à-dire: comment le modèle parvient-il à prédire la cible à mesure que vous augmentez le nombre d'instances utilisées pour l'entraîner)

• La courbe d'apprentissage représente classiquement l'amélioration des performances sur l'axe vertical lorsqu'il y a des changements dans un autre paramètre (sur l'axe horizontal), tels que la taille de l'ensemble de formation (en apprentissage automatique) ou l'itération/le temps

• Une courbe d'apprentissage est souvent utile pour tracer une vérification de la validité algorithmique ou améliorer les performances

• Le tracé de la courbe d'apprentissage peut aider à diagnostiquer les problèmes dont votre algorithme souffrira.

Personnellement, les deux liens ci-dessous m'ont aidé à mieux comprendre ce concept

courbe d'apprentissage

Courbe d'apprentissage Sklearn

2

Dans la classe d'apprentissage automatique d'Andrew, une courbe d'apprentissage est le tracé de l'erreur de formation/validation croisée en fonction de la taille de l'échantillon. La courbe d'apprentissage peut être utilisée pour détecter si le modèle présente un biais élevé ou une variance élevée. Si le modèle souffre d'un problème de biais élevé, à mesure que la taille de l'échantillon augmente, l'erreur de formation augmentera et l'erreur de validation croisée diminuera et, enfin, ils seront très proches les uns des autres mais toujours à un taux d'erreur élevé pour les erreurs de formation et de classification . Et l'augmentation de la taille de l'échantillon n'aidera pas beaucoup pour un problème de biais élevé.

Si le modèle souffre d'une variance élevée, car l'augmentation continue de la taille de l'échantillon, l'erreur d'apprentissage continuera d'augmenter et l'erreur de validation croisée continuera à diminuer et ils se retrouveront à un faible taux d'erreur d'apprentissage et de validation croisée. Ainsi, davantage d'échantillons aideront à améliorer les performances de prédiction du modèle si le modèle souffre d'une variance élevée.

2
Emma Zhang

utilisez ce code pour tracer:

# Loss Curves
plt.figure(figsize=[8,6])
plt.plot(history.history['loss'],'r',linewidth=3.0)
plt.plot(history.history['val_loss'],'b',linewidth=3.0)
plt.legend(['Training loss', 'Validation Loss'],fontsize=18)
plt.xlabel('Epochs ',fontsize=16)
plt.ylabel('Loss',fontsize=16)
plt.title('Loss Curves',fontsize=16)

# Accuracy Curves
plt.figure(figsize=[8,6])
plt.plot(history.history['acc'],'r',linewidth=3.0)
plt.plot(history.history['val_acc'],'b',linewidth=3.0)
plt.legend(['Training Accuracy', 'Validation Accuracy'],fontsize=18)
plt.xlabel('Epochs ',fontsize=16)
plt.ylabel('Accuracy',fontsize=16)
plt.title('Accuracy Curves',fontsize=16)

notez que history = model.fit (...)

0
Elie Sokhon