Ich habe einen Testsatz von 100 Fällen und zwei Klassifikatoren.
Ich erstellte Vorhersagen und berechnete die ROC AUC, Sensitivität und Spezifität für beide Klassifikatoren.
Frage 1: Wie kann ich den p-Wert berechnen, um zu überprüfen, ob einer in Bezug auf alle Scores (ROC AUC, Sensitivität, Spezifität) signifikant besser als der andere ist?
Jetzt habe ich für den gleichen Testsatz von 100 Fällen unterschiedliche und unabhängige Funktionszuweisungen für jeden Fall. Dies liegt daran, dass meine Funktionen festgelegt, aber subjektiv sind und von mehreren (5) Personen bereitgestellt werden.
Also habe ich meine beiden Klassifikatoren erneut für 5 "Versionen" meines Testsatzes bewertet und 5 ROC AUCs, 5 Sensitivitäten und 5 Spezifitäten für beide Klassifikatoren erhalten. Dann berechnete ich den Mittelwert jeder Leistungsmessung für 5 Probanden (mittlere ROC AUC, mittlere Sensitivität und mittlere Spezifität) für beide Klassifikatoren.
Frage 2: Wie kann ich den p-Wert berechnen, um zu überprüfen, ob einer in Bezug auf die Durchschnittswerte (durchschnittliche ROC AUC, durchschnittliche Sensitivität, durchschnittliche Spezifität) signifikant besser als der andere ist?
Antworten mit einem Beispiel für Python (vorzugsweise) oder MatLab-Code sind mehr als willkommen.
Antworten:
Wojtek J. Krzanowski und David J. Hand ROC-Kurven für kontinuierliche Daten (2009) sind eine großartige Referenz für alle Dinge, die mit ROC-Kurven zu tun haben. Es sammelt eine Reihe von Ergebnissen in einer frustrierend breiten Literaturbasis, in der häufig unterschiedliche Begriffe verwendet werden, um dasselbe Thema zu diskutieren.
Darüber hinaus bietet dieses Buch Kommentare und Vergleiche zu alternativen Methoden, die zur Schätzung derselben Größen hergeleitet wurden, und weist darauf hin, dass einige Methoden Annahmen treffen, die in bestimmten Zusammenhängen möglicherweise unhaltbar sind. Dies ist ein solcher Kontext; Andere Antworten geben die Hanley & McNeil-Methode an, bei der das Binormalmodell für die Verteilung von Punktzahlen zugrunde gelegt wird. Dies kann in Fällen ungeeignet sein, in denen die Verteilung von Klassenpunktzahlen nicht (nahezu) normal ist. Die Annahme normalverteilter Punktzahlen scheint in modernen maschinellen Lernzusammenhängen besonders ungeeignet zu sein. Typische gängige Modelle wie xgboost tendieren dazu, Punktzahlen mit einer "Badewanne" -Verteilung für Klassifizierungsaufgaben zu erzeugen ( dh Verteilungen mit hohen Dichten in den Extremen nahe 0 und 1) ).
Frage 1 - AUC
In Abschnitt 6.3 werden Vergleiche der ROC-AUC für zwei ROC-Kurven erörtert (S. 113-114). Insbesondere ist mein Verständnis , dass diese beiden Modelle sind korreliert, so dass die Informationen darüber , wie zu berechnen von entscheidender Bedeutung ist hier; Andernfalls wird Ihre Teststatistik verzerrt, da der Korrelationsbeitrag nicht berücksichtigt wird.r
Since another answers gives the Hanley and McNeil expressions for estimators of AUC variance, here I'll reproduce the DeLong estimator from p. 68:
Note thatF is the cumulative distribution function of the scores in population N and G is the cumulative distribution function of the scores in population P. A standard way to estimate F and G is to use the ecdf. The book also provides some alternative methods to the ecdf estimates, such as kernel density estimation, but that is outside the scope of this answer.
The statisticsZ and z may be assumed to be standard normal deviates, and statistical tests of the null hypothesis proceed in the usual way. (See also: hypothesis-testing)
This is a simplified, high-level outline of how hypothesis testing works:
Testing, in your words, "whether one classifier is significantly better than the other" can be rephrased as testing the null hypothesis that the two models have statistically equal AUCs against the alternative hypothesis that the statistics are unequal.
This is a two-tailed test.
We reject the null hypothesis if the test statistic is in the critical region of the reference distribution, which is a standard normal distribution in this case.
The size of the critical region depends on the levelα of the test. For a significance level of 95%, the test statistic falls in the critical region if z>1.96 or z<−1.96 . (These are the α/2 and 1−α/2 quantiles of the standard normal distribution.) Otherwise, you fail to reject the null hypothesis and the two models are statistically tied.
Question 1 - Sensitivity and Specificity
The general strategy for comparing sensitivity and specificity is to observe that both of these statistics amount to performing statistical inference on proportions, and this is a standard, well-studied problem. Specifically, sensitivity is the proportion of population P that has a score greater than some thresholdt , and likewise for specificity wrt population N:
The main sticking point is developing the appropriate test given that the two sample proportions will be correlated (as you've applied two models to the same test data). This is addressed on p. 111.
The mcnemar-test is appropriate when you haveN subjects, and each subject is tested twice, once for each of two dichotomous outcomes. Given the definitions of sensitivity and specificity, it should be obvious that this is exactly the test that we seek, since you've applied two models to the same test data and computed sensitivity and specificity at some threshold.
The McNemar test uses a different statistic, but a similar null and alternative hypothesis. For example, considering sensitivity, the null hypothesis is that the proportiontp1=tp2 , and the alternative is tp1≠tp2 . Re-arranging the proportions to instead be raw counts, we can write a contingency table
and we have the test statistic
For the specificity, you can use the same procedure, except that you replace thesrPi with the srNj .
Question 2
It seems that it is sufficient to merge the results by averaging the prediction values for each respondent, so that for each model you have 1 vector of 100 averaged predicted values. Then compute the ROC AUC, sensitivty and specificity statistics as usual, as if the original models didn't exist. This reflects a modeling strategy that treats each of the 5 respondents' models as one of a "committee" of models, sort of like an ensemble.
quelle
Let me keep the answer short, because this guide does explain a lot more and better.
Basically, you have your number of True Postives (nTP ) and number of True Negatives (nTN ). Also you have your AUC, A. The standard error of this A is:
withQ1=A/(2−A) and Q2=2A2/(1+A) .
To compare two AUCs you need to compute the SE of them both using:
wherer is a quantity that represents the correlation induced between the two areas by the study of the same set of cases. If your cases are different, then r=0 ; otherwise you need to look it up (Table 1, page 3 in freely available article).
Given that you compute thez -Score by
From there you can compute p-value using probability density of a standard normal distribution. Or simply use this calculator.
This hopefully answers Question 1. - at least the part comparing AUCs. Sens/Spec is already covered by the ROC/AUC in some way. Otherwise, the answer I think lies in the Question 2.
As for Question 2, Central Limit Theorem tells us that your summary statistic would follow a normal distribution. Hence, I would think a simple t-test would suffice (5 measures of one classifier against 5 measures of the second classifier where measures could be AUC, sens, spec)
Edit: corrected formula forSE (…−2r… )
quelle
For Question 1, @Sycorax provided a comprehensive answer.
For Question 2, to the best of my knowledge, averaging predictions from subjects is incorrect. I decided to use bootstrapping to compute p-values and compare models.
In this case, the procedure is as follows:
This procedure performs one-tailed test and assumes that M1 mean performance > M2 mean performance.
A Python implementation of bootstrapping for computing p-values comparing multiple readers can be found in this GitHub repo: https://github.com/mateuszbuda/ml-stat-util
quelle