Cum se calculează testul McNemar pentru a compara doi clasificatori de învățare automată

Tweet Share Share

Ultima actualizare la 8 August 2019

alegerea unui test de ipoteză statistică este o problemă deschisă provocatoare pentru interpretarea rezultatelor învățării automate.

în lucrarea sa larg citată din 1998, Thomas Dietterich a recomandat testul McNemar în acele cazuri în care este scump sau impracticabil să antrenezi mai multe copii ale modelelor de clasificator.

aceasta descrie situația actuală cu modele de învățare profundă care sunt ambele foarte mari și sunt instruite și evaluate pe seturi de date mari, necesitând adesea zile sau săptămâni pentru a instrui un singur model.

în acest tutorial, veți descoperi cum să utilizați testul ipotezei statistice McNemar pentru a compara modelele Clasificatorului de învățare automată pe un singur set de date de testare.

după finalizarea acestui tutorial, veți ști:

  • recomandarea testului McNemar pentru modele care sunt scumpe de antrenat, care se potrivește modelelor mari de învățare profundă.
  • cum se transformă rezultatele predicției din doi clasificatori într-un tabel de urgență și modul în care tabelul este utilizat pentru a calcula statistica din testul McNemar.
  • cum se calculează testul McNemar în Python și se interpretează și se raportează rezultatul.

începeți proiectul cu noile mele statistici de carte pentru învățarea automată, inclusiv tutoriale pas cu pas și fișierele de cod sursă Python pentru toate exemplele.

să începem.

cum se calculează testul McNemar pentru doi clasificatori de învățare automată

cum se calculează testul McNemar pentru doi clasificatori de învățare automată
fotografie de Mark Kao, unele drepturi rezervate.

tutorial prezentare generală

acest tutorial este împărțit în cinci părți; acestea sunt:

  1. teste de ipoteze statistice pentru învățarea profundă
  2. tabel de urgență
  3. Statistica testului McNemar
  4. interpretează testul McNemar pentru clasificatori
  5. testul McNemar în Python

aveți nevoie de ajutor cu statistici pentru învățarea automată?

Ia-Mi gratuit 7 zile de e-mail crash course acum (cu codul de probă).

Faceți clic pentru a vă înscrie și pentru a obține, de asemenea, o versiune gratuită PDF Ebook a cursului.

descărcați Mini-cursul gratuit

teste de ipoteze statistice pentru învățarea profundă

în lucrarea sa importantă și larg citată din 1998 privind utilizarea testelor de ipoteze statistice pentru a compara clasificatorii intitulată „teste statistice aproximative pentru compararea algoritmilor de învățare a clasificării supravegheate”, Thomas Dietterich recomandă utilizarea testului McNemar.

în mod specific, testul este recomandat în acele cazuri în care algoritmii care sunt comparați pot fi evaluați o singură dată, de ex. pe un set de teste, spre deosebire de evaluările repetate printr-o tehnică de reeșantionare, cum ar fi validarea încrucișată k-fold.

pentru algoritmii care pot fi executați o singură dată, testul McNemar este singurul test cu eroare de tip I acceptabilă.

— teste statistice aproximative pentru compararea algoritmului de învățare a clasificării supravegheate, 1998.

în mod specific, studiul lui Dietterich a fost preocupat de evaluarea diferitelor teste de ipoteze statistice, unele funcționând pe baza rezultatelor metodelor de reeșantionare. Preocuparea studiului a fost eroarea scăzută de tip I, adică testul statistic care raportează un efect atunci când, de fapt, nu a fost prezent niciun efect (fals pozitiv).

testele statistice care pot compara modele bazate pe un singur set de teste sunt un aspect important pentru învățarea automată modernă, în special în domeniul învățării profunde.

modelele de învățare profundă sunt adesea mari și funcționează pe seturi de date foarte mari. Împreună, acești factori pot însemna că instruirea unui model poate dura zile sau chiar săptămâni pe hardware modern Rapid.

aceasta exclude utilizarea practică a metodelor de reeșantionare pentru compararea modelelor și sugerează necesitatea utilizării unui test care să poată funcționa pe baza rezultatelor evaluării modelelor instruite pe un singur set de date de testare.

testul McNemar poate fi un test adecvat pentru evaluarea acestor modele mari și lente de învățare profundă.

tabelul de urgență

testul McNemar funcționează pe un tabel de urgență.

înainte de a ne scufunda în test, să luăm un moment pentru a înțelege cum se calculează tabelul de urgență pentru doi clasificatori.

