Une approche universelle pour (presque) tous les problèmes d'apprentissage automatique. Entraînement au classement Ensemble d'entraînement et de test

Dans les tâches apprentissage automatique Les métriques sont utilisées pour évaluer la qualité des modèles et comparer différents algorithmes, et leur sélection et leur analyse sont une partie indispensable du travail d'un sataniste des données.

Dans cet article, nous examinerons certains critères de qualité dans les problèmes de classification, discuterons de ce qui est important lors du choix d'une métrique et de ce qui peut mal tourner.

Métriques dans les problèmes de classification

Pour démonstration fonctionnalités utiles sklearn et une représentation visuelle des métriques, nous utiliserons l'ensemble de données de désabonnement client de notre opérateur de télécommunications, que nous avons rencontré dans le premier article du cours.

Téléchargez les bibliothèques nécessaires et examinez les données

Importer des pandas en tant que pd importer matplotlib.pyplot en tant que plt depuis matplotlib.pylab importer rc, tracer importer seaborn en tant que sns depuis sklearn.preprocessing importer LabelEncoder, OneHotEncoder depuis sklearn.model_selection importer cross_val_score depuis sklearn.linear_model importer LogisticRegression depuis sklearn.ensemble importer RandomForestClassifier, GradientBoostingClassifier de sklearn.metrics importer precision_recall_curve, classification_report de sklearn.model_selection importer train_test_split df = pd.read_csv("../../data/telecom_churn.csv")

Df.tête(5)


Prétraitement des données

# Mappez les colonnes binaires # et codez l'état (pour simplifier, il vaut mieux ne pas faire cela pour les modèles en bois) d = ("Oui" : 1, "Non" : 0) df["Plan international"] = df [" Forfait international"].map(d) df["Forfait messagerie vocale"] = df["Forfait messagerie vocale"].map(d) df["Churn"] = df["Churn"].astype(" int64" ) le = LabelEncoder() df["State"] = le.fit_transform(df["State"]) ohe = OneHotEncoder(sparse=False) encoded_state = ohe.fit_transform(df["State"].values.reshape (- 1, 1)) tmp = pd.DataFrame(encoded_state, columns=["state " + str(i) for i in range(encoded_state.shape)]) df = pd.concat(, axis=1)

Exactitude, précision et rappel

Avant de passer aux métriques elles-mêmes, un concept important doit être introduit pour décrire ces métriques en termes d'erreurs de classification - matrice de confusion(matrice d'erreur).
Supposons que nous ayons deux classes et un algorithme qui prédit si chaque objet appartient à l'une des classes, alors la matrice d'erreur de classification ressemblera à ceci :

Vrai positif (TP) Faux positif (FP)
Faux négatif (FN) Vrai négatif (TN)

Ici, est la réponse de l'algorithme sur l'objet, et est le vrai label de la classe sur cet objet.
Ainsi, il existe deux types d'erreurs de classification : les faux négatifs (FN) et les faux positifs (FP).

Apprentissage d'algorithmes et construction de matrices d'erreurs

X = df.drop("Churn", axis=1) y = df["Churn"] # Divisez l'échantillon en train et test, toutes les métriques seront évaluées sur l'ensemble de données de test X_train, X_test, y_train, y_test = train_test_split( X, y , stratify=y, test_size=0.33, random_state=42) # Former la régression logistique native lr = LogisticRegression(random_state=42) lr.fit(X_train, y_train) # Utiliser la fonction pour construire la matrice d'erreur à partir de la documentation de sklearn def plot_confusion_matrix(cm, classes , normalize=False, title="(!LANG:Confusion matrix", cmap=plt.cm.Blues): """ This function prints and plots the confusion matrix. Normalization can be applied by setting `normalize=True`. """ plt.imshow(cm, interpolation="nearest", cmap=cmap) plt.title(title) plt.colorbar() tick_marks = np.arange(len(classes)) plt.xticks(tick_marks, classes, rotation=45) plt.yticks(tick_marks, classes) if normalize: cm = cm.astype("float") / cm.sum(axis=1)[:, np.newaxis] print("Normalized confusion matrix") else: print("Confusion matrix, without normalization") print(cm) thresh = cm.max() / 2. for i, j in itertools.product(range(cm.shape), range(cm.shape)): plt.text(j, i, cm, horizontalalignment="center", color="white" if cm > thresh else "black") plt.tight_layout() plt.ylabel("True label") plt.xlabel("Predicted label") font = {"size" : 15} plt.rc("font", **font) cnf_matrix = confusion_matrix(y_test, lr.predict(X_test)) plt.figure(figsize=(10, 8)) plot_confusion_matrix(cnf_matrix, classes=["Non-churned", "Churned"], title="Matrice de confusion") plt.savefig("conf_matrix.png") plt.show()!}


Précision

Une métrique intuitive, évidente et presque inutilisée est la précision - le pourcentage de réponses correctes de l'algorithme :

Cette métrique est inutile dans les problèmes avec des classes inégales et est facile à montrer avec un exemple.

Disons que nous voulons évaluer les performances d'un filtre anti-spam. Nous avons 100 e-mails non spam, dont 90 ont été correctement déterminés par notre classificateur (vrai négatif = 90, faux positif = 10) et 10 e-mails indésirables, dont 5 ont également été correctement déterminés par le classificateur (vrai positif = 5, faux négatif = 5 ).
Puis précision :

Cependant, si nous prédisons simplement que tous les e-mails ne sont pas des spams, nous obtenons une plus grande précision :

En même temps, notre modèle n'a aucun pouvoir prédictif, puisque nous voulions initialement identifier les spams. Le passage d'une métrique commune pour toutes les classes à des indicateurs individuels de la qualité des classes nous aidera à surmonter cela.

Précision, rappel et F-mesure

Pour évaluer la qualité de l'algorithme sur chacune des classes, nous introduisons séparément les métriques précision (exactitude) et rappel (complétude).

La précision peut être interprétée comme la proportion d'objets appelés positifs par le classificateur et en même temps réellement positifs, et le rappel montre quelle proportion d'objets d'une classe positive parmi tous les objets d'une classe positive l'algorithme a trouvé.

C'est l'introduction de la précision qui ne nous permet pas d'écrire tous les objets dans une seule classe, puisque dans ce cas nous obtenons une augmentation du niveau de Faux Positif. Le rappel démontre la capacité de l'algorithme à détecter une classe donnée, tandis que la précision démontre la capacité à distinguer cette classe des autres classes.

Comme nous l'avons noté précédemment, il existe deux types d'erreurs de classification : les faux positifs et les faux négatifs. En statistique, le premier type d'erreur est appelé erreur de type I et le second type est appelé erreur de type II. Dans notre tâche de détermination de la sortie des abonnés, l'erreur du premier type sera l'erreur d'un abonné fidèle pour un partant, puisque notre hypothèse nulle est qu'aucun des abonnés ne part, et nous rejetons cette hypothèse. En conséquence, une erreur du deuxième type sera le "passage" de l'abonné sortant et l'acceptation erronée de l'hypothèse nulle.

