Jak obliczyć Test Mcnemara, aby porównać dwa klasyfikatory uczenia maszynowego

Tweet Udostępnij Udostępnij

Ostatnia aktualizacja sierpień 8, 2019

wybór testu hipotezy statystycznej jest trudnym otwartym problemem dla interpretacji wyników uczenia maszynowego.

w swojej szeroko cytowanej pracy z 1998 roku Thomas Dietterich zalecił Test Mcnemara w przypadkach, w których szkolenie wielu kopii modeli klasyfikatorów jest kosztowne lub niepraktyczne.

opisuje to obecną sytuację w przypadku modeli głębokiego uczenia, które są zarówno bardzo duże, jak i są szkolone i oceniane na dużych zestawach danych, często wymagających dni lub tygodni, aby wyszkolić pojedynczy model.

w tym samouczku dowiesz się, jak używać testu hipotezy statystycznej Mcnemara do porównywania modeli klasyfikatorów uczenia maszynowego na jednym zestawie danych testowych.

po ukończeniu tego kursu dowiesz się:

  • rekomendacja testu Mcnemara dla modeli, które są drogie w szkoleniu, co pasuje do dużych modeli głębokiego uczenia.
  • jak przekształcić wyniki predykcji z dwóch klasyfikatorów w tabelę awaryjną i jak Tabela jest używana do obliczania statystyk w teście Mcnemara.
  • Jak obliczyć Test Mcnemara w Pythonie oraz zinterpretować i zgłosić wynik.

Rozpocznij swój projekt dzięki mojej nowej statystyce książki do uczenia maszynowego, w tym samouczkom krok po kroku i plikom kodu źródłowego Pythona dla wszystkich przykładów.

zaczynajmy.

 Jak obliczyć Test Mcnemara dla dwóch klasyfikatorów uczenia maszynowego

Jak obliczyć Test Mcnemara dla dwóch klasyfikatorów uczenia maszynowego
zdjęcie Mark Kao, niektóre prawa zastrzeżone.

opis poradnika

ten poradnik jest podzielony na pięć części; są to:

  1. testy hipotez statystycznych dla głębokiego uczenia
  2. tabela awaryjności
  3. Statystyka testu Mcnemara
  4. interpretacja testu Mcnemara dla klasyfikatorów
  5. Test Mcnemara w Pythonie

potrzebujesz pomocy ze statystykami do uczenia maszynowego?

weź mój darmowy 7-dniowy crash course e-mail teraz (z przykładowym kodem).

Kliknij, aby się zapisać, a także otrzymać bezpłatną wersję kursu w formacie PDF.

Pobierz bezpłatny Mini-kurs

Statistical Hypothesis Tests for Deep Learning

w swojej ważnej i powszechnie cytowanej pracy z 1998 r.na temat wykorzystania testów hipotez statystycznych do porównywania klasyfikatorów zatytułowanej „Approximate Statistical Tests for Comparing Supervised Classification Learning Algorithms” Thomas Dietterich zaleca użycie testu Mcnemara.

Test jest szczególnie zalecany w przypadkach, w których porównywane algorytmy można ocenić tylko raz, np. na jednym zestawie testów, w przeciwieństwie do powtarzanych ocen za pomocą techniki resamplingu, takich jak K-fold cross-validation.

dla algorytmów, które mogą być wykonane tylko raz, test Mcnemara jest jedynym testem z akceptowalnym błędem typu I.

— Approximate Statistical Tests for Comparing Supervised Classification Learning Algorithm, 1998.

w szczególności badania Diettericha dotyczyły oceny różnych testów hipotez statystycznych, niektóre opierały się na wynikach metod resamplingu. Obawą badania był niski błąd typu I, czyli test statystyczny zgłaszający efekt, gdy w rzeczywistości nie wystąpił żaden efekt (fałszywie pozytywny).