un tabel de urgență este un tabel sau număr de două variabile categorice. În cazul testului McNemar, suntem interesați de variabile binare corecte/incorecte sau da / nu pentru un control și un tratament sau două cazuri. Aceasta se numește un tabel de contingență 2 de la 2 la 2.

este posibil ca tabelul de urgență să nu fie intuitiv la prima vedere. Să o facem concretă cu un exemplu lucrat.

considerați că avem doi clasificatori instruiți. Fiecare clasificator face predicția clasei binare pentru fiecare dintre cele 10 Exemple dintr-un set de date de testare. Predicțiile sunt evaluate și determinate a fi corecte sau incorecte.

putem apoi rezuma aceste rezultate într-un tabel, după cum urmează:

1
2
3
4
5
6
7
8
9
10
11

exemplu,Clasificator1 corect,Clasificator2 corect
1YesNo
2NoNo
3noyes
4nono
5YesYes
6YesYes
7YesYes
8nono
9yesno
10yesyes

putem vedea că Clasificatorul1 a primit 6 corect, sau o precizie de 60%, iar Clasificatorul2 a obținut 5 corect, sau 50% precizie pe setul de testare.

tabelul poate fi acum redus la un tabel de urgență.

tabelul de contingență se bazează pe faptul că ambii clasificatori au fost instruiți exact pe aceleași date de instruire și evaluați exact pe aceleași instanțe de date de testare.

tabelul de urgență are următoarea structură:

1
2
3

Clasificator2 Corect, Clasificator2 Incorect
Clasificator1 Corect ????
Clasificator1 Incorect ?? ??

în cazul primei celule din tabel, trebuie să însumăm numărul total de instanțe de testare pe care clasificatorul 1 a fost corect și clasificatorul 2 a fost corect. De exemplu, prima instanță pe care ambii clasificatori au prezis-o corect a fost instanța numărul 5. Numărul total de cazuri pe care ambii clasificatori le-au prezis corect a fost de 4.

un alt mod mai programatic de a gândi acest lucru este de a rezuma fiecare combinație de Da/Nu în tabelul de rezultate de mai sus.

1
2
3

Clasificator2 corect,Clasificator2 incorect
Clasificator1 corect Da/Dayes/nu
Clasificator1 incorect nu/Da Nu / Nu

rezultatele organizate într-un tabel de urgență sunt următoarele:

1
2
3

Clasificator2 corect, Clasificator2 incorect
Clasificator1 corect 42
Clasificator1 incorect 1 3

testul Statistic McNemar

testul McNemar este un test de ipoteză statistică neparametrică sau fără distribuție.

este, de asemenea, mai puțin intuitiv decât alte teste de ipoteze statistice.

testul McNemar verifică dacă dezacordurile dintre două cazuri se potrivesc. Din punct de vedere tehnic, aceasta este denumită omogenitatea tabelului de urgență (în special omogenitatea marginală). Prin urmare, testul McNemar este un tip de test de omogenitate pentru tabelele de urgență.

testul este utilizat pe scară largă în medicină pentru a compara efectul unui tratament cu un control.

în ceea ce privește compararea a doi algoritmi de clasificare binară, testul comentează dacă cele două modele nu sunt de acord în același mod (sau nu). Nu comentează dacă un model este mai mult sau mai puțin precis sau predispus la erori decât altul. Acest lucru este clar atunci când ne uităm la modul în care este calculată statistica.

statistica testului McNemar se calculează ca:

1
statistică = (Da/Nu – Nu/da)^2 / (Da / Nu + Nu / da)

unde Da / Nu este numărul de instanțe de testare pe care clasificatorul 1 a fost corect și clasificatorul 2 a fost incorect, iar nu/da este numărul de instanțe de testare pe care clasificatorul 1 a fost incorect și clasificatorul 2 a fost corect.

acest calcul al statisticii testului presupune că fiecare celulă din tabelul de contingență utilizat în calcul are un număr de cel puțin 25. Statistica testului are o distribuție Chi-pătrat cu 1 grad de libertate.

putem vedea că sunt utilizate doar două elemente ale tabelului de urgență, în special că elementele Da/Da și nu/nu nu sunt utilizate la calcularea statisticii testului. Ca atare, putem vedea că statistica raportează diferitele predicții corecte sau incorecte dintre cele două modele, nu precizia sau ratele de eroare. Acest lucru este important de înțeles atunci când faceți afirmații despre constatarea statisticii.

ipoteza implicită sau ipoteza nulă a testului este că cele două cazuri nu sunt de acord cu aceeași sumă. Dacă ipoteza nulă este respinsă, aceasta sugerează că există dovezi care sugerează că cazurile nu sunt de acord în moduri diferite, că dezacordurile sunt înclinate.

