Das Problem mit der Genauigkeit
Die Standardgenauigkeit ist definiert als das Verhältnis der korrekten Klassifizierungen zur Anzahl der durchgeführten Klassifizierungen.
accuracy:=correct classificationsnumber of classifications
Es ist also ein Gesamtmaß für alle Klassen, und wie wir gleich sehen werden, ist es kein gutes Maß, ein Orakel von einem tatsächlichen nützlichen Test zu unterscheiden. Ein Orakel ist eine Klassifizierungsfunktion, die für jede Stichprobe eine zufällige Schätzung zurückgibt. Ebenso wollen wir die Klassifizierungsleistung unserer Klassifizierungsfunktion bewerten können. Genauigkeit \ textit {kann ein nützliches Maß sein, wenn wir die gleiche Anzahl von Stichproben pro Klasse haben, aber wenn wir einen unausgeglichenen Satz von Stichproben haben, ist Genauigkeit überhaupt nicht nützlich. Darüber hinaus kann ein Test eine hohe Genauigkeit aufweisen, jedoch schlechter abschneiden als ein Test mit einer geringeren Genauigkeit.
Wenn wir eine Verteilung der Stichproben haben, bei der 90% der Stichproben zur Klasse , 5% zu und weitere 5% zu dann die folgende Klassifizierungsfunktion wird eine Genauigkeit von :ABC0.9
classify(sample):={Aif ⊤
Angesichts der Tatsache, dass wir wissen, wie funktioniert, ist es offensichtlich, dass dies die Klassen überhaupt nicht auseinanderhalten kann. Ebenso können wir eine Klassifikationsfunktion konstruierenclassify
classify(sample):=guess⎧⎩⎨ABCwith p =0.96with p =0.02with p =0.02
die eine Genauigkeit von und nicht immer vorhersagt, aber dennoch vorausgesetzt
, dass wir wissen, wie funktioniert, ist es offensichtlich, dass es Klassen nicht unterscheiden kann. Die Genauigkeit in diesem Fall sagt uns nur, wie gut unsere Klassifizierungsfunktion zu schätzen ist. Dies bedeutet, dass Genauigkeit kein gutes Maß ist, um ein Orakel von einem nützlichen Test zu unterscheiden.0.96⋅0.9+0.02⋅0.05⋅2=0.866Aclassify
Genauigkeit pro Klasse
Wir können die Genauigkeit individuell pro Klasse berechnen, indem wir unserer Klassifizierungsfunktion nur Stichproben derselben Klasse zuweisen und die Anzahl der korrekten Klassifizierungen und falschen Klassifizierungen merken und zählen. Dann berechnen wir die . Wir wiederholen dies für jede Klasse. Wenn wir eine Klassifizierungsfunktion haben, die die Klasse genau erkennt,
aber eine zufällige Schätzung für die anderen Klassen ausgibt, ergibt dies eine Genauigkeit von für
und eine Genauigkeit vonaccuracy:=correct/(correct+incorrect)A1.00A0.33für die anderen Klassen. Dies bietet uns bereits eine viel bessere Möglichkeit, die Leistung unserer Klassifizierungsfunktion zu beurteilen. Ein Orakel, das immer dieselbe Klasse errät, ergibt eine Genauigkeit von pro Klasse für diese Klasse, jedoch für die andere Klasse. Wenn unser Test nützlich ist, sollten alle Genauigkeiten pro Klasse . Ansonsten ist unser Test nicht besser als der Zufall. Die Genauigkeit pro Klasse berücksichtigt jedoch keine falsch positiven Ergebnisse. Obwohl unsere Klassifizierungsfunktion eine Genauigkeit von 100% für die Klasse gibt es auch falsche Positive für (z. B. ein fälschlicherweise als klassifiziert wurde ).1.000.00>0.5AABA
Sensitivität und Spezifität
In medizinischen Tests wird Empfindlichkeit definiert als das Verhältnis zwischen den Personen, bei denen die Krankheit richtig erkannt wurde, und der Anzahl der Personen, die tatsächlich an der Krankheit leiden. Spezifität ist definiert als das Verhältnis zwischen korrekt als gesund identifizierten Personen und der Anzahl der tatsächlich gesunden Personen. Die Anzahl der tatsächlich erkrankten Personen entspricht der Anzahl der zutreffend positiven Testergebnisse plus der Anzahl der falsch negativen Testergebnisse. Die Anzahl der tatsächlich gesunden Menschen entspricht der Anzahl der wahrhaft negativen Testergebnisse plus der Anzahl der falsch positiven Testergebnisse.
Binäre Klassifikation
Bei binären Klassifizierungsproblemen gibt es zwei Klassen und . bezieht sich auf die Anzahl der Proben, die korrekt als zur Klasse gehörend identifiziert wurden, und bezieht sich auf die Anzahl der Proben, die fälschlicherweise als zur Klasse gehörend identifiziert wurden . In diesem Fall sind Sensitivität und Spezifität wie folgt definiert:PNTnnFnn
sensitivity:=TPTP+FNspecificity:=TNTN+FP
TP sind die wahren Positiven sind die falschen Negative,
sind die wahren Negative und sind die falschen Positiven . In Bezug auf Negative und Positive zu denken ist für medizinische Tests in Ordnung, aber um eine bessere Intuition zu erhalten, sollten wir nicht in Bezug auf Negative und Positive denken, sondern in generischen Klassen und . Dann können wir sagen , dass die Menge der Proben korrekt identifiziert als zu ist und die Menge der Proben , die tatsächlich gehören zu istFNTNFPαβαTααTα+Fβ. Die Menge der Proben, die korrekt als nicht zu gehörend identifiziert wurden, ist und die Menge der Proben, die tatsächlich nicht zu ist
. Dies gibt uns die Sensitivität und Spezifität für , aber wir können auch die gleiche Sache auf die Klasse anwenden . Die Menge der Proben, die korrekt als zu gehörend identifiziert wurden, ist
und die Menge der Proben, die tatsächlich zu ist . Die Menge der Proben, die korrekt als nicht zu gehörend identifiziert wurden, istαTβαTβ+FααββTββTβ+FαβTαund die Menge der Proben, die tatsächlich nicht zu ist . Wir erhalten so eine Sensibilität und Spezifität pro Klasse:βTα+Fβ
sensitivityα:=TαTα+Fβspecificityα:=TβTβ+Fαsensitivityβ:=TβTβ+Fαspecificityβ:=TαTα+Fβ
Wir beobachten jedoch, dass und . Das heißt, wenn wir nur zwei Klassen haben, brauchen wir keine Sensitivität und Spezifität pro Klasse.sensitivityα=specificityβspecificityα=sensitivityβ
N-Ary-Klassifikation
Sensitivität und Spezifität pro Klasse sind nicht sinnvoll, wenn wir nur zwei Klassen haben, aber wir können sie auf mehrere Klassen ausweiten. Sensitivität und Spezifität sind definiert als:
sensitivity:=true positivestrue positives+false negativesspecificity:=true negativestrue negatives+false-positives
Das wahre Positive ist einfach , das falsche Negative ist einfach und das falsche Positive ist einfach . Das Auffinden der wahren Negative ist viel schwieriger, aber wir können sagen, dass, wenn wir etwas korrekt als zu einer anderen Klasse als gehörend klassifizieren, es als wahres Negativ zählt. Das heißt , wir haben zumindest wahr Negative. Dies sind jedoch nicht alle Negative. Alle falschen Klassifikationen für eine andere Klasse als sind ebenfalls echte Negative, da sie nicht korrekt als zu gehörig identifiziert wurden . Tn∑i(Fn,i)∑i(Fi,n)n∑i(Ti)−T(n)nn∑i(∑k(Fi,k))repräsentiert alle falschen Klassifikationen. Daraus müssen wir die Fälle subtrahieren , wo die Eingangsklasse wurde bedeutet , dass wir die falschen Negativ subtrahieren haben , die ist , aber wir müssen auch die Fehlalarme subtrahieren weil es sich um falsch positive und nicht um wahr negative handelt, müssen wir auch subtrahieren und schließlich
. Zusammenfassend haben wir:nn∑i(Fn,i)n∑i(Fi,n)∑i(Ti)−T(n)+∑i(∑k(Fn,i))−∑i(Fn,i)−∑i(Fi,n)
true positives:=Tntrue negatives:=∑i(Ti)−T(n)+∑i(∑k(Fn,i))−∑i(Fn,i)−∑i(Fi,n)false positives:=∑i(Fi,n)false negatives:=∑i(Fn,i)
sensitivity(n):=TnTn+∑i(Fn,i)specificity(n):=∑i(Ti)−Tn+∑i(∑k(Fi,k))−∑i(Fn,i)−∑i(Fi,n)∑i(Ti)−Tn+∑i(∑k(Fi,k))−∑i(Fn,i)
Vertrauen einführen
Wir definieren ein das ein Maß dafür ist, wie sicher wir sein können, dass die Antwort unserer Klassifizierungsfunktion tatsächlich korrekt ist. sind alle Fälle, in denen die Klassifizierungsfunktion mit geantwortet hat, von denen jedoch nur korrekt ist. Wir definieren alsoconfidence⊤Tn+∑i(Fi,n)nTn
confidence⊤(n):=TnTn+∑i(Fi,n)
Aber können wir auch ein definieren das ein Maß dafür ist, wie sicher wir sein können, dass unsere Klassifizierungsfunktion, wenn sie mit einer anderen Klasse als antwortet , tatsächlich kein ?confidence⊥nn
Nun, wir erhalten Ausnahme von . Wir definieren also∑i(∑k(Fi,k))−∑i(Fi,n)+∑i(Ti)−Tn∑i(Fn,i)
confidence⊥(n)=∑i(∑k(Fi,k))−∑i(Fi,n)+∑i(Ti)−Tn−∑i(Fn,i)∑i(∑k(Fi,k))−∑i(Fi,n)+∑i(Ti)−Tn