La précision et le rappel ne dépendent pas, contrairement à la précision, du rapport des classes et sont donc applicables dans des conditions d'échantillons déséquilibrés.
Souvent, dans la pratique, la tâche consiste à trouver l'équilibre optimal (pour le client) entre ces deux métriques. Un exemple classique est le problème de la détermination de la sortie des clients.
Il est clair que nous ne pouvons pas trouver tout clients affolés et seulement leur. Mais après avoir déterminé la stratégie et les ressources de fidélisation de la clientèle, nous pouvons sélectionner les seuils nécessaires de précision et de rappel. Par exemple, nous pouvons nous concentrer sur la fidélisation des seuls clients à forte marge ou ceux qui sont plus susceptibles de partir, puisque nous sommes limités dans les ressources du centre d'appels.

Habituellement, lors de l'optimisation des hyperparamètres d'un algorithme (par exemple, dans le cas d'une itération sur une grille GrilleRechercheCV) utilise une métrique, dont nous nous attendons à voir l'amélioration sur l'échantillon de test.
Il y a plusieurs différentes manières combiner précision et rappel dans un critère de qualité agrégé. F-mesure (généralement ) - précision moyenne harmonique et rappel :

Dans ce cas, il détermine le poids de la précision dans la métrique, et en même temps la moyenne harmonique (avec un facteur 2, de sorte que dans le cas de précision = 1 et rappel = 1 ont )
La F-mesure atteint son maximum au rappel et à la précision égale à un et est proche de zéro si l'un des arguments est proche de zéro.
sklearn a une fonction pratique _metrics.classification rapport qui renvoie le rappel, la précision et la F-mesure pour chacune des classes, ainsi que le nombre d'instances de chaque classe.

Report = classification_report(y_test, lr.predict(X_test), target_names=["Non-baratté", "Baratté"]) print(rapport)

classer précision rappeler score f1 Support
Non baratté 0.88 0.97 0.93 941
Baratté 0.60 0.25 0.35 159
moy/total 0.84 0.87 0.84 1100

Il convient de noter ici que dans le cas de problèmes de classes déséquilibrées qui prévalent dans la pratique réelle, il est souvent nécessaire de recourir à des techniques artificielles de modification des jeux de données pour égaliser le rapport de classe. Il y en a beaucoup et nous n'y toucherons pas, vous pouvez regarder quelques méthodes et choisir celle qui convient à votre tâche.

AUC-ROC et AUC-PR

Lors de la conversion de la réponse réelle de l'algorithme (généralement la probabilité d'appartenir à une classe, voir SVM séparément) en une étiquette binaire, nous devons choisir un seuil auquel 0 devient 1. Un seuil de 0,5 semble naturel et proche, mais il est ne s'avère pas toujours optimal, par exemple, dans le manque d'équilibre des classes susmentionné.

Une façon d'évaluer le modèle dans son ensemble, sans être lié à un seuil spécifique, est AUC-ROC (ou ROC AUC) - surface ( UN rea tu sous C urve) sous la courbe d'erreur ( R récepteur O exploitation C courbe caractéristique). Cette courbe est une ligne de (0,0) à (1,1) dans les coordonnées du taux de vrais positifs (TPR) et du taux de faux positifs (FPR) :

