Mam zestaw testowy 100 przypadków i dwa klasyfikatory.
Wygenerowałem prognozy i obliczyłem AUC ROC, czułość i swoistość dla obu klasyfikatorów.
Pytanie 1: Jak obliczyć wartość p, aby sprawdzić, czy jedna jest znacznie lepsza od drugiej pod względem wszystkich wyników (AOC ROC, czułość, swoistość)?
Teraz, dla tego samego zestawu testowego 100 przypadków, mam różne i niezależne przypisania funkcji dla każdego przypadku. Wynika to z faktu, że moje funkcje są stałe, ale subiektywne i dostarczane przez wiele (5) podmiotów.
Tak więc ponownie oceniłem moje dwa klasyfikatory dla 5 „wersji” mojego zestawu testowego i uzyskałem 5 AUC ROC, 5 czułości i 5 swoistości dla obu klasyfikatorów. Następnie obliczyłem średnią z każdej miary wydajności dla 5 osób (średnia ROC AUC, średnia czułość i średnia swoistość) dla obu klasyfikatorów.
Pytanie 2: Jak obliczyć wartość p, aby sprawdzić, czy jedna jest znacznie lepsza od drugiej pod względem średnich wyników (średnia AUC ROC, średnia czułość, średnia swoistość)?
Odpowiedzi za pomocą przykładowego kodu python (najlepiej) lub kodu MatLab są mile widziane.
Odpowiedzi:
Wojtek J. Krzanowski i David J. Hand Krzywe ROC dla danych ciągłych (2009) to świetne odniesienie do wszystkich rzeczy związanych z krzywymi ROC. Gromadzi razem szereg wyników w frustrująco szerokiej bazie literatury, która często wykorzystuje inną terminologię do omawiania tego samego tematu.
Ponadto książka ta zawiera komentarze i porównania metod alternatywnych, które zostały uzyskane w celu oszacowania tych samych wielkości, i wskazuje, że niektóre metody przyjmują założenia, które mogą być nie do utrzymania w określonych kontekstach. To jest jeden z takich kontekstów; inne odpowiedzi podają metodę Hanleya i McNeila, która zakłada dwumianowy model rozkładów wyników, co może być nieodpowiednie w przypadkach, w których rozkład wyników klas nie jest (zbliżony) do normy. Założenie normalnie rozłożonych wyników wydaje się szczególnie nieodpowiednie w nowoczesnych kontekstach uczenia maszynowego , typowe powszechne modele, takie jak xgboost, mają tendencję do tworzenia wyników z rozkładem „wanny” dla zadań klasyfikacyjnych (to znaczy rozkładów o dużej gęstości w skrajnościach bliskich 0 i 1 ).
Pytanie 1 - AUC
W sekcji 6.3 omówiono porównania AUC ROC dla dwóch krzywych ROC (str. 113–114). W szczególności rozumiem, że te dwa modele są ze sobą skorelowane, więc informacja o tym, jak obliczyć jest tutaj niezwykle ważna; w przeciwnym razie statystyki testowe będą tendencyjne, ponieważ nie uwzględniają udziału korelacji.r
Ponieważ inne odpowiedzi podają wyrażenia Hanleya i McNeila dla estymatorów wariancji AUC, tutaj odtworzę estymator DeLong z p. 68:
Zauważ, że to funkcja rozkładu skumulowanego wyników w populacji N, a G to funkcja rozkładu skumulowanego wyników w populacji P. Standardowym sposobem oszacowania F i G jest użycie pliku ecdf . Książka zawiera również alternatywne metody szacowania ekdf, takie jak szacowanie gęstości jądra, ale to nie jest objęte zakresem tej odpowiedzi.F G F G
Statystyki i z można uznać za standardowe odchylenia normalne, a testy statystyczne hipotezy zerowej przebiegają w zwykły sposób. (Zobacz także: testowanie hipotez )Z z
Jest to uproszczony, ogólny zarys działania testowania hipotez:
Testując, twoimi słowami, „czy jeden klasyfikator jest znacznie lepszy od drugiego”, można sformułować inaczej, testując hipotezę zerową, że oba modele mają statystycznie równe AUC względem alternatywnej hipotezy, że statystyki są nierówne.
To jest test dwustronny.
Odrzucamy hipotezę zerową, jeśli statystyka testowa znajduje się w obszarze krytycznym rozkładu odniesienia, który jest w tym przypadku standardowym rozkładem normalnym.
Pytanie 1 - Wrażliwość i swoistość
Głównym punktem spornym jest opracowanie odpowiedniego testu, biorąc pod uwagę, że dwie proporcje próbki będą skorelowane (ponieważ zastosowałeś dwa modele do tych samych danych testowych). Jest to adresowane na str. 111.
pytanie 2
Wydaje się, że wystarczy scalić wyniki poprzez uśrednienie wartości prognozy dla każdego respondenta, tak że dla każdego modelu masz 1 wektor 100 uśrednionych wartości prognozowanych. Następnie jak zwykle oblicz AUC ROC, czułość i statystyki specyficzności, tak jakby oryginalne modele nie istniały. Odzwierciedla to strategię modelowania, która traktuje każdy z 5 modeli respondentów jako jeden z „komitetów” modeli, coś w rodzaju zespołu.
źródło
Pozwól, że udzielę krótkiej odpowiedzi, ponieważ ten przewodnik wyjaśnia znacznie więcej i lepiej .
Aby porównać dwa AUC, musisz obliczyć SE dla obu przy użyciu:
Stamtąd można obliczyć wartość p przy użyciu gęstości prawdopodobieństwa standardowego rozkładu normalnego. Lub po prostu użyj tego kalkulatora.
Mam nadzieję, że to odpowiada na pytanie 1 . - przynajmniej część porównująca AUC. Sens / Spec jest już w jakiś sposób objęty ROC / AUC. W przeciwnym razie odpowiedź, jak sądzę, leży w pytaniu 2.
Co do pytania 2 , centralne twierdzenie graniczne mówi nam, że twoja statystyka podsumowująca byłaby zgodna z rozkładem normalnym. Dlatego sądzę, że wystarczyłby prosty test t (5 miar jednego klasyfikatora na 5 miar drugiego klasyfikatora, gdzie miarami mogłyby być AUC, sens, spec)
źródło
Na pytanie 1 @Sycorax udzielił wyczerpującej odpowiedzi.
W przypadku pytania 2, o ile mi wiadomo, uśrednianie prognoz z badanych jest nieprawidłowe. Zdecydowałem się użyć ładowania początkowego do obliczenia wartości p i porównania modeli.
W takim przypadku procedura jest następująca:
Ta procedura wykonuje jednostronny test i zakłada, że średnia wydajność M1> średnia wydajność M2.
W tym repozytorium GitHub można znaleźć implementację ładowania początkowego Pythona do obliczania wartości p porównujących wiele czytników: https://github.com/mateuszbuda/ml-stat-util
źródło