având în vedere selectarea unui nivel de semnificație, valoarea p calculată de test poate fi interpretată după cum urmează:

  • p > alfa: nu reușesc să respingă H0, nici o diferență în dezacord (de exemplu, tratamentul a avut nici un efect).
  • p < = alfa: respingerea H0, diferență semnificativă în dezacord (de exemplu, tratamentul a avut un efect).

interpretați testul McNemar pentru clasificatori

este important să luați un moment pentru a înțelege clar cum să interpretați rezultatul testului în contextul a două modele de Clasificatoare de învățare automată.

cei doi termeni utilizați în calculul testului McNemar surprind erorile făcute de ambele modele. Mai exact, celulele nu/da și Da / Nu din tabelul de urgență. Testul verifică dacă există o diferență semnificativă între numărul din aceste două celule. Asta e tot.

dacă aceste celule au numere similare, ne arată că ambele modele fac erori în aceeași proporție, doar pe diferite instanțe ale setului de testare. În acest caz, rezultatul testului nu ar fi semnificativ, iar ipoteza nulă nu ar fi respinsă.

sub ipoteza nulă, cei doi algoritmi ar trebui să aibă aceeași rată de eroare…

— teste statistice aproximative pentru compararea algoritmului de învățare a clasificării supravegheate, 1998.

dacă aceste celule au numere care nu sunt similare, arată că ambele modele nu numai că fac erori diferite, dar de fapt au o proporție relativă diferită de erori pe setul de testare. În acest caz, rezultatul testului ar fi semnificativ și am respinge ipoteza nulă.

Deci, putem respinge ipoteza nulă în favoarea ipotezei că cei doi algoritmi au performanțe diferite atunci când sunt instruiți cu privire la formarea particulară

— teste statistice aproximative pentru compararea algoritmului de învățare a clasificării supravegheate, 1998.

putem rezuma acest lucru după cum urmează:

  • nu se respinge ipoteza nulă: clasificatorii au o proporție similară de erori pe setul de testare.
  • respinge ipoteza nulă: clasificatorii au o proporție diferită de erori pe setul de testare.

după efectuarea testului și găsirea unui rezultat semnificativ, poate fi util să se raporteze o măsură statistică a efectului pentru a cuantifica constatarea. De exemplu, o alegere naturală ar fi raportarea raporturilor de cote sau a tabelului de urgență în sine, deși ambele presupun un cititor sofisticat.

poate fi util să raportați diferența de eroare dintre cei doi clasificatori din setul de testare. În acest caz, aveți grijă la afirmațiile dvs., deoarece testul semnificativ nu raportează diferența de eroare dintre modele, ci doar diferența relativă a proporției de eroare dintre modele.

în cele din urmă, în utilizarea testului McNemar, Dietterich evidențiază două limitări importante care trebuie luate în considerare. Acestea sunt:

nicio măsură a setului de antrenament sau a variabilității modelului.

în general, comportamentul modelului variază în funcție de datele specifice de antrenament utilizate pentru a se potrivi modelului.

acest lucru se datorează atât interacțiunii modelului cu instanțe specifice de formare, cât și utilizării aleatoriei în timpul învățării. Montarea modelului pe mai multe seturi de date de antrenament diferite și evaluarea abilităților, așa cum se face cu metodele de reeșantionare, oferă o modalitate de a măsura varianța modelului.

testul este adecvat dacă sursele de variabilitate sunt mici.

prin urmare, testul McNemar ar trebui aplicat numai dacă credem că aceste surse de variabilitate sunt mici.

— teste statistice aproximative pentru compararea algoritmului de învățare a clasificării supravegheate, 1998.

comparație mai puțin directă a modelelor

cele două Clasificatoare sunt evaluate pe un singur set de testare, iar setul de testare este de așteptat să fie mai mic decât setul de antrenament.

acest lucru este diferit de testele ipotetice care utilizează metode de reeșantionare, deoarece mai multe, dacă nu toate, din setul de date sunt puse la dispoziție ca set de teste în timpul evaluării (care își introduce propriile probleme dintr-o perspectivă statistică).

acest lucru oferă mai puțin de o oportunitate de a compara performanța modelelor. Este necesar ca setul de testare să fie un reprezentant corespunzător al domeniului, ceea ce înseamnă adesea că setul de date de testare este mare.

testul McNemar în Python

testul McNemar poate fi implementat în Python folosind funcția mcnemar() Statsmodels.

funcția ia tabelul de urgență ca argument și returnează statistica testului calculată și valoarea P.

