Sist Oppdatert 8.August 2019
valget av en statistisk hypotesetest er et utfordrende åpent problem for å tolke maskinlæringsresultater.
I sin mye sitert 1998 papir, Thomas Dietterich anbefalt McNemar test i de tilfeller hvor det er dyrt eller upraktisk å trene flere kopier av klassifiseringsmodeller.
dette beskriver dagens situasjon med dype læringsmodeller som begge er svært store og er opplært og evaluert på store datasett, som ofte krever dager eller uker for å trene en enkelt modell.
i denne opplæringen vil du oppdage hvordan Du bruker Mcnemars statistiske hypotesetest for å sammenligne maskinlærings klassifiseringsmodeller på et enkelt testdatasett.
etter å ha fullført denne opplæringen, vil du vite:
- anbefalingen Av Mcnemars test for modeller som er dyre å trene, som passer til store dype læringsmodeller.
- hvordan forvandle prediksjonsresultater fra to klassifikatorer til en beredskapstabell og hvordan tabellen brukes til å beregne statistikken I Mcnemars test.
- hvordan beregne Mcnemars test I Python og tolke og rapportere resultatet.
Start prosjektet ditt Med Min nye bokstatistikk For Maskinlæring, inkludert trinnvise opplæringsprogrammer og Python-kildekodefilene for alle eksempler.
La oss komme i gang.
Hvordan Beregne Mcnemars Test For To Maskinlærings Klassifiserere
Foto Av Mark Kao, noen rettigheter reservert.
- Opplæringsoversikt
- Trenger Du Hjelp Med Statistikk For Maskinlæring?
- Statistiske Hypotesetester For Dyp Læring
- Beredskapstabell
- Mcnemars Teststatistikk
- Tolk Mcnemars Test For Klassifiserere
- Ingen Mål På Treningssett eller Modellvariabilitet.
- Mindre Direkte Sammenligning Av Modeller
- Mcnemars Test I Python
- Extensions
- Videre Lesing
- Papirer
- API
- Artikler
- Sammendrag
- Få Et Håndtak På Statistikk For Maskinlæring!
- Utvikle en fungerende forståelse av statistikk
- Oppdag Hvordan Du Forvandler Data Til Kunnskap
Opplæringsoversikt
denne opplæringen er delt inn i fem deler; de er:
- Statistiske Hypotesetester For Dyp Læring
- Beredskapstabell
- Mcnemars Teststatistikk
- Tolk Mcnemars Test For Klassifiserere
- Mcnemars Test I Python
Trenger Du Hjelp Med Statistikk For Maskinlæring?
Ta mitt gratis 7-dagers e-postkrasjkurs nå (med eksempelkode).
Klikk for å registrere deg og få også en GRATIS Pdf Ebook-versjon av kurset.
Last NED Gratis Mini-Kurs
Statistiske Hypotesetester For Dyp Læring
I sin viktige og mye sitert 1998 papir om bruk av statistiske hypotesetester for å sammenligne klassifikatorer med tittelen «Omtrentlige Statistiske Tester For Å Sammenligne Overvåket Klassifisering Læring Algoritmer», Thomas Dietterich anbefaler bruk Av McNemar test.
Spesifikt anbefales testen i de tilfeller hvor algoritmene som sammenlignes kun kan evalueres en gang, f. eks. på ett testsett, i motsetning til gjentatte evalueringer via en resampling teknikk, slik som k-fold kryssvalidering.
For algoritmer som kun kan utføres en gang, Er Mcnemars test Den eneste testen med akseptabel type I-feil.
— Omtrentlige Statistiske Tester For Å Sammenligne Veiledet Klassifisering Læring Algoritme, 1998.
Spesifikt Var Dietterichs studie opptatt av evalueringen av ulike statistiske hypotesetester, noen opererer på resultatene fra resampling metoder. Bekymringen for studien var lav type I-feil, det vil si den statistiske testen som rapporterte en effekt når det faktisk ikke var noen effekt tilstede (falsk positiv).
Statistiske tester som kan sammenligne modeller basert på et enkelt testsett, er et viktig hensyn for moderne maskinlæring, spesielt innen dyp læring.
Dype læringsmodeller er ofte store og opererer på svært store datasett. Sammen kan disse faktorene bety at trening av en modell kan ta dager eller uker på rask moderne maskinvare.
Dette utelukker praktisk bruk av resampling metoder for å sammenligne modeller og foreslår behovet for å bruke en test som kan operere på resultatene av å evaluere trente modeller på et enkelt test datasett.
Mcnemars test kan være en passende test for å evaluere disse store og sakte å trene dype læringsmodellene.
Beredskapstabell
Mcnemars test opererer på en beredskapstabell.
før vi dykker inn i testen, la oss ta et øyeblikk for å forstå hvordan beredskapstabellen for to klassifikatorer beregnes.
en beredskapstabell er en tabulering eller telling av to kategoriske variabler. I Tilfelle Av Mcnemars test er vi interessert i binære variabler riktig/feil eller ja / nei for en kontroll og en behandling eller to tilfeller. Dette kalles en 2×2 beredskapstabell.
beredskapstabellen er kanskje ikke intuitiv ved første øyekast. La oss gjøre det konkret med et arbeidet eksempel.
Vurder at vi har to trente klassifiserere. Hver klassifikator gjør binær klasse prediksjon for hver av de 10 eksemplene i en test datasett. Forutsigelsene vurderes og bestemmes å være korrekte eller feil.
vi kan da oppsummere disse resultatene i en tabell, som følger:
1
2
3
4
5
6
7
8
9
10
11
|
Forekomst,Klassifiserer1 Korrekt,Klassifiserer2 Korrekt
1yesno
2NoNo
3NoYes
4NoNo
5YesYes
6YesYes
7YesYes
> 8nono
9yesno
10yesyes
|
Vi kan se At Klassifiserer1 fikk 6 korrekt, eller en nøyaktighet på 60%, Og Klassifiserer2 fikk 5 riktig, eller 50% nøyaktighet på testsettet.
tabellen kan nå reduseres til en beredskapstabell.
beredskapstabellen er avhengig av at begge klassifiseringene ble trent på nøyaktig samme treningsdata og evaluert på nøyaktig samme testdatainstanser.
beredskapstabellen har følgende struktur:
1
2
3
|
Klassifiserer2 Riktig, Klassifiserer2 Feil
Klassifiserer1 Riktig ????
Klassifiserer1 Feil ?? ??
|
når det gjelder den første cellen i tabellen, må vi summere totalt antall testforekomster Som Klassifiserer1 fikk riktig og Klassifiserer2 fikk riktig. For eksempel var den første forekomsten som begge klassifikatorene spådde riktig, forekomst nummer 5. Det totale antall tilfeller som begge klassifikatorer spådd riktig var 4.
En annen mer programmatisk måte å tenke på dette er å summere hver kombinasjon Av Ja / Nei i resultattabellen ovenfor.
1
2
3
|
Klassifiserer2 Riktig, Klassifiserer2 Feil
Klassifiserer1 Riktig Ja/Jaja/Nei
Klassifiserer1 Feil Nei / Ja Nei / Nei
|
resultatene organisert i en beredskapstabell er som følger:
1
2
3
|
Klassifiserer2 Riktig, Klassifiserer2 Feil
Klassifiserer1 Riktig 42
Klassifiserer1 Feil 1 3
|
Mcnemars Teststatistikk
Mcnemars test er en sammenkoblet ikke-parametrisk eller distribusjonsfri statistisk hypotesetest.
Det er også mindre intuitivt enn noen andre statistiske hypotesetester.
Mcnemars test sjekker om uenighetene mellom to saker stemmer overens. Teknisk er dette referert til som homogeniteten til beredskapstabellen (spesielt den marginale homogeniteten). Derfor Er Mcnemars test en type homogenitetstest for beredskapstabeller.
testen er mye brukt i medisin for å sammenligne effekten av en behandling mot en kontroll.
når det gjelder å sammenligne to binære klassifiseringsalgoritmer, kommenterer testen om de to modellene er uenige på samme måte (eller ikke). Det er ikke kommenterer om en modell er mer eller mindre nøyaktig eller feil utsatt enn en annen. Dette er klart når vi ser på hvordan statistikken beregnes.
Mcnemars teststatistikk beregnes som:
1
|
statistikk = (Ja/Nei – Nei / Ja)^2 / (Ja / Nei + Nei / Ja)
|
Hvor Ja / Nei er tellingen av testinstanser Som Klassifiserer1 fikk riktig Og Klassifiserer2 fikk feil, Og Nei / Ja er tellingen av testinstanser Som Klassifiserer1 fikk feil og Klassifiserer2 fikk riktig.
denne beregningen av teststatistikken antar at hver celle i beredskapstabellen som brukes i beregningen, har en telling på minst 25. Teststatistikken har En Chi-Kvadrert fordeling med 1 grad av frihet.
Vi kan se at bare to elementer i beredskapstabellen brukes, spesielt At ja/Ja og Nei / Nei-elementene ikke brukes i beregningen av teststatistikken. Som sådan kan vi se at statistikken rapporterer om de forskjellige korrekte eller feilaktige spådommene mellom de to modellene, ikke nøyaktigheten eller feilratene. Dette er viktig å forstå når du gjør krav på å finne statistikken.
standardforutsetningen, eller nullhypotesen, av testen er at de to tilfellene er uenige i samme beløp. Hvis nullhypotesen blir avvist, tyder det på at det er bevis for at sakene er uenige på forskjellige måter, at uenighetene er skjevt.
Gitt valget av et signifikansnivå, kan p-verdien beregnet av testen tolkes som følger:
- p > alfa: unnlater å avvise H0, ingen forskjell i uenigheten (f. eks. behandling hadde ingen effekt).
- p <= alfa: avvis H0, signifikant forskjell i uenighet (f. eks. behandling hadde effekt).
Tolk Mcnemars Test For Klassifiserere
det er viktig å ta et øyeblikk for å forstå hvordan man tolker resultatet av testen i sammenheng med to maskinlærings klassifiseringsmodeller.
de to begrepene som brukes i beregningen Av Mcnemars Test, fanger feilene fra begge modellene. Spesielt nei/Ja og Ja / Nei-cellene i beredskapstabellen. Testen sjekker om det er en signifikant forskjell mellom tellingene i disse to cellene. Det er alt.
hvis disse cellene har teller som ligner, viser det oss at begge modellene gjør feil i mye samme forhold, bare på forskjellige forekomster av testsettet. I dette tilfellet ville resultatet av testen ikke være signifikant, og nullhypotesen ville ikke bli avvist.
under nullhypotesen bør de to algoritmene ha samme feilrate …
— Omtrentlige Statistiske Tester For Å Sammenligne Veiledet Klassifisering Læring Algoritme, 1998.
hvis disse cellene har teller som ikke er like, viser det seg at begge modellene ikke bare gjør forskjellige feil, men faktisk har en annen relativ andel feil på testsettet. I dette tilfellet vil resultatet av testen være signifikant, og vi vil avvise nullhypotesen.
så vi kan avvise nullhypotesen til fordel for hypotesen om at de to algoritmene har forskjellig ytelse når de trent på den aktuelle treningen
— Omtrentlige Statistiske Tester For Å Sammenligne Veiledet Klassifisering Læring Algoritme, 1998.
vi kan oppsummere dette som følger:
- Unnlater Å Avvise Nullhypotesen: Klassifiserere har en tilsvarende andel feil på testsettet.
- Avvis Nullhypotesen: Klassifiserere har en annen andel feil på testsettet.
etter å ha utført testen og funnet et signifikant resultat, kan det være nyttig å rapportere et effektstatistisk mål for å kvantifisere funnet. For eksempel vil et naturlig valg være å rapportere oddsforholdene, eller beredskapstabellen selv, selv om begge disse antar en sofistikert leser.
det kan være nyttig å rapportere forskjellen i feil mellom de to klassifiseringene på testsettet. I så fall vær forsiktig med dine krav, da den betydelige testen ikke rapporterer om forskjellen i feil mellom modellene, bare den relative forskjellen i andelen feil mellom modellene.
Til Slutt, Ved Bruk Av Mcnemars test, fremhever Dietterich to viktige begrensninger som må vurderes. De er:
Ingen Mål På Treningssett eller Modellvariabilitet.
generelt varierer modelladferd basert på de spesifikke treningsdataene som brukes til å passe til modellen.
dette skyldes både samspillet mellom modellen og spesifikke treningsinstanser og bruk av tilfeldighet under læring. Montering av modellen på flere forskjellige treningsdatasett og evaluering av ferdighetene, som det gjøres med resampling-metoder, gir en måte å måle variansen på modellen.
testen er hensiktsmessig dersom kildene til variabilitet er små.
Derfor Bør Mcnemars test bare brukes hvis vi mener at disse variabilitetskildene er små.
— Omtrentlige Statistiske Tester For Å Sammenligne Veiledet Klassifisering Læring Algoritme, 1998.
Mindre Direkte Sammenligning Av Modeller
de to klassifiseringene evalueres på et enkelt testsett, og testsettet forventes å være mindre enn treningssettet.
dette er forskjellig fra hypotesetester som benytter resampling metoder som mer, om ikke alle, av datasettet er gjort tilgjengelig som et testsett under evaluering (som introduserer sine egne problemer fra et statistisk perspektiv).
Dette gir mindre mulighet til å sammenligne ytelsen til modellene. Det krever at testsettet er en passende representant for domenet, noe som ofte betyr at testdatasettet er stort.
Mcnemars Test I Python
Mcnemars test kan implementeres I Python ved hjelp av mcnemar () Statsmodels-funksjonen.
funksjonen tar beredskapstabellen som argument og returnerer den beregnede teststatistikken og p-verdien.
det er to måter å bruke statistikken på, avhengig av datamengden.
hvis det er en celle i tabellen som brukes i beregningen av teststatistikken som har et antall på mindre enn 25, brukes en modifisert versjon av testen som beregner en nøyaktig p-verdi ved hjelp av en binomialfordeling. Dette er standard bruk av testen:
1
|
stat, p = mcnemar (tabell, eksakt = Sann)
|
Alternativt, hvis alle celler som brukes i beregningen av teststatistikken i beredskapstabellen, har en verdi på 25 eller mer, kan standardberegningen av testen brukes.
1
|
stat, p = mcnemar (tabell, nøyaktig = Falsk, korreksjon = Sann)
|
Vi kan beregne Mcnemars på eksempelberedningstabellen beskrevet ovenfor. Denne beredskapstabellen har en liten telling i begge uenighetscellene, og som sådan må den nøyaktige metoden brukes.
det komplette eksemplet er oppført nedenfor.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# Eksempel på beregning av mcnemar-testen
fra statsmodels.statistikk.contingency_tables importer mcnemar
# definer beredskapstabell
tabell = ,
]
# beregn mcnemar test
resultat = mcnemar (tabell, eksakt=Sant)
# oppsummer funnet
skriv ut(‘statistikk=%.3f, p-verdi=%.3f ‘ % (resultat.statistikk, resultat.pvalue))
# tolk p-verdien
alfa = 0,05
hvis resultatet.pvalue > alpha:
skriv ut (‘Samme proporsjoner av feil (unnlater Å avvise H0)’)
annet:
skriv ut (‘Ulike proporsjoner av feil (avvis H0)’)
|
Kjører eksemplet beregner statistikken og p-verdien på beredskapstabellen og skriver ut resultatene.
vi kan se at testen sterkt bekrefter at det er svært liten forskjell i uenighetene mellom de to sakene. Nullhypotesen ble ikke forkastet.
når vi bruker testen til å sammenligne klassifiserere, sier vi at det ikke er statistisk signifikant forskjell i uenighetene mellom de to modellene.
1
2
|
statistikk=1.000, p-verdi=1.000
Samme proporsjoner av feil (unnlater å avvise H0)
|
Extensions
Denne delen viser noen ideer for å utvide opplæringen som du kanskje ønsker å utforske.
- Finn et forskningspapir i maskinlæring som bruker Mcnemars statistiske hypotesetest.
- Oppdater kodeeksemplet slik at beredskapstabellen viser en signifikant forskjell i uenighet mellom de to sakene.
- Implementer en funksjon som vil bruke den riktige versjonen Av Mcnemars test basert på den angitte beredskapstabellen.
hvis du utforsker noen av disse utvidelsene, vil jeg gjerne vite.
Videre Lesing
Denne delen gir flere ressurser om emnet hvis du ønsker å gå dypere.
Papirer
- Merknad om samplingsfeil av forskjellen mellom korrelerte proporsjoner eller prosenter, 1947.
- Omtrentlige Statistiske Tester For Å Sammenligne Veiledet Klassifisering Læring Algoritmer, 1998.
API
- statsmodeller.statistikk.contingency_tables.mcnemar() API
Artikler
- Mcnemars test På Wikipedia
- Type i OG TYPE II feil På Wikipedia
- Beredskapstabell på wikipedia
Sammendrag
i denne opplæringen oppdaget du hvordan du bruker mcnemars TEST STATISTISKE hypotesetest for å sammenligne maskinlærings klassifiseringsmodeller på et enkelt testdatasett.
spesielt lærte Du:
- anbefalingen Av Mcnemars test for modeller som er dyre å trene, som passer til store dype læringsmodeller.
- hvordan forvandle prediksjonsresultater fra to klassifikatorer til en beredskapstabell og hvordan tabellen brukes til å beregne statistikken I Mcnemars test.
- hvordan beregne Mcnemars test I Python og tolke og rapportere resultatet.
har du noen spørsmål?
Still dine spørsmål i kommentarene nedenfor, og jeg vil gjøre mitt beste for å svare.
Få Et Håndtak På Statistikk For Maskinlæring!
Utvikle en fungerende forståelse av statistikk
…Ved å skrive kodelinjer i python
Oppdag hvordan i min nye Ebok:
Statistiske Metoder For Maskinlæring
det gir selvstudium tutorials om emner som:
Hypotesetester, Korrelasjon, Nonparametric Statistikk, Resampling, og mye mer…
Oppdag Hvordan Du Forvandler Data Til Kunnskap
Hopp Over Akademikerne. Bare Resultater.
Se Hva Som Er Inni