Precision/recall für multiclass-multilabel-Klassifizierung
Frage ich mich wie berechnen Sie precision und recall-Maßnahmen für multiclass multilabel-Klassifizierung, D. H. Einordnung, wo es mehr als zwei Bezeichnungen, und wo jede Instanz kann mehrere Bezeichnungen haben?
InformationsquelleAutor der Frage MaVe | 2012-01-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für multi-label-Klassifizierung Sie haben zwei Möglichkeiten, um zu gehen
Betrachten Sie zuerst das folgende.
Beispiel
Die Metriken berechnet werden, die in einem pro Datenpunkt Art und Weise. Für jedes vorhergesagte label seine nur seine Punktzahl berechnet, und dann diese Ergebnisse sind aggregiert über alle Datenpunkte.
Das Verhältnis, wie viel von dem vorausgesagt ist richtig. Der Zähler feststellt, wie viele Etiketten in der vorhergesagten Vektor hat gemeinsam mit dem Boden die Wahrheit, und das Verhältnis berechnet, wie viele der vorhergesagten wahr Etiketten sind tatsächlich in der ground truth.
Das Verhältnis, wie viele der tatsächlichen labels vorhergesagt wurden. Der Zähler feststellt, wie viele Etiketten in der vorhergesagten Vektor hat gemeinsam mit der ground truth (wie oben), dann findet das Verhältnis der Anzahl der tatsächlichen labels, deshalb bekommen, was Bruchteil der tatsächlichen Etiketten vorhergesagt wurden.
Es gibt auch andere Metriken als gut.
Label mit Sitz
Hier die Dinge getan werden Etiketten-Weise. Für jedes Etikett die Metriken (zB. precision, recall) werden berechnet, und dann diesen label-Weise Metriken sind aggregiert. Also, in diesem Fall werden Sie am Ende der Berechnung der precision/recall für jedes Etikett über den gesamten Datenbestand, wie Sie für eine binäre Klassifikation (wie jedes label hat eine binäre Zuordnung), dann aggregieren.
Der einfache Weg ist, um die Allgemeine form.
Dies ist nur eine Erweiterung der standard-multi-Klasse entspricht.
Makro gemittelt
Micro gemittelt
Hier die werden die true positive, false positive, true negative und false negative zählt jeweils nur für die label.
Hier $B$ steht für die Verwirrung-matrix-basierte Metrik. In Ihrem Fall würden Sie einen Stecker in den standard precision-und recall-Formeln. Für makro-Durchschnitt, den Sie übergeben, die pro Etikett zu zählen und dann die Summe, für die Mikro-Durchschnitt, die Sie durchschnittlich das zählt zuerst, dann bewerben Sie sich Ihrer metrischen Funktion.
Vielleicht haben Sie Interesse, einen Blick in den code für die mult-label-Maße hier , die ein Teil des Pakets mldr in R. Auch könnten Sie interessieren, schauen Sie in die Java-multi-label-Bibliothek MULAN.
Dies ist ein nettes Papier zu bekommen, in die verschiedenen Metriken: Eine Überprüfung auf Multi-Label-Learning-Algorithmen
InformationsquelleAutor der Antwort phoxis
Die Antwort ist, dass Sie müssen berechnen Sie precision und recall für jede Klasse, dann Durchschnitt Sie zusammen. E. g. wenn Sie Klassen A, B und C, dann ist Ihre Präzision:
Gleiche für einen Rückruf.
Ich bin kein Experte, aber das ist, was ich festgestellt haben, basiert auf den folgenden Quellen:
https://list.scms.waikato.ac.nz/pipermail/wekalist/2011-March/051575.html
http://stats.stackexchange.com/questions/21551/how-to-compute-precision-recall-for-multiclass-multilabel-classification
InformationsquelleAutor der Antwort Mark E. Haase
Nun, zu berechnen, erinnern für Ein label können Sie Lesen aus den Werten aus der confusion matrix und berechnen:
Nun, lassen Sie uns berechnen, Präzision für label Eine, die Sie Lesen können, aus den Werten aus der confusion matrix und berechnen:
Müssen Sie nur das gleiche tun für die verbleibenden Etiketten B und C. Dies gilt für alle multi-class classification problem.
Hier ist der vollständige Artikel, der darüber berichtet, wie die Berechnung precision und recall für alle multi-class classification problem, auch mit Beispielen.
InformationsquelleAutor der Antwort kavgan
Einfache Mittelung tun, wenn die Klassen ausgeglichen sind.
Sonst, erinnern für jeden echten Klasse benötigt werden, gewichtet mit der Prävalenz der Klasse, und die Genauigkeit für jeden vorhergesagten label muss gewichtet werden, indem die Neigung (Wahrscheinlichkeit) für jedes label. Entweder Weg, Sie bekommen Rand Genauigkeit.
Ein direkter Weg ist, um eine normierte Kontingenz-Tabelle (Division durch N, also die Tabelle fügt bis zu 1, für jede Kombination von label und Klasse) und fügen Sie die diagonalen zu bekommen Rand Genauigkeit.
Aber wenn die Klassen sind nicht ausgewogen, die Neigung bleibt und eine chance korrigierte Methode wie kappa ist besser geeignet, oder noch besser ROC-Analyse oder eine chance, die richtige Maßnahme, wie informedness (Höhe über die Möglichkeit line-in ROC).
InformationsquelleAutor der Antwort David M W Powers
In python mit
sklearn
undnumpy
:InformationsquelleAutor der Antwort Cristian Garcia