există două moduri de a utiliza statistica în funcție de cantitatea de date.

dacă există o celulă în tabel care este utilizată la calcularea statisticii testului care are un număr mai mic de 25, atunci se folosește o versiune modificată a testului care calculează o valoare p exactă folosind o distribuție binomială. Aceasta este utilizarea implicită a testului:

1
stat, p = mcnemar(tabel, exact = adevărat)

alternativ, dacă toate celulele utilizate la calcularea statisticii testului din tabelul de urgență au o valoare de 25 sau mai mult, atunci se poate utiliza calculul standard al testului.

1
stat, p = mcnemar(tabel, exact = fals, corecție = adevărat)

putem calcula McNemar pe exemplul tabelului de urgență descris mai sus. Acest tabel de urgență are un număr mic în ambele celule de dezacord și, ca atare, trebuie utilizată metoda exactă.

exemplul complet este prezentat mai jos.

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

# exemplu de calcul al testului mcnemar
din statsmodels.statistici.contingency_tables import mcnemar
# definiți tabelul de contingență
tabel = ,
]
# calculați testul mcnemar
result = mcnemar(tabel, exact=True)
# rezumați constatarea
print(‘statistic=%.3F, valoarea p=%.3f ‘ % (rezultat.statistică, rezultat.pvalue))
# interpretați valoarea p
alfa = 0,05
dacă rezultatul.pvalue > alpha:
print (‘aceleași proporții de erori (nu reușesc să respingă H0)’)
else:
print (‘proporții diferite de erori (respinge H0)’)

rularea exemplului calculează Statistica și valoarea p din tabelul de urgență și imprimă rezultatele.

putem vedea că testul confirmă cu tărie că există foarte puține diferențe în dezacordurile dintre cele două cazuri. Ipoteza nulă nu a fost respinsă.

pe măsură ce folosim testul pentru a compara clasificatorii, afirmăm că nu există nicio diferență semnificativă statistic în dezacordurile dintre cele două modele.

1
2

statistic=1.000, p-valoare=1.000
aceleași proporții de erori (nu reușesc să respingă H0)

extensii

această secțiune enumeră câteva idei pentru extinderea tutorialului pe care ați putea dori să îl explorați.

  • găsiți o lucrare de cercetare în învățarea automată care folosește testul ipotezei statistice McNemar.
  • actualizați exemplul de cod astfel încât tabelul de urgență să arate o diferență semnificativă în dezacordul dintre cele două cazuri.
  • implementați o funcție care va utiliza versiunea corectă a testului McNemar pe baza tabelului de urgență furnizat.

dacă explorați oricare dintre aceste extensii, mi-ar plăcea să știu.

lecturi suplimentare

această secțiune oferă mai multe resurse pe această temă dacă doriți să aprofundați.

lucrări

  • notă privind eroarea de eșantionare a diferenței dintre proporții sau procente corelate, 1947.
  • teste statistice aproximative pentru compararea algoritmilor de învățare a clasificării supravegheate, 1998.

API

  • statsmodels.statistici.contingency_tables.mcnemar() API

articole

  • testul McNemar pe Wikipedia
  • tip I și erori de tip II pe Wikipedia
  • tabelul de urgență pe wikipedia

rezumat

în acest tutorial, ați descoperit cum să utilizați testul ipotezei statistice a testului mcnemar pentru a compara modelele clasificatorului de învățare automată pe un singur set de date de testare.

mai exact, ai învățat:

  • recomandarea testului McNemar pentru modele care sunt scumpe de antrenat, care se potrivește modelelor mari de învățare profundă.
  • cum se transformă rezultatele predicției din doi clasificatori într-un tabel de urgență și modul în care tabelul este utilizat pentru a calcula statistica din testul McNemar.
  • cum se calculează testul McNemar în Python și se interpretează și se raportează rezultatul.

aveți întrebări?
puneți-vă întrebările în comentariile de mai jos și voi face tot posibilul să răspund.

ia un mâner pe statistici pentru machine Learning!

metodele statistice pentru învățarea automată

dezvoltă o înțelegere de lucru a statisticilor

…scriind linii de cod în python

Descoperiți cum în noua mea carte electronică:
metode statistice pentru învățarea automată

oferă tutoriale de auto-studiu pe teme precum:
teste de ipoteze, corelație, statistici neparametrice, reeșantionare și multe altele…

Descoperiți cum să transformați datele în cunoștințe

săriți academicienii. Doar Rezultate.

vezi ce e inauntru

Tweet Share Share

You might also like

Lasă un răspuns

Adresa ta de email nu va fi publicată.