Nous connaissons déjà TPR, c'est l'exhaustivité, et FPR montre quelle proportion d'objets de la classe négative l'algorithme a prédit de manière incorrecte. Dans le cas idéal, lorsque le classificateur ne fait aucune erreur (FPR = 0, TPR = 1), nous obtiendrons l'aire sous la courbe égale à un ; sinon, lorsque le classifieur sort de manière aléatoire des probabilités de classe, AUC-ROC tendra vers 0,5 puisque le classificateur sortira la même quantité de TP et de FP.
Chaque point du graphique correspond au choix d'un certain seuil. La zone sous la courbe dans ce cas montre la qualité de l'algorithme (plus c'est mieux), de plus, la pente de la courbe elle-même est importante - nous voulons maximiser le TPR tout en minimisant le FPR, ce qui signifie que notre courbe devrait idéalement tendre à le point (0,1).

Code de dessin de la courbe ROC

sns.set(font_scale=1.5) sns.set_color_codes("muted") plt.figure(figsize=(10, 8)) fpr, tpr, seuils = roc_curve(y_test, lr.predict_proba(X_test)[:,1], pos_label=1) lw = 2 plt.plot(fpr, tpr, lw=lw, label="courbe ROC") plt.plot(, ) plt.xlim() plt.ylim() plt.xlabel("Taux de faux positifs ") plt.ylabel("Taux positif réel") plt.title("Courbe ROC") plt.savefig("ROC.png") plt.show()


Le critère AUC-ROC est résistant aux classes déséquilibrées (spoiler : hélas, tout n'est pas si simple) et peut être interprété comme la probabilité qu'un objet positif sélectionné au hasard soit mieux classé par le classifieur (aura une probabilité plus élevée d'être positif ) qu'un objet négatif sélectionné au hasard .

Considérons le problème suivant : nous devons sélectionner 100 documents pertinents parmi 1 million de documents. Nous avons appris par machine deux algorithmes :

  • Algorithme 1 renvoie 100 documents, dont 90 sont pertinents. De cette façon,
  • Algorithme 2 renvoie 2000 documents dont 90 pertinents. De cette façon,

Très probablement, nous choisirions le premier algorithme, qui produit très peu de faux positifs par rapport à son concurrent. Mais la différence de taux de faux positifs entre ces deux algorithmes extrêmement petit - seulement 0,0019. Ceci est une conséquence du fait que l'AUC-ROC mesure la proportion de faux positifs par rapport aux vrais négatifs, et dans les tâches où la deuxième classe (plus grande) n'est pas si importante pour nous, cela peut ne pas donner une image tout à fait adéquate lors de la comparaison des algorithmes. .

Afin de corriger la situation, revenons à l'exhaustivité et à l'exactitude :

  • Algorithme 1
  • Algorithme 2

Il existe déjà une différence significative entre les deux algorithmes - 0,855 de précision !

La précision et le rappel sont également utilisés pour tracer la courbe et, comme AUC-ROC, trouver la zone en dessous.


On peut noter ici que sur de petits ensembles de données, l'aire sous la courbe PR peut être trop optimiste, car elle est calculée à l'aide de la méthode trapézoïdale, mais il y a généralement suffisamment de données dans de telles tâches. Pour plus de détails sur la relation entre AUC-ROC et AUC-PR, voir ici.

Perte logistique

La fonction de perte logistique, définie comme :

voici la réponse de l'algorithme sur le -ème objet, la véritable étiquette de classe sur le -ème objet et la taille de l'échantillon.

Des détails sur l'interprétation mathématique de la fonction de perte logistique ont déjà été écrits dans l'article sur les modèles linéaires.
Cette métrique n'apparaît pas souvent dans les exigences métier, mais souvent dans les tâches kaggle.
Intuitivement, on peut considérer la minimisation de la perte de log comme un problème de maximisation de la précision en pénalisant les mauvaises prédictions. Cependant, il convient de noter que la perte de log pénalise sévèrement la confiance du classifieur dans la mauvaise réponse.

Prenons un exemple :

Def logloss_crutch(y_true, y_pred, eps=1e-15): return - (y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred)) print("Logloss avec classification incertaine %f " % logloss_crutch(1, 0.5)) >> Logloss avec classification incertaine 0.693147 print("Logloss avec classification confiante et bonne réponse %f" % logloss_crutch(1, 0.9)) >> Logloss avec classification confiante et bonne réponse 0.105361 print(" Logloss pour une classification sûre et une mauvaise réponse %f" % logloss_crutch(1, 0.1)) >> Logloss pour une classification sûre et une mauvaise réponse 2.302585

Notez à quel point la perte de log a considérablement augmenté avec la mauvaise réponse et une classification sûre !
Par conséquent, une erreur sur un objet peut entraîner une détérioration importante erreur courante sur l'échantillon. Ces objets sont souvent des valeurs aberrantes dont il faut se souvenir de filtrer ou de considérer séparément.
Tout se met en place si vous dessinez un graphique logloss :


On peut voir que plus la réponse de l'algorithme pour la vérité terrain = 1 est proche de zéro, plus la valeur d'erreur est élevée et plus la courbe augmente.

Résumer:

  • Dans le cas d'une classification multi-classes, vous devez surveiller attentivement les métriques de chacune des classes et suivre la logique de la solution Tâches, plutôt que d'optimiser la métrique
  • Dans le cas de classes inégales, il faut sélectionner un équilibre des classes pour la formation et une métrique qui reflétera correctement la qualité du classement
  • mephistopheies et madrugado pour leur aide dans la préparation de l'article.

Ce chapitre présente des méthodes populaires pour évaluer la qualité d'un modèle de classification, qui sont également utilisées dans d'autres travaux sur ce sujet. Leur description et la justification des mesures utilisées pour cette évaluation sont données.

Métriques d'évaluation de la qualité

Précision totale (exactitude)

Cette métrique est l'une des métriques les plus simples et en même temps universelles pour évaluer la qualité des algorithmes de classification. La valeur de ce coefficient est calculée comme la proportion d'objets correctement classés par rapport au nombre total d'objets dans l'échantillon. Cette métrique est populaire en raison de sa simplicité et de sa capacité à s'étendre à n'importe quel nombre de classes. Le principal inconvénient de cette métrique est qu'elle attribue le même poids à tous les documents, ce qui peut ne pas être correct en cas de fort biais des documents de l'échantillon d'apprentissage vers une ou plusieurs classes. Cette métrique peut avoir une valeur élevée, mais le classificateur au sein de la même classe peut afficher une qualité de travail extrêmement faible. Dans le même temps, la métrique ne le signale en aucune façon.

Précision, rappel et mesure F

Des mesures telles que la précision (précision) et le rappel (rappel) ont été pour la première fois largement utilisées pour évaluer la qualité du travail des systèmes qui résolvent le problème de la recherche d'informations. La précision du système au sein d'une classe est la proportion d'objets qui appartiennent réellement à une certaine classe par rapport à tous les objets affectés par le système à cette classe. La complétude est exprimée comme la proportion d'objets trouvés par le classifieur appartenant à la classe par rapport à tous les objets de cette classe. Le tableau 4 est un tableau de contingence d'une classe distincte, où TP (vrai positif) est une vraie solution positive, TN (vrai négatif) est une vraie solution négative, FP (faux positif) est une solution faussement positive et FN (faux négatif) est une décision fausse-négative.

Tableau 1 - Tableau de contingence des classes d'objets

Ainsi, la précision et le rappel sont calculés comme suit :

La mesure F combine des informations sur la précision et l'exhaustivité de l'algorithme évalué. Il est calculé comme la moyenne harmonique des indicateurs de précision et de rappel :

Du fait que la mesure F est calculée séparément pour chaque classe, il est pratique de l'utiliser pour rechercher et analyser des erreurs d'algorithme spécifiques, pour évaluer une classification avec plusieurs classes. Pendant ce temps, dans le cas un grand nombre classes, une caractéristique est nécessaire pour agréger l'exhaustivité et la précision de toutes les classes et caractériser le comportement général du système. Dans ce travail, les valeurs agrégées suivantes sont utilisées à cette fin : la précision macro, qui est calculée comme la moyenne arithmétique de la précision pour toutes les classes, le rappel macro, qui est calculé comme la moyenne arithmétique du rappel pour toutes les classes, et macro F-mesure (Macro F-score), qui est la moyenne harmonique entre eux.

Validation croisée

L'une des méthodes les plus courantes pour effectuer des tests complets et évaluer les performances de divers algorithmes d'apprentissage automatique est la validation croisée. Pour un échantillon indépendant cette méthode vous permet d'obtenir une estimation non biaisée de la probabilité d'erreur, contrairement à l'erreur moyenne sur l'échantillon d'apprentissage, qui peut être une estimation biaisée de la probabilité d'erreur due au surajustement de l'algorithme. Un autre avantage de cette procédure est la possibilité d'obtenir une estimation de la probabilité d'une erreur d'algorithme, en l'absence d'un échantillon de contrôle spécialement conçu pour les tests.

Supposons que est un ensemble de descriptions de caractéristiques d'objets, sur lequel un échantillon fini de précédents est spécifié, où est un ensemble fini de classes. Un mappage est donné qui associe un échantillon arbitraire de précédents à un algorithme. Ensuite, la performance de l'algorithme pour un échantillon arbitraire de précédents est estimée à l'aide de la fonctionnelle de qualité :

où est une fonction non négative qui renvoie la valeur d'erreur de l'algorithme en fonction de l'étiquette de classe correcte.

1

Ces dernières années, une grande attention a été accordée à la reconstruction d'image, par conséquent, l'évaluation de la qualité est une tâche importante pour la comparaison. diverses méthodes récupération d'images. Dans de nombreux cas, les méthodes de reconstruction conduisent à un flou de la texture et de la structure lors de la restauration. grandes surfaces avec des valeurs de pixel déformées. Il n'existe actuellement aucune évaluation quantitative objective des résultats de la restauration et, par conséquent, dans de nombreuses approches, l'évaluation par des experts est utilisée. Cet article traite d'une nouvelle approche pour évaluer la qualité de la restauration d'images basée sur l'apprentissage automatique à l'aide d'un modèle de vision humaine, qui réside dans le fait que les zones locales d'images peuvent être représentées par des descripteurs sous la forme de certaines distributions paramétriques. De plus, la machine à vecteurs de support de régression permet de prédire la qualité perçue des images reconstruites selon un jugement d'expert. L'article démontre que le score de qualité obtenu à l'aide de l'approche ci-dessus est en corrélation avec le score de qualité subjectif.

apprentissage automatique

qualité visuelle

reconstruction

traitement d'image

1. Gastaldo P. Solutions d'apprentissage automatique pour l'évaluation objective de la qualité visuelle / 6e atelier international sur le traitement vidéo et les mesures de qualité pour l'électronique grand public, VPQM. - Vol. 12. - 2012.

2. Bertalmio M., Bertozzi A., Sapiro G. Navier-Stokes, Fluid dynamics, and image and video inpainting/ Hawaii : Proc. Vision par ordinateur IEEE et reconnaissance de formes (CVPR). - 2001.-PP. 213–226.

3. Criminisi A., Perez P., Toyama K. Remplissage de régions et suppression d'objets par peinture d'image basée sur des exemples / IEEE Trans. traitement d'image. - 13(9) . - 2004. - PP. 28–34.

4. Vijay M., Cheung, SS. Eye tracking based image perceptual inpainting quality analysis/Image Processing (ICIP), 17th IEEE International Conference on IEEE. - 2010. - PP. 1109 - 1112.

5. Ardis P.A., Singhal A. Métriques de saillance visuelle pour l'inpainting d'images / SPIE Electronic Imaging. Société internationale d'optique et de photonique. - 2009.

6. Cheung S.S., Zhao J., Venkatesh V. Efficient object-based video inpainting / Image Processing, 2006 IEEE International Conference on. - 2006. - PP. 705-708.

7. Peretyagin G.I. Représentation d'images par champs aléatoires gaussiens / Autométrie. - N° 6. - 1984. - S. 42 - 48.

8. Frantc V.A., Voroni V.V., Marchuk V.I., Sherstobitov A.I., Agaian S., Egiazarian K. Approche d'apprentissage automatique pour l'évaluation objective de la qualité de la peinture / Proc. SPIE 9120, Multimédia mobile/Traitement d'images, Sécurité et Applications. – Vol. 91200S. – 2014.

9. Paul A., Singhal A., et. Brown C. Évaluation de la qualité de la peinture / Journal of Electronic Imaging. – Vol. 19. - 2010. - PP. 011002-011002.

Une métrique objective de qualité d'image est une partie importante des systèmes de traitement d'image. Une application importante des métriques objectives d'évaluation de la qualité d'image consiste à évaluer les performances des algorithmes et des systèmes de traitement d'image. Malgré le grand nombre de publications sur ce sujet, le problème de l'évaluation de la qualité des images reconstruites n'est considéré que dans quelques-uns. Dans le même temps, le problème de la restauration des zones d'image perdues a récemment fait l'objet d'une attention considérable.

Il existe deux approches pour évaluer la qualité de l'image : la quantification à l'aide méthodes mathématiques(erreur quadratique moyenne, norme Lp, mesures qui tiennent compte des caractéristiques de la perception de l'image par le système visuel humain) et évaluation subjective basée sur des évaluations d'experts.

L'évaluation de la qualité obtenue à l'aide des approches existantes peut différer considérablement de l'évaluation obtenue avec l'aide d'experts humains. La plupart des approches existantes pour l'évaluation de la qualité utilisent une image de référence. Mais, malheureusement, dans de nombreux cas, l'image de référence n'est pas disponible. Ces tâches incluent le problème de la reconstruction des pixels perdus. Ainsi, la tâche de développer une métrique quantitative pour évaluer la qualité des images reconstruites est pertinente.

Des progrès significatifs ont été réalisés dans le développement d'évaluations quantitatives de la qualité des images. Cependant, les critères introduits ne sont pas assez parfaits. La plupart des tentatives pour trouver des estimations de qualité d'image acceptables concernent des cas particuliers. Une certaine évaluation est proposée sur la base de certaines conditions physiologiques préalables, et le plus souvent juste pratique pour l'analyse et les calculs, puis ses propriétés sont évaluées. La création de meilleures évaluations de la qualité d'image est associée à une étude plus approfondie des propriétés du système visuel humain.

Le but de ce travail est le développement d'une métrique permettant d'évaluer la qualité des images lors de leur traitement par des méthodes de reconstruction basées sur l'apprentissage automatique.

Modèle mathématique

L'article utilise une notation similaire à la notation adoptée dans l'ouvrage. L'image entière se compose de deux régions non superposées : la région reconstruite et la région connue. La figure 1 montre un exemple de l'emplacement de ces zones.

Fig 1. Modèle d'image

L'image et la région Ω à l'intérieur de celle-ci sont connues. La tâche de reconstruction consiste à modifier les valeurs des pixels de l'image à l'intérieur de la région Ω, de sorte que la région ne se détache pas sur le fond de l'image environnante. Le but de la reconstruction peut être de réparer des parties endommagées d'une image (telles que des rayures et des fissures sur de vieilles photographies) ou de supprimer des objets indésirables dans une image. La région Ω illustrée à la figure 1 est toujours définie par l'utilisateur, c'est-à-dire la définition du domaine Ω ne fait pas partie du problème de reconstruction.

Algorithme d'évaluation de la qualité de la restauration d'image

En général, pour créer avec succès une métrique de qualité d'image basée sur l'apprentissage automatique, les trois tâches suivantes sont requises :

1. Détermination de l'espace des caractéristiques , qui servent de description des signaux d'entrée.

2. Sélection de la fonction de cartographie de l'espace des caractéristiques à l'espace des évaluations de la qualité.

3. Entraînement du système et vérification de sa stabilité (vérification d'un réapprentissage, etc.).

Le schéma fonctionnel de l'approche choisie est illustré à la figure 2 et contient les étapes suivantes :

1. Sélection d'une zone d'intérêt (à l'aide d'une carte d'attention);

2. Calcul des caractéristiques de bas niveau de l'image ;

3. Construire un descripteur de la zone restaurée basé sur des caractéristiques de bas niveau ;

4. Résoudre le problème de régression afin d'obtenir une estimation numérique de la qualité basée sur le vecteur descripteur obtenu.

Riz. 2. Schéma fonctionnel de l'algorithme

L'article montre que l'attention visuelle joue un rôle important dans la perception visuelle humaine. À un moment donné, l'œil humain ne voit clairement qu'une petite partie de la scène, tandis qu'une zone beaucoup plus grande de la scène est perçue comme "floue". Cette "information floue" est suffisante pour évaluer l'importance des différentes zones de la scène et attirer l'attention sur des zones importantes du champ visuel. La plupart des méthodes vous permettent d'obtenir une carte d'attention - une image en deux dimensions dans laquelle la valeur de chaque pixel est associée à l'importance de la zone correspondante.

Pour obtenir des cartes d'attention, la boîte à outils Sailency est utilisée, décrite dans . Cet ensemble tools utilise un modèle du système visuel humain. Il est important de noter que cela n'a aucun sens de comparer la zone restaurée sur l'image d'origine et restaurée, car le contenu global peut changer de manière significative. Pour sélectionner les zones d'intérêt, il est proposé d'utiliser l'expression suivante :

.

Ici, est la carte d'attention pour l'image reconstruite, et la valeur de la carte d'attention correspondant à pixel . Dans l'expression ci-dessus, la densité de regard est calculée à l'intérieur et à l'extérieur de la zone d'image reconstruite. La valeur est utilisée comme valeur de seuil pour décider quelles parties de l'image seront utilisées dans l'évaluation et lesquelles ne le seront pas. Seuls les domaines pour lesquels .

Les représentations spectrales sont utilisées comme caractéristiques de bas niveau des zones locales. Ensuite, nous proposons une analyse des bases de Fourier, Walsh, Haar suivantes en utilisant le vecteur d'efficacité. Pour le calcul correct des composants du critère d'efficacité du système en présence d'interférences et de distorsions, une moyenne statistique est nécessaire.

Dans la synthèse d'algorithmes et de systèmes de traitement du signal, le critère de risque moyen minimum est le plus souvent utilisé, ce qui permet de prendre en compte les statistiques d'interférences et de signaux. Lors de la mise en œuvre des transformations fréquentielles et de l'estimation des coûts de calcul, le choix de la base de la décomposition spectrale est primordial. Pour optimiser le choix de la base de décomposition du signal, il convient d'utiliser le critère de risque moyen minimum. Pour cela, il est nécessaire que la classe des signaux et processus utilisés soit donnée et que leurs caractéristiques probabilistes soient connues.

Pour une classe donnée de processus bidimensionnels, la probabilité de chacune des sous-classes est supposée connue, où l'indice est le numéro de la sous-classe avec certaines propriétés communes, et est le numéro de mise en œuvre du processus de la ième sous-classe. Nous allons comparer un certain ensemble de systèmes de base L'expansion en une série de Fourier généralisée en termes de ième système de base sous forme générale a la forme : .

Avec un nombre fini de membres de la série de Fourier, il peut être caractérisé par une erreur : , où est la distance dans une métrique, est la somme partielle des membres de la série de Fourier.

La détermination matérielle des coefficients de la série de Fourier ou leur calcul est associé à certains coûts de calcul. Nous introduisons une fonction de perte qui prend en compte à la fois les pertes liées à l'erreur de troncature de la série de Fourier et les coûts des ressources matérielles et informatiques :

.

La valeur de risque conditionnel dépend à la fois de la sous-classe de signal et de la base et est calculée en faisant la moyenne de la fonction de perte sur les implémentations :

où est la densité de probabilité des signaux et du bruit analysés ; et les crochets indiquent l'opération de moyenne statistique.

Le risque moyen est déterminé en faisant la moyenne du risque conditionnel sur les sous-classes de signal :

,

où est la probabilité de la ième sous-classe de signaux.

Conformément au critère de risque moyen minimal, la base pour laquelle le risque moyen est minimal est sélectionnée parmi les bases.

Pour évaluer l'efficacité du critère système de qualité de traitement d'image, on considère des images test sous forme de textures obtenues à partir de la modélisation de champs gaussiens avec des fonctions de corrélation données. La génération de champs aléatoires normaux homogènes, ainsi que de processus aléatoires normaux stationnaires, se fait plus simplement par la méthode du filtre de mise en forme.

A titre d'exemple, l'article considère la représentation de réalisations aléatoires avec différentes fonctions de corrélation dans les bases des fonctions trigonométriques (Fourier), Walsh et Haar. Effectuons l'analyse dans les bases sélectionnées pour les modèles d'image créés avec une taille de 256 par 256 pixels. Nous nous sommes également fixé trois types de distribution de probabilité de sous-classe : 1) uniforme : ; 2) décroissant : ;
3) croissant : . On choisit la fonction de coût sous la forme : .

Le risque moyen est déterminé en faisant la moyenne du risque conditionnel sur les sous-classes de signal en utilisant les probabilités a priori acceptées des sous-classes de signal, les valeurs calculées sont présentées dans le tableau 1.

Tableau 1

Valeurs de risque moyennes

Types de distribution de probabilité

Les résultats des calculs présentés dans le tableau montrent que pour les modèles acceptés de signaux bidimensionnels et leurs distributions de probabilité, la base de Haar présente le risque moyen le plus faible et la base de Fourier le plus élevé.

Sur la base de l'analyse effectuée, nous choisissons la base de Haar pour représenter les zones locales des images. Il convient de noter que la taille de la zone reconstruite est différente pour différentes images. À cet égard, sur la base des caractéristiques de bas niveau, une représentation de haut niveau d'une taille fixe doit être formée. L'approche "sac de mots" est utilisée comme représentation de haut niveau. La procédure de construction d'un descripteur (signature) de la zone reconstruite comprend deux étapes. La première étape consiste à créer un dictionnaire. Pour cela, des caractéristiques de bas niveau extraites de toutes les images de l'ensemble d'images d'apprentissage sont utilisées. Pour construire un dictionnaire, les caractéristiques extraites sont divisées en 100 classes à l'aide de l'algorithme de clustering k-means. Chaque élément du dictionnaire est un centroïde pour l'une des classes trouvées par la procédure de clustering. Chaque mot du dictionnaire représente une transformation de Haar dans un bloc d'image 8x8. Le dictionnaire résultant est utilisé à la deuxième étape lors de la construction d'histogrammes de fréquence pour les mots du dictionnaire en tant que vecteur de caractéristiques - un descripteur de la zone reconstruite (Fig. 3). L'ensemble de descripteurs résultant est utilisé pour former la machine de régression (Support Vector Regression). Pour obtenir un histogramme des fréquences de mots, toutes les zones visuellement perceptibles (la visibilité est déterminée à l'aide de cartes d'attention) d'une image particulière sont extraites du dictionnaire. Ensuite, une transformée de Haar est appliquée à chacun des blocs extraits et une classification est effectuée selon le dictionnaire résultant basé sur la distance euclidienne.

Chaque groupe de l'histogramme résultant contient le nombre d'entités de bas niveau d'une classe particulière dans une région reconstruite donnée. Après normalisation de l'histogramme, la "signature" de l'image est obtenue - une représentation de haut niveau de la zone reconstruite.

Fig.3. Construire un histogramme

Estimation de l'efficacité de l'algorithme d'évaluation de la qualité de restauration d'image

Afin d'évaluer l'efficacité de la métrique développée, un ensemble d'images de test a été utilisé. L'ensemble se compose de 300 images. Les approches suivantes ont été choisies comme méthodes de restauration : une méthode basée sur la recherche de régions auto-similaires, une méthode basée sur les transformations spectrales, une méthode basée sur le calcul des dérivées partielles. Pour chaque image, une expertise a été obtenue, avec la participation de 30 personnes. Les résultats ont été divisés en deux ensembles non superposés. Le premier était utilisé pour l'entraînement et le second pour vérifier le résultat.

Les experts ont évalué la qualité sur une échelle dans laquelle 5 correspond à "Excellent" et 1 correspond à "Très mauvais". Pour évaluer l'efficacité des métriques obtenues, le coefficient de corrélation entre les vecteurs obtenus à l'aide des métriques objectives et la méthode experte d'évaluation de la qualité est utilisé. L'analyse des résultats dans le tableau 2 montre que l'approche proposée surpasse les mesures de qualité connues sur l'ensemble de données de test sélectionné.

Tableau 2

Coefficient de corrélation des différentes méthodes de calcul de l'objectif
métriques de qualité d'image

Approche suggérée

Conclusion

L'article présente une métrique objective pour évaluer la qualité d'image basée sur l'apprentissage automatique. Les mesures quantitatives de la qualité d'image sont essentielles pour la conception et l'évaluation des systèmes de reproduction d'images. Ces mesures aideront largement à se débarrasser des méthodes modernes laborieuses et imprécises d'évaluation des images par examen subjectif. De plus, sur la base de mesures quantitatives, il est possible de développer des méthodes d'optimisation des systèmes de traitement d'images. Il est démontré que le score de qualité obtenu à l'aide de l'approche ci-dessus est en corrélation avec le score de qualité subjectif.

Le travail a été soutenu par le ministère de l'Éducation et des Sciences de Russie dans le cadre du programme cible fédéral "Recherche et développement dans les domaines prioritaires de développement du complexe scientifique et technologique de Russie pour 2014-2020" (accord n ​​° 14.586.21.0013 ).

Réviseurs :

Fedosov V.P., docteur en sciences techniques, professeur, chef du département TOP de l'Académie d'ingénierie et de technologie de l'Université fédérale du Sud, Rostov-on-Don ;

Marchuk V.I., docteur en sciences techniques, professeur, chef du département des systèmes et complexes radioélectroniques et électriques, ISOiP (branche du DSTU), Shakhty.

Lien bibliographique

Voronine V.V. ÉVALUATION DE LA QUALITÉ DE LA RÉCUPÉRATION D'IMAGES BASÉE SUR L'APPRENTISSAGE MACHINE // Enjeux contemporains science et éducation. - 2014. - N° 6.;
URL : http://science-education.ru/ru/article/view?id=16294 (date d'accès : 01.02.2020). Nous portons à votre connaissance les revues publiées par la maison d'édition "Academy of Natural History"

Sur les éléments de chaque liste. L'ordre partiel est généralement spécifié en spécifiant un score pour chaque élément (par exemple, "pertinent" ou "non pertinent" ; plus de deux gradations sont possibles). L'objectif d'un modèle de classement est de mieux (dans un sens) approximer et généraliser la façon dont les classements de l'ensemble d'apprentissage s'adaptent aux nouvelles données.

L'apprentissage par classement est encore un domaine de recherche assez jeune, en plein développement, apparu dans les années 2000 avec l'émergence d'un intérêt pour le domaine de la recherche d'informations dans l'application de méthodes d'apprentissage automatique aux problèmes de classement.

YouTube encyclopédique

  • 1 / 5

    Lors de l'apprentissage du modèle de classement et de son fonctionnement, chaque couple document-demande est traduit en un vecteur numérique de caractéristiques de classement (également appelés facteurs ou signaux de classement) qui caractérisent les propriétés du document, la requête et leur relation. Ces signes peuvent être divisés en trois groupes :

    Voici quelques exemples de fonctionnalités de classement utilisées dans le jeu de données LETOR bien connu sur le terrain :

    • Valeurs des mesures TF, TF-IDF, BM25, et le modèle de langage correspondant à la requête des différentes zones du document (titre, URL, corps du texte, texte du lien) ;
    • Longueurs et sommes IDF des zones de document ;
    • Classements de documents obtenus par diverses variantes d'algorithmes de classement de liens tels que PageRank et HITS .

    Classement des indicateurs de qualité

    Il existe plusieurs métriques qui évaluent et comparent les performances des algorithmes de classement sur un échantillon avec des revues par les pairs. Souvent, les paramètres du modèle de classement ont tendance à être ajustés de manière à maximiser la valeur de l'une de ces métriques.

    Exemples de métriques :

    Classification des algorithmes

    Dans son article "Learning to Rank for Information Retrieval" et ses discours lors de conférences thématiques, Tai-Yan Liu de Microsoft Research Asia a analysé les méthodes actuellement disponibles pour résoudre le problème de l'apprentissage du classement et a proposé leur classification en trois approches, en fonction de l'entrée représentation utilisée données et fonction fine :

    Approche ponctuelle

    Remarques

    1. Cravate Yan Liu (2009) Apprendre à classer pour la récupération d'informations, Fondements et tendances en recherche d'information : vol. 3 : n° 3, p. 225-331, ISBN 978-1-60198-244-5 , DOI 10.1561/1500000016. Des diapositives du discours de T. Lew à la conférence WWW 2009 sont disponibles.

    Hé Habr !

    Dans les tâches d'apprentissage automatique, les métriques sont utilisées pour évaluer la qualité des modèles et comparer différents algorithmes, et leur sélection et leur analyse sont une partie indispensable du travail d'un data scientist.

    Dans cet article, nous examinerons certains critères de qualité dans les problèmes de classification, discuterons de ce qui est important lors du choix d'une métrique et de ce qui peut mal tourner.

    Métriques dans les problèmes de classification

    Pour démontrer des fonctionnalités utiles sklearn et une représentation visuelle des métriques, nous utiliserons l'ensemble de données de désabonnement client de notre opérateur de télécommunications, que nous avons rencontré dans le premier article du cours.

    Téléchargez les bibliothèques nécessaires et examinez les données

    Importer des pandas en tant que pd importer matplotlib.pyplot en tant que plt depuis matplotlib.pylab importer rc, tracer importer seaborn en tant que sns depuis sklearn.preprocessing importer LabelEncoder, OneHotEncoder depuis sklearn.model_selection importer cross_val_score depuis sklearn.linear_model importer LogisticRegression depuis sklearn.ensemble importer RandomForestClassifier, GradientBoostingClassifier de sklearn.metrics importer precision_recall_curve, classification_report de sklearn.model_selection importer train_test_split df = pd.read_csv("../../data/telecom_churn.csv")

    Df.tête(5)

    Prétraitement des données

    # Mappez les colonnes binaires # et codez l'état (pour simplifier, il vaut mieux ne pas faire cela pour les modèles en bois) d = ("Oui" : 1, "Non" : 0) df["Plan international"] = df [" Forfait international"].map(d) df["Forfait messagerie vocale"] = df["Forfait messagerie vocale"].map(d) df["Churn"] = df["Churn"].astype(" int64" ) le = LabelEncoder() df["State"] = le.fit_transform(df["State"]) ohe = OneHotEncoder(sparse=False) encoded_state = ohe.fit_transform(df["State"].values.reshape (- 1, 1)) tmp = pd.DataFrame(encoded_state, columns=["state " + str(i) for i in range(encoded_state.shape)]) df = pd.concat(, axis=1)

    Exactitude, précision et rappel

    Avant de passer aux métriques elles-mêmes, un concept important doit être introduit pour décrire ces métriques en termes d'erreurs de classification - matrice de confusion(matrice d'erreur).
    Supposons que nous ayons deux classes et un algorithme qui prédit si chaque objet appartient à l'une des classes, alors la matrice d'erreur de classification ressemblera à ceci :

    Vrai positif (TP) Faux positif (FP)
    Faux négatif (FN) Vrai négatif (TN)

    est la réponse de l'algorithme sur l'objet, et

    La véritable étiquette de classe sur cet objet.
    Ainsi, il existe deux types d'erreurs de classification : les faux négatifs (FN) et les faux positifs (FP).

    Apprentissage d'algorithmes et construction de matrices d'erreurs

    X = df.drop("Churn", axis=1) y = df["Churn"] # Divisez l'échantillon en train et test, toutes les métriques seront évaluées sur l'ensemble de données de test X_train, X_test, y_train, y_test = train_test_split( X, y , stratify=y, test_size=0.33, random_state=42) # Former la régression logistique native lr = LogisticRegression(random_state=42) lr.fit(X_train, y_train) # Utiliser la fonction pour construire la matrice d'erreur à partir de la documentation de sklearn def plot_confusion_matrix(cm, classes , normalize=False, title="(!LANG:Confusion matrix", cmap=plt.cm.Blues): """ This function prints and plots the confusion matrix. Normalization can be applied by setting `normalize=True`. """ plt.imshow(cm, interpolation="nearest", cmap=cmap) plt.title(title) plt.colorbar() tick_marks = np.arange(len(classes)) plt.xticks(tick_marks, classes, rotation=45) plt.yticks(tick_marks, classes) if normalize: cm = cm.astype("float") / cm.sum(axis=1)[:, np.newaxis] print("Normalized confusion matrix") else: print("Confusion matrix, without normalization") print(cm) thresh = cm.max() / 2. for i, j in itertools.product(range(cm.shape), range(cm.shape)): plt.text(j, i, cm, horizontalalignment="center", color="white" if cm > thresh else "black") plt.tight_layout() plt.ylabel("True label") plt.xlabel("Predicted label") font = {"size" : 15} plt.rc("font", **font) cnf_matrix = confusion_matrix(y_test, lr.predict(X_test)) plt.figure(figsize=(10, 8)) plot_confusion_matrix(cnf_matrix, classes=["Non-churned", "Churned"], title="Matrice de confusion") plt.savefig("conf_matrix.png") plt.show()!}

    Précision

    Une métrique intuitive, évidente et presque inutilisée est la précision - le pourcentage de réponses correctes de l'algorithme :

    Cette métrique est inutile dans les problèmes avec des classes inégales et est facile à montrer avec un exemple.

    Disons que nous voulons évaluer les performances d'un filtre anti-spam. Nous avons 100 e-mails non spam, dont 90 ont été correctement déterminés par notre classificateur (vrai négatif = 90, faux positif = 10) et 10 e-mails indésirables, dont 5 ont également été correctement déterminés par le classificateur (vrai positif = 5, faux négatif = 5 ).
    Puis précision :

    Cependant, si nous prédisons simplement que tous les e-mails ne sont pas des spams, nous obtenons une plus grande précision :

    En même temps, notre modèle n'a aucun pouvoir prédictif, puisque nous voulions initialement identifier les spams. Le passage d'une métrique commune pour toutes les classes à des indicateurs individuels de la qualité des classes nous aidera à surmonter cela.

    Précision, rappel et F-mesure

    Pour évaluer la qualité de l'algorithme sur chacune des classes séparément, nous introduisons les métriques précision (exactitude) et rappel (complétude).

    La précision peut être interprétée comme la proportion d'objets appelés positifs par le classificateur et en même temps réellement positifs, et le rappel montre quelle proportion d'objets d'une classe positive parmi tous les objets d'une classe positive l'algorithme a trouvé.

    C'est l'introduction de la précision qui ne nous permet pas d'écrire tous les objets dans une seule classe, puisque dans ce cas nous obtenons une augmentation du niveau de Faux Positif. Le rappel démontre la capacité de l'algorithme à détecter une classe donnée, tandis que la précision démontre la capacité à distinguer cette classe des autres classes.

    Comme nous l'avons noté précédemment, il existe deux types d'erreurs de classification : les faux positifs et les faux négatifs. En statistique, le premier type d'erreur est appelé erreur de type I et le second type est appelé erreur de type II. Dans notre problème de détermination de la sortie des abonnés, l'erreur du premier type sera l'erreur d'un abonné fidèle pour un abonné partant, puisque notre hypothèse nulle est qu'aucun des abonnés n'est sortant, et nous rejetons cette hypothèse. En conséquence, une erreur du deuxième type sera le "passage" de l'abonné sortant et l'acceptation erronée de l'hypothèse nulle.

    La précision et le rappel ne dépendent pas, contrairement à la précision, du rapport des classes et sont donc applicables dans des conditions d'échantillons déséquilibrés.
    Souvent, dans la pratique, la tâche consiste à trouver l'équilibre optimal (pour le client) entre ces deux métriques. Un exemple classique est le problème de la détermination de la sortie des clients.
    Il est clair que nous ne pouvons pas trouver tout clients affolés et seulement leur. Mais après avoir déterminé la stratégie et les ressources de fidélisation de la clientèle, nous pouvons sélectionner les seuils nécessaires de précision et de rappel. Par exemple, nous pouvons nous concentrer sur la fidélisation des seuls clients à marge élevée ou ceux qui sont plus susceptibles de se désabonner, puisque nous sommes limités par les ressources du centre d'appels.

    Habituellement, lors de l'optimisation des hyperparamètres d'un algorithme (par exemple, dans le cas d'une itération sur une grille GrilleRechercheCV) utilise une métrique, dont nous nous attendons à voir l'amélioration sur l'échantillon de test.
    Il existe plusieurs façons de combiner précision et rappel dans une mesure de qualité agrégée. F-mesure (généralement

    ) - précision harmonique moyenne et rappel :

    dans ce cas détermine le poids de la précision dans la métrique et, lorsque

    c'est la moyenne harmonique (avec un facteur 2, de sorte que dans le cas de précision = 1 et rappel = 1 on a

    )
    La F-mesure atteint son maximum au rappel et à la précision égale à un et est proche de zéro si l'un des arguments est proche de zéro.
    sklearn a une fonction pratique _metrics.classification rapport qui renvoie le rappel, la précision et la F-mesure pour chacune des classes, ainsi que le nombre d'instances de chaque classe.

    Report = classification_report(y_test, lr.predict(X_test), target_names=["Non-baratté", "Baratté"]) print(rapport)

    classer précision rappeler score f1 Support
    Non baratté 0.88 0.97 0.93 941
    Baratté 0.60 0.25 0.35 159
    moy/total 0.84 0.87 0.84 1100

    Il convient de noter ici que dans le cas de problèmes de classes déséquilibrées qui prévalent dans la pratique réelle, il est souvent nécessaire de recourir à des techniques artificielles de modification des jeux de données pour égaliser le rapport de classe. Il y en a beaucoup et nous n'y toucherons pas, vous pouvez regarder quelques méthodes et choisir celle qui convient à votre tâche.

    AUC-ROC et AUC-PR

    Lors de la conversion de la réponse réelle de l'algorithme (généralement la probabilité d'appartenir à une classe, voir SVM séparément) en une étiquette binaire, nous devons choisir un seuil auquel 0 devient 1. Un seuil de 0,5 semble naturel et proche, mais il est ne s'avère pas toujours optimal, par exemple, dans le manque d'équilibre des classes susmentionné.

    Une façon d'évaluer le modèle dans son ensemble, sans être lié à un seuil spécifique, est AUC-ROC (ou ROC AUC) - surface ( UN rea tu sous C urve) sous la courbe d'erreur ( R récepteur O exploitation C courbe caractéristique). Cette courbe est une ligne de (0,0) à (1,1) dans les coordonnées du taux de vrais positifs (TPR) et du taux de faux positifs (FPR) :

    Nous connaissons déjà TPR, c'est l'exhaustivité, et FPR montre quelle proportion d'objets de la classe négative l'algorithme a prédit de manière incorrecte. Dans le cas idéal, lorsque le classificateur ne fait aucune erreur (FPR = 0, TPR = 1), nous obtiendrons l'aire sous la courbe égale à un, sinon, lorsque le classificateur produit aléatoirement des probabilités de classe, l'AUC-ROC aura tendance à 0,5, puisque le classificateur émettra la même quantité de TP et de FP.
    Chaque point du graphique correspond au choix d'un certain seuil. La zone sous la courbe dans ce cas montre la qualité de l'algorithme (plus c'est mieux), de plus, la pente de la courbe elle-même est importante - nous voulons maximiser le TPR tout en minimisant le FPR, ce qui signifie que notre courbe devrait idéalement tendre à le point (0,1).

    Code de dessin de la courbe ROC

    sns.set(font_scale=1.5) sns.set_color_codes("muted") plt.figure(figsize=(10, 8)) fpr, tpr, seuils = roc_curve(y_test, lr.predict_proba(X_test)[:,1], pos_label=1) lw = 2 plt.plot(fpr, tpr, lw=lw, label="courbe ROC") plt.plot(, ) plt.xlim() plt.ylim() plt.xlabel("Taux de faux positifs ") plt.ylabel("Taux positif réel") plt.title("Courbe ROC") plt.savefig("ROC.png") plt.show()

    Le critère AUC-ROC est résistant aux classes déséquilibrées (spoiler : hélas, tout n'est pas si simple) et peut être interprété comme la probabilité qu'un objet positif sélectionné au hasard soit mieux classé par le classifieur (il aura une probabilité plus élevée d'être positif) qu'un objet négatif sélectionné au hasard.

    Considérons le problème suivant : nous devons sélectionner 100 documents pertinents parmi 1 million de documents. Nous avons appris par machine deux algorithmes :

    • Algorithme 1 renvoie 100 documents, dont 90 sont pertinents. De cette façon,
    • Algorithme 2 renvoie 2000 documents dont 90 pertinents. De cette façon,

    Très probablement, nous choisirions le premier algorithme, qui produit très peu de faux positifs par rapport à son concurrent. Mais la différence de taux de faux positifs entre ces deux algorithmes extrêmement petit - seulement 0,0019. Ceci est une conséquence du fait que l'AUC-ROC mesure la proportion de faux positifs par rapport aux vrais négatifs, et dans les tâches où la deuxième classe (plus grande) n'est pas si importante pour nous, cela peut ne pas donner une image tout à fait adéquate lors de la comparaison des algorithmes. .

    Afin de corriger la situation, revenons à l'exhaustivité et à l'exactitude :

    • Algorithme 1
    • Algorithme 2

    Il existe déjà une différence significative entre les deux algorithmes - 0,855 de précision !

    La précision et le rappel sont également utilisés pour tracer la courbe et, comme AUC-ROC, trouver la zone en dessous.

    On peut noter ici que sur de petits ensembles de données, l'aire sous la courbe PR peut être trop optimiste, car elle est calculée à l'aide de la méthode trapézoïdale, mais il y a généralement suffisamment de données dans de telles tâches. Pour plus de détails sur la relation entre AUC-ROC et AUC-PR, voir ici.

    Perte logistique

    La fonction de perte logistique, définie comme :

    est la réponse de l'algorithme à

    objet ohmique,

    véritable étiquette de classe sur

    objet ohm, et

    taille de l'échantillon.

    Des détails sur l'interprétation mathématique de la fonction de perte logistique ont déjà été écrits dans l'article sur les modèles linéaires.
    Cette métrique n'apparaît pas souvent dans les exigences métier, mais souvent dans les tâches kaggle.
    Intuitivement, on peut considérer la minimisation de la perte de log comme un problème de maximisation de la précision en pénalisant les mauvaises prédictions. Cependant, il convient de noter que la perte de log pénalise sévèrement la confiance du classifieur dans la mauvaise réponse.

    Prenons un exemple :

    Def logloss_crutch(y_true, y_pred, eps=1e-15): return - (y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred)) print("Logloss avec classification incertaine %f " % logloss_crutch(1, 0.5)) >> Logloss avec classification incertaine 0.693147 print("Logloss avec classification confiante et bonne réponse %f" % logloss_crutch(1, 0.9)) >> Logloss avec classification confiante et bonne réponse 0.105361 print(" Logloss pour une classification sûre et une mauvaise réponse %f" % logloss_crutch(1, 0.1)) >> Logloss pour une classification sûre et une mauvaise réponse 2.302585

    Notez à quel point la perte de log a considérablement augmenté avec la mauvaise réponse et une classification sûre !
    Par conséquent, l'erreur sur un objet peut entraîner une détérioration significative de l'erreur globale sur l'échantillon. Ces objets sont souvent des valeurs aberrantes dont il faut se souvenir de filtrer ou de considérer séparément.
    Tout se met en place si vous dessinez un graphique logloss :

    On peut voir que plus la réponse de l'algorithme pour la vérité terrain = 1 est proche de zéro, plus la valeur d'erreur est élevée et plus la courbe augmente.

    En résumé :

    • Dans le cas d'une classification multi-classes, vous devez surveiller attentivement les métriques de chacune des classes et suivre la logique de la solution Tâches, plutôt que d'optimiser la métrique
    • Dans le cas de classes inégales, il faut sélectionner un équilibre des classes pour la formation et une métrique qui reflétera correctement la qualité du classement
    • Le choix de la métrique doit être fait en mettant l'accent sur le domaine, en prétraitant les données et, éventuellement, en segmentant (comme dans le cas de la division en clients riches et pauvres)

    Liens utiles

    1. Cours par Evgeny Sokolov : Séminaire sur le choix des modèles (il y a des informations sur la métrique des problèmes de régression)
    2. Problèmes pour AUC-ROC par A.G. Diakonova
    3. Vous pouvez en savoir plus sur les autres métriques sur kaggle. Un lien vers le concours où il a été utilisé a été ajouté à la description de chaque métrique
    4. Présentation de Bogdan Melnyk alias ld86 sur l'apprentissage sur des échantillons déséquilibrés