testy statystyczne, które mogą porównywać modele oparte na jednym zestawie testów, są ważnym czynnikiem w nowoczesnym uczeniu maszynowym, szczególnie w dziedzinie uczenia głębokiego.

modele głębokiego uczenia są często duże i działają na bardzo dużych zbiorach danych. Razem te czynniki mogą oznaczać, że szkolenie modelu może zająć dni, a nawet tygodnie na szybkim nowoczesnym sprzęcie.

wyklucza to praktyczne zastosowanie metod resamplingu do porównywania modeli i sugeruje potrzebę użycia testu, który może działać na wynikach oceny wyszkolonych modeli na pojedynczym zestawie danych testowych.

test Mcnemara może być odpowiednim testem do oceny tych dużych i powolnych modeli uczenia głębokiego.

tabela awaryjna

test Mcnemara działa na tabeli awaryjnej.

zanim przejdziemy do testu, poświęćmy chwilę, aby zrozumieć, jak obliczana jest tabela awaryjna dla dwóch klasyfikatorów.

tabela awaryjna jest tabelą lub liczbą dwóch zmiennych kategorycznych. W przypadku testu Mcnemara interesują nas zmienne binarne poprawne / niepoprawne lub tak / nie dla kontroli i leczenia lub dwóch przypadków. Nazywa się to tabelą awaryjną 2×2.

tabela awaryjności może nie być intuicyjna na pierwszy rzut oka. Zróbmy to na przykładzie.

weź pod uwagę, że mamy dwóch wyszkolonych klasyfikatorów. Każdy klasyfikator sprawia, że przewidywanie klasy binarnej dla każdego z 10 przykładów w zestawie danych testowych. Przewidywania są oceniane i określane jako poprawne lub nieprawidłowe.

możemy następnie podsumować te wyniki w tabeli w następujący sposób:

1
2
3
4
5
6
7
8
9
10
11

instancja,Klasyfikator1 poprawny,Klasyfikator2 poprawny
1yesno
2NoNo
3NoYes
4NoNo
5YesYes
6YesYes
7YesYes
8nono
9yesno
10yesyes

widać, że Klasyfikator1 dostał 6 poprawna, czyli dokładność 60%, a Klasyfikator2 ma 5 poprawnych, czyli 50% dokładności na zestawie testowym.

tabela może być teraz zredukowana do tabeli awaryjnej.

tabela awaryjności opiera się na fakcie, że obaj klasyfikatorzy byli szkoleni na dokładnie tych samych danych treningowych i oceniani na dokładnie tych samych instancjach danych testowych.

tabela ma następującą strukturę:

1
2
3

Klasyfikator2 Poprawny, Klasyfikator2 Niepoprawny
Klasyfikator1 Poprawny ????
Klasyfikator1 Niepoprawny ?? ??

w przypadku pierwszej komórki w tabeli musimy zsumować całkowitą liczbę instancji testowych, które Classifier1 uzyskał poprawność i Classifier2 uzyskał poprawność. Na przykład pierwszą instancją, którą oba klasyfikatory przewidziały poprawnie, była instancja numer 5. Całkowita liczba przypadków, które oba klasyfikatory prawidłowo przewidziały, wynosiła 4.

innym bardziej programowym sposobem myślenia o tym jest zsumowanie każdej kombinacji Tak/Nie w powyższej tabeli wyników.

1
2
3

Klasyfikator2 poprawny, Klasyfikator2 nieprawidłowy
Klasyfikator1 poprawny Tak / Tak / Nie
Klasyfikator1 nieprawidłowy nie / tak Nie / Nie

wyniki zorganizowane w tabeli awaryjne są następujące:

1
2
3

Klasyfikator2 poprawny, Klasyfikator2 nieprawidłowy
Klasyfikator1 poprawny 42
Klasyfikator1 nieprawidłowy 1 3

Statystyka testu Mcnemara

Test Mcnemara jest sparowanym nieparametrycznym lub wolnym od dystrybucji testem hipotezy statystycznej.

