Mam dwa klasyfikatory
- Odp .: naiwna sieć bayesowska
- B: drzewo (pojedynczo połączona) sieć bayesowska
Pod względem dokładności i innych miar A wykonuje się stosunkowo gorzej niż B. Jednak gdy używam pakietów R ROCR i AUC do wykonania analizy ROC, okazuje się, że AUC dla A jest wyższe niż AUC dla B. Dlaczego to jest wydarzenie?
Prawdziwie dodatnia (tp), fałszywie dodatnia (fp), fałszywie ujemna (fn), prawdziwie ujemna (tn), czułość (sen), specyficzność (spec), dodatnia wartość predykcyjna (ppv), ujemna wartość predykcyjna (npv) oraz dokładność (acc) dla A i B są następujące.
+------+---------+---------+
| | A | B |
+------+---------+---------+
| tp | 3601 | 769 |
| fp | 0 | 0 |
| fn | 6569 | 5918 |
| tn | 15655 | 19138 |
| sens | 0.35408 | 0.11500 |
| spec | 1.00000 | 1.00000 |
| ppv | 1.00000 | 1.00000 |
| npv | 0.70442 | 0.76381 |
| acc | 0.74563 | 0.77084 |
+------+---------+---------+
Z wyjątkiem sens i powiązań (spec i ppv) na marginesach (z wyjątkiem tp, fn, fn i tn), B wydaje się działać lepiej niż A.
Kiedy obliczam AUC dla sens (oś y) vs 1-spec (oś x)
aucroc <- auc(roc(data$prediction,data$labels));
oto porównanie AUC.
+----------------+---------+---------+
| | A | B |
+----------------+---------+---------+
| sens vs 1-spec | 0.77540 | 0.64590 |
| sens vs spec | 0.70770 | 0.61000 |
+----------------+---------+---------+
Oto moje pytania:
- Dlaczego AUC dla A jest lepsze niż B, skoro B „wydaje się” przewyższać A pod względem dokładności?
- Jak więc naprawdę oceniać / porównywać wyniki klasyfikacji A i B? Mam na myśli, czy używam wartości AUC? Czy używam wartości acc, a jeśli tak, to dlaczego?
- Ponadto, gdy zastosuję odpowiednie reguły punktacji do A i B, B przewyższa A pod względem utraty logów, kwadratowej i sferycznej (p <0,001). Jak wpływają one na ocenę wyników klasyfikacji w odniesieniu do AUC?
- Wykres ROC dla A wygląda bardzo gładko (jest to łuk łukowy), ale wykres ROC dla B wygląda jak zestaw połączonych linii. Dlaczego to?
Zgodnie z życzeniem, oto wykresy dla modelu A.
Oto wykresy dla modelu B.
Oto wykresy histogramów rozkładu prawdopodobieństwa dla A i B. (przerwy są ustawione na 20).
Oto wykres rozrzutu prawdopodobieństw B względem A.
źródło
Odpowiedzi:
źródło
Dlaczego AUC dla A jest lepsze niż B, skoro B „wydaje się” przewyższać A pod względem dokładności?
Dokładność jest obliczana przy wartości progowej 0,5. Podczas gdy AUC jest obliczane przez dodanie wszystkich „dokładności” obliczonych dla wszystkich możliwych wartości progowych. ROC można postrzegać jako średnią (wartość oczekiwaną) tych dokładności, gdy są one obliczane dla wszystkich wartości progowych.
Jak więc naprawdę oceniać / porównywać wyniki klasyfikacji A i B? Mam na myśli, czy używam wartości AUC? czy używam wartości acc? i dlaczego?
To zależy. Krzywe ROC mówią coś o tym, jak dobrze twój model rozdziela dwie klasy, bez względu na to, gdzie znajduje się wartość progowa. Dokładność jest miarą, która działa dobrze, gdy klasy zachowują tę samą równowagę na zestawach pociągów i testów, a wyniki są naprawdę prawdopodobieństwem. ROC daje więcej wskazówek na temat zachowania modelu w przypadku naruszenia tego założenia (jest to jednak tylko pomysł).
ponadto, gdy zastosuję odpowiednie reguły punktacji do A i B, B przewyższa A pod względem utraty logu, straty kwadratowej i straty sferycznej (p <0,001). jak wpływają one na ocenę wyników klasyfikacji w odniesieniu do AUC?
Nie wiem. Musisz lepiej zrozumieć, o czym są twoje dane. Co każdy model jest w stanie zrozumieć na podstawie twoich danych. I zdecyduj później, który kompromis jest najlepszy. Dzieje się tak dlatego, że nie ma uniwersalnych wskaźników dotyczących wydajności klasyfikatora.
Wykres ROC dla A wygląda bardzo gładko (jest to łuk łukowy), ale wykres ROC dla B wygląda jak zestaw połączonych linii. dlaczego to?
Jest tak prawdopodobnie dlatego, że model bayesowski zapewnia płynne przejścia między tymi dwiema klasami. Przekłada się to na wiele wartości progowych. Co oznacza wiele punktów na krzywej ROC. Drugi model prawdopodobnie generuje mniej wartości ze względu na przewidywanie o tej samej wartości w większych obszarach przestrzeni wejściowej. Zasadniczo również pierwsza krzywa ROC jest tworzona przez linie, jedyną różnicą jest to, że istnieje tak wiele sąsiadujących małych linii, że widzisz ją jako krzywą.
źródło
Po pierwsze, chociaż wartość graniczna (0,5) jest taka sama, nie jest w ogóle porównywalna między A i B. W rzeczywistości wygląda całkiem inaczej niż na histogramach! Spójrz na B: wszystkie twoje prognozy wynoszą <0,5.
Po drugie, dlaczego B jest tak dokładne? Z powodu braku równowagi klas. W teście B masz 19138 negatywnych przykładów i 6687 pozytywów (dlaczego liczby są różne w A, nie są dla mnie jasne: może brakujące wartości?). Oznacza to, że po prostu mówiąc, że wszystko jest negatywne, mogę już osiągnąć całkiem dobrą dokładność: dokładnie 19138 / (19138 + 6687) = 74%. Zauważ, że nie wymaga to absolutnie żadnej wiedzy poza tym, że istnieje nierównowaga między klasami: nawet najgłupszy model może to zrobić!
I dokładnie to robi test B na progu 0,5 ... otrzymujesz (prawie) tylko negatywne prognozy.
A jest bardziej mieszaną torbą. Chociaż ma nieco niższą dokładność, należy pamiętać, że jego czułość jest znacznie wyższa w tym punkcie odcięcia ...
Wreszcie, nie można porównać dokładności (wydajność na jednym progu) z AUC (średnia wydajność na wszystkich możliwych progach). Ponieważ te wskaźniki mierzą różne rzeczy, nic dziwnego, że są one różne.
Musisz pomyśleć: co naprawdę chcesz zrobić? Co jest ważne? Ostatecznie tylko Ty możesz odpowiedzieć na to pytanie w oparciu o swoją wiedzę na temat pytania. Może AUC ma sens (rzadko kiedy tak naprawdę się nad tym zastanawiasz, z wyjątkiem sytuacji, gdy nie chcesz sam podejmować decyzji, ale pozwól innym to zrobić - najprawdopodobniej tworzysz narzędzie, z którego inni mogą korzystać), może dokładność (jeśli potrzebujesz odpowiedzi binarnej, nie idź), ale może na różnych progach, może jakieś inne ciągłe miary, może jedna z miar sugerowanych przez Franka Harrella ... jak już wspomniano, nie ma uniwersalnego pytania tutaj.
Wróć do prognoz, które pokazałeś na histogramach. A daje ci ciągłą lub prawie ciągłą prognozę. Przeciwnie, B zwraca głównie tylko kilka różnych wartości (jak widać na histogramie „kolczastym”).
Na krzywej ROC każdy punkt odpowiada progowi. W A masz wiele progów (ponieważ prognozy są ciągłe), więc krzywa jest gładka. W B masz tylko kilka progów, więc krzywa wygląda „przeskakuje” od SN / SP do drugiego.
Widoczne są skoki pionowe, gdy zmienia się tylko czułość (próg powoduje różnice tylko w przypadkach dodatnich), skoki poziome, gdy zmienia się tylko specyficzność (próg powoduje różnice tylko w przykładach negatywnych), i skoki ukośne, gdy zmiana progu wpływa na obie klasy.
źródło