Der beste Weg, um einen durchschnittlichen F-Score mit unausgeglichenen Klassen zu erzielen

7

Ich habe einen Datensatz mit unausgeglichenen Klassen. Drei Klassen machen etwa 60% der Daten aus. Außerdem habe ich verschiedene Testaufteilungen, die ein Ungleichgewicht verursachen. Zum Beispiel:

Zugset: label_1 ... label_n

Testsatz: label_1, label_3, label_9

Dies bedeutet, dass obwohl ich nur 3 Etiketten in meinem Testsatz habe, diese möglicherweise als 1 von n Etiketten vorhergesagt werden kann. Wenn ich also sklearn.metrics.precision_recall_fscore_support verwende, erhalte ich eine Matrix mit vielen Nullen.

Mein Problem ist, dass ich einen durchschnittlichen F-Score über alle Klassen hinweg erhalten muss, anstatt einen Wert pro Klasse. Nur einen Durchschnitt der von der obigen sklearn-Funktion zurückgegebenen Matrix zu nehmen, ist jedoch immer ein sehr niedriger Wert, da es so viele Nullen gibt. Andererseits macht es für mich auch keinen Sinn, einen Durchschnitt über Werte ungleich Null zu nehmen, da die Gesamtzahl der möglichen Vorhersagen die Gesamtzahl der Klassen sein sollte.

Gibt es in diesem Fall eine gute Möglichkeit, einen Durchschnitt zu ermitteln? Ich habe versucht, die Optionen für Mikro, Makro und gewichteten Durchschnitt zu verwenden, bin mir aber nicht sicher, welche richtig ist.

Könnte mir bitte jemand dabei helfen?

SanjanaS801
quelle

Antworten:

1

"Ich bin nicht sicher, welches richtig ist"

Hier gibt es kein Richtig oder Falsch.

Die Leistung eines Klassifikators kann mit einem dargestellt werden nnMatrix. Wenn Sie versuchen, die Leistung mit einer einzigen Metrik darzustellen, verlieren Sie einige Informationen.

Mit anderen Worten, da es unmöglich ist, die Verwirrungsmatrix basierend auf einer einzelnen Metrik wiederherzustellen, kommt es zu einem Informationsverlust, wenn wir nur eine einzige Metrik betrachten, um die Leistung eines Klassifikators zu interpretieren.

Aber dennoch ... um zu entscheiden, welcher Klassifikator unter mehreren Alternativen besser ist - brauchen wir eine einzige Metrik ...

Welche einzelne Metrik repräsentiert die Leistung am besten ? Das sind subjektive Fragen. Hier werden Statistiker kreativ. Aus diesem Grund wurden so viele Metriken festgelegt.

Unterschiedliche Metriken bevorzugen unterschiedliche Arten von Informationen, die aus der Verwirrungsmatrix extrahiert werden können. Es liegt an Ihnen, zu entscheiden, welche die Informationen erfasst, die Sie als "am wichtigsten" betrachten.

Einige Kriterien, die Sie berücksichtigen können:

  • Sind alle Klassen gleich wichtig / sind alle Instanzen gleich wichtig?
  • Sind Klassifizierung und Fehlklassifizierungen gleichermaßen wichtig?
  • Sind falsch positive und falsch negative Ergebnisse gleichermaßen wichtig?
  • Sollte die Leistung absolut oder relativ zu einem zufälligen Klassifikator sein?
  • Sollte die Metrik in gewissem Sinne linear sein?
  • usw.
Lior Kogan
quelle
Danke für deine Antwort! Ich verstehe, dass es keine bestimmte Metrik gibt, auf die ich mich konzentrieren kann, aber in diesem Fall habe ich den F-Score gewählt, da die Klassen unausgewogen sind. Meine Frage ist jedoch wirklich, wie ich eine durchschnittliche Darstellung des F-Scores für den Klassifikator als Ganzes und nicht pro Klasse erhalte. Die Mittelung über eine dünne Matrix ergibt sehr niedrige Werte, aber es wäre nicht richtig, einfach über die Werte ungleich Null zu mitteln. Im Wesentlichen könnte mein Problem auf den besten Weg reduziert werden, einen Durchschnitt über eine spärliche Matrix zu ziehen, bei der die Werte ungleich Null mehr als die
Nullen
"... aber es wäre nicht richtig, einfach über die Werte ungleich Null zu mitteln". Wieder - kein richtig oder falsch. Mikro, Makro und Gewichtung - alle haben ihre eigene Semantik. Was soll Ihr Durchschnitt darstellen? Es liegt an Ihnen, zu entscheiden. Wenn Sie möchten, dass Werte ungleich Null stärker gewichtet werden, fahren Sie fort.
Lior Kogan