jest również mniej intuicyjny niż niektóre inne testy hipotez statystycznych.

test Mcnemara sprawdza, czy rozbieżności między dwoma przypadkami się zgadzają. Technicznie jest to określane jako jednorodność tabeli awaryjności (w szczególności homogeniczność marginalna). Dlatego test Mcnemara jest rodzajem testu jednorodności dla tabel awaryjnych.

test jest szeroko stosowany w medycynie w celu porównania efektu leczenia z kontrolą.

jeśli chodzi o porównanie dwóch algorytmów klasyfikacji binarnej, test komentuje, czy oba modele nie zgadzają się w ten sam sposób (czy nie). Nie jest komentowanie, czy Jeden model jest bardziej lub mniej dokładny lub podatny na błędy niż inny. Jest to jasne, gdy przyjrzymy się, jak obliczana jest statystyka.

statystyka testu jest obliczana jako:

1
statystyka = (Tak/Nie – Nie/Tak)^2 / (Tak/Nie + Nie/Tak)

gdzie Yes / No to liczba instancji testowych, które Classifier1 uzyskały poprawność i Classifier2 stały się nieprawidłowe, A No / Yes to liczba instancji testowych, które Classifier1 uzyskały poprawność i Classifier2 stały się prawidłowe.

to obliczenie statystyki badania zakłada, że każda komórka w tabeli awaryjnej użytej do obliczenia ma liczbę co najmniej 25. Statystyka testu ma rozkład Chi-kwadrat z 1 stopniem swobody.

widzimy, że używane są tylko dwa elementy tabeli awaryjności, w szczególności elementy tak/tak i nie/nie są używane do obliczania statystyki badania. W związku z tym widzimy, że statystyka zgłasza różne prawidłowe lub nieprawidłowe prognozy między dwoma modelami, a nie dokładność lub poziom błędów. Jest to ważne, aby zrozumieć przy roszczeniu o znalezieniu statystyki.

domyślnym założeniem lub hipotezą zerową testu jest to, że oba przypadki nie zgadzają się z tą samą ilością. Jeśli hipoteza zerowa zostanie odrzucona, sugeruje, że istnieją dowody sugerujące, że przypadki nie zgadzają się na różne sposoby, że nieporozumienia są wypaczone.

biorąc pod uwagę wybór poziomu istotności, wartość p obliczoną za pomocą testu można interpretować w następujący sposób:

  • P > Alfa: brak odrzucenia H0, brak różnicy zdań (np. leczenie nie przyniosło efektu).
  • p < = Alfa: odrzucenie H0, znacząca różnica zdań (np. leczenie miało skutek).

zinterpretuj Test Mcnemara dla klasyfikatorów

ważne jest, aby poświęcić chwilę na jasne zrozumienie, jak interpretować wynik testu w kontekście dwóch modeli klasyfikatorów uczenia maszynowego.

dwa terminy użyte w obliczeniach testu mcnemara uwzględniają błędy popełnione przez oba modele. W szczególności komórki No/Yes I Yes / No w tabeli awaryjności. Test sprawdza, czy istnieje znacząca różnica między liczbą w tych dwóch komórkach. To wszystko.

jeśli te komórki mają podobne liczby, pokazuje nam, że oba modele popełniają błędy w znacznie tej samej proporcji, tylko w różnych instancjach zestawu testowego. W tym przypadku wynik testu nie byłby znaczący, a hipoteza zerowa nie zostałaby odrzucona.

zgodnie z hipotezą zerową oba algorytmy powinny mieć ten sam współczynnik błędów…

— Approximate Statistical Tests for Comparing Supervised Classification Learning Algorithm, 1998.

jeśli te komórki mają liczby, które nie są podobne, pokazuje to, że oba modele nie tylko popełniają różne błędy, ale w rzeczywistości mają inny względny udział błędów w zestawie testowym. W tym przypadku wynik testu byłby znaczący i odrzucilibyśmy hipotezę zerową.

więc możemy odrzucić hipotezę zerową na rzecz hipotezy, że dwa algorytmy mają różną wydajność podczas szkolenia na danym treningu

— Approximate Statistical Tests for Comparing Supervised Classification Learning Algorithm, 1998.

możemy to podsumować w następujący sposób:

  • Nie odrzucić hipotezy zerowej: Klasyfikatorzy mają podobny odsetek błędów na zestawie testowym.
  • Odrzuć hipotezę zerową: Klasyfikatorzy mają inny odsetek błędów na zestawie testowym.

po wykonaniu testu i znalezieniu znaczącego wyniku przydatne może być zgłoszenie statystycznej miary efektu w celu określenia ilościowego wyniku. Na przykład naturalnym wyborem byłoby zgłaszanie współczynników kursów lub samej tabeli awaryjnej, chociaż oba te zakładają Zaawansowanego czytelnika.

przydatne może być zgłoszenie różnicy w błędzie między dwoma klasyfikatorami na zestawie testowym. W takim przypadku należy zachować ostrożność, ponieważ istotny test nie informuje o różnicy w błędzie między modelami, a jedynie względną różnicę w proporcji błędu między modelami.

wreszcie, korzystając z testu Mcnemara, Dietterich podkreśla dwa ważne ograniczenia, które należy wziąć pod uwagę. Są to:

brak miary zestawu treningowego lub zmienności modelu.

ogólnie zachowanie modelu różni się w zależności od konkretnych danych treningowych używanych do dopasowania modelu.

wynika to zarówno z interakcji modelu z konkretnymi instancjami treningowymi, jak i wykorzystania losowości podczas nauki. Dopasowanie modelu do wielu różnych zestawów danych treningowych i ocena umiejętności, podobnie jak w przypadku metod resamplingu, zapewnia sposób pomiaru wariancji modelu.

badanie jest właściwe, jeśli Źródła zmienności są małe.

dlatego test Mcnemara powinien być stosowany tylko wtedy, gdy uważamy, że te źródła zmienności są małe.

— Approximate Statistical Tests for Comparing Supervised Classification Learning Algorithm, 1998.

mniej bezpośrednie porównanie modeli

oba klasyfikatory są oceniane na jednym zestawie testowym, a zestaw testowy ma być mniejszy niż zestaw treningowy.

różni się to od testów hipotez, które wykorzystują metody resamplingu, ponieważ więcej, jeśli nie wszystkie, zbioru danych jest udostępnianych jako zestaw testów podczas oceny (który wprowadza własne problemy z perspektywy statystycznej).

daje to mniej możliwości porównania wydajności modeli. Wymaga to, aby zestaw testowy był odpowiednio reprezentantem domeny, co często oznacza, że zestaw testowy jest duży.

Test Mcnemara w Pythonie

test Mcnemara może być zaimplementowany w Pythonie przy użyciu funkcji Statsmodels mcnemar ().

funkcja przyjmuje tabelę awaryjną jako argument i zwraca obliczoną statystykę testu oraz wartość P.

istnieją dwa sposoby wykorzystania statystyk w zależności od ilości danych.

jeśli w tabeli znajduje się komórka używana do obliczania statystyki badania, która ma liczbę mniejszą niż 25, to stosuje się zmodyfikowaną wersję testu, która oblicza dokładną wartość p przy użyciu rozkładu dwumianowego. Jest to domyślne użycie testu:

1
stat, p = mcnemar(table, exact=True)

alternatywnie, jeżeli wszystkie komórki użyte do obliczenia statystyki badania w tabeli awaryjności mają wartość 25 lub większą, można zastosować standardowe obliczenie badania.

1
stat, p = mcnemar(table, exact=False, correction= True)

możemy obliczyć McNemar na przykładzie tabeli awaryjności opisanej powyżej. Ta tabela awaryjności ma niewielką liczbę w obu komórkach niezgody i jako takie należy zastosować dokładną metodę.

pełny przykład znajduje się poniżej.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# przykład obliczenia testu mcnemar
z statsmodels.statystyki.contingency_tables import mcnemar
# define contingency table
table = ,
]
# Oblicz test mcnemara
result = mcnemar(table, exact=True)
# podsumuj wyniki
print(’statistic=%.3f, wartość p=%.3f ’ % (wynik.statystyka, wynik.pvalue))
# interpretuj wartość p
alfa = 0, 05
jeśli wynik.pvalue > alpha:
print (’Same proporcje błędów (nie można odrzucić H0)’)
else:
print (’różne proporcje błędów (Odrzuć H0)’)

uruchomienie przykładu oblicza statystykę i wartość p w tabeli awaryjności i drukuje wyniki.

widzimy, że test zdecydowanie potwierdza, że istnieje bardzo mała różnica w rozbieżnościach między tymi dwoma przypadkami. Hipoteza zerowa nie została odrzucona.

ponieważ używamy testu do porównywania klasyfikatorów, stwierdzamy, że nie ma statystycznie istotnej różnicy w rozbieżnościach między tymi dwoma modelami.

1
2

statystyka=1.000, wartość p=1.000
takie same proporcje błędów (nie odrzuca H0)

rozszerzenia

Ta sekcja zawiera kilka pomysłów na rozszerzenie samouczka, które możesz chcieć zbadać.

  • Znajdź pracę badawczą z zakresu uczenia maszynowego, która wykorzystuje Test hipotezy statystycznej Mcnemara.
  • zaktualizuj przykład kodu tak, aby tabela przypadków nieprzewidzianych wykazała znaczącą różnicę w braku porozumienia między tymi dwoma przypadkami.
  • zaimplementuj funkcję, która użyje poprawnej wersji testu Mcnemara w oparciu o dostarczoną tabelę awaryjną.

jeśli zbadasz którekolwiek z tych rozszerzeń, chciałbym wiedzieć.

Czytaj dalej

Ta sekcja zawiera więcej zasobów na ten temat, jeśli chcesz zagłębić się w ten temat.

referaty

  • Note on the sampling error of the difference between correlated proportions or procents, 1947.
  • Approximate Statistical Tests for Comparing Supervised Classification Learning Algorithms, 1998.

API

  • statsmodels.statystyki.contingency_tables.mcnemar() API

Artykuły

  • test Mcnemara na Wikipedii
  • błędy typu I i typu II na Wikipedii
  • tabela awaryjna na Wikipedii

podsumowanie

w tym samouczku odkryłeś, jak używać Mcnemara testowy Test hipotezy statystycznej w celu porównania modeli klasyfikatorów uczenia maszynowego na pojedynczym zestawie danych testowych.

konkretnie, nauczyłeś się:

  • rekomendacja testu Mcnemara dla modeli, które są drogie w szkoleniu, co pasuje do dużych modeli głębokiego uczenia.
  • jak przekształcić wyniki predykcji z dwóch klasyfikatorów w tabelę awaryjną i jak Tabela jest używana do obliczania statystyk w teście Mcnemara.
  • Jak obliczyć Test Mcnemara w Pythonie oraz zinterpretować i zgłosić wynik.

masz pytania?
Zadawaj pytania w komentarzach poniżej, a ja postaram się odpowiedzieć.

opanuj statystyki dotyczące uczenia maszynowego!

Statystyczne metody uczenia maszynowego

rozwiń robocze zrozumienie statystyki

…pisząc wiersze kodu w Pythonie

dowiedz się, jak w moim nowym ebooku:
Statistical Methods for Machine Learning

zapewnia samouczki do samodzielnej nauki na takie tematy, jak:
testy hipotez, korelacja, statystyki nieparametryczne, Resampling i wiele więcej…

dowiedz się, jak przekształcić dane w wiedzę

Pomiń naukowców. Tylko Wyniki.

Zobacz co jest w środku

Udostępnij Udostępnij

You might also like

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.