viimeksi päivitetty 8. elokuuta 2019
tilastollisen hypoteesitestin valinta on haastava avoin ongelma koneoppimisen tulosten tulkinnassa.
laajasti siteeratussa vuoden 1998 tutkielmassaan Thomas Dieterich suositteli Mcnemarin testiä niissä tapauksissa, joissa luokittelijamallien useiden kopioiden kouluttaminen on kallista tai epäkäytännöllistä.
tämä kuvaa nykytilannetta syväoppimismalleilla, jotka ovat sekä hyvin suuria että koulutetaan ja arvioidaan laajoilla tietokokonaisuuksilla, jolloin yhden mallin kouluttaminen vaatii usein päiviä tai viikkoja.
tässä opetusohjelmassa selviää, miten mcnemarin tilastollista hypoteesitestiä voi käyttää koneoppimisen luokittelijamallien vertailuun yhdellä testiaineistolla.
kun olet suorittanut tämän opetusohjelman, tiedät:
- mcnemarin testin suositus malleille, jotka ovat kalliita kouluttaa, mikä sopii suuriin syväoppimismalleihin.
- miten kahden luokittajan ennustetulokset muutetaan ennakointitaulukoksi ja miten taulukkoa käytetään mcnemarin testin tilastotietojen laskemiseen.
- Miten lasketaan Mcnemarin testi Pythonilla ja tulkitaan ja raportoidaan tulos.
Kick-start your project with my new book Statistics for Machine Learning, including step-by-step tutorials and the Python source code files for all examples.
aloitetaan.
Miten lasketaan Mcnemarin testi kahdelle koneoppimisen Luokittajalle
Photo by Mark Kao, jotkut oikeudet pidätetään.
- opetusohjelma yleiskatsaus
- Tarvitsetko apua koneoppimisen tilastoinnissa?
- Statistical Hypothesis Tests for Deep Learning
- Varautumistaulukko
- Mcnemarin testi Statistic
- tulkitse Mcnemarin testi Luokittajille
- ei mittaa Koulutussarjaa tai mallin vaihtelua.
- mallien vähemmän suora vertailu
- Mcnemarin testi Pythonissa
- laajennukset
- Jatkoluku
- Papers
- API
- Artikkelit
- Yhteenveto
- ota haltuun koneoppimisen tilastot!
- kehittävät työskentelyymmärrystä tilastoista
- selvitä, miten Data muutetaan tiedoksi
opetusohjelma yleiskatsaus
tämä opetusohjelma on jaettu viiteen osaan; ne ovat:
- Statistical Hypothesis Tests for Deep Learning
- Contingency Table
- McNemar ’s Test Statistic
- Interpret the McNemar’ s Test for Classifers
- McNemar ’ s Test in Python
Tarvitsetko apua koneoppimisen tilastoinnissa?
ota ilmainen 7 päivän sähköpostin pikakurssi nyt (esimerkkikoodilla).
klikkaa ilmoittautuaksesi ja saat myös ilmaisen PDF Ebook-version kurssista.
Download Your FREE Mini-Course
Statistical Hypothesis Tests for Deep Learning
tärkeässä ja laajasti siteeratussa vuoden 1998 tutkielmassaan ”Approximate Statistical Tests for Comparing Supervised Classification Learning Algorithms” Thomas Dieterich suosittelee Mcnemarin testin käyttöä.
erityisesti testiä suositellaan niissä tapauksissa, joissa vertailtavia algoritmeja voidaan arvioida vain kerran, esim. yhdessä testisarjassa, toisin kuin toistuvissa arvioinneissa resampling-tekniikalla, kuten K-kertaisella ristivalidoinnilla.
algoritmeille, jotka voidaan suorittaa vain kerran, Mcnemarin testi on ainoa testi, jossa on hyväksyttävä tyypin I virhe.
— Approximate Statistical Tests for Comparing Supervised Classification Learning Algorithm, 1998.
erityisesti Dieterichin tutkimus käsitteli erilaisten tilastollisten hypoteesitestien arviointia, joista osa perustui resamplausmenetelmien tuloksiin. Tutkimuksen huolenaiheena oli pieni tyypin I virhe, eli tilastollinen testi raportoi vaikutuksen, kun itse asiassa vaikutusta ei ollut (väärä positiivinen).
tilastolliset testit, joilla voidaan vertailla yhteen testisarjaan perustuvia malleja, ovat tärkeä näkökohta nykyaikaisessa koneoppimisessa, erityisesti syväoppimisen alalla.
Syväoppimismallit ovat usein suuria ja toimivat hyvin suurilla tietokokonaisuuksilla. Yhdessä nämä tekijät voivat tarkoittaa sitä, että mallin koulutus voi kestää päiviä tai jopa viikkoja nopealla modernilla laitteistolla.
tämä estää resampling-menetelmien käytännön käytön mallien vertailussa ja viittaa siihen, että on tarpeen käyttää testiä, joka voi toimia koulutettujen mallien arvioinnin tulosten perusteella yhdellä testiaineistolla.
Mcnemarin testi voi olla sopiva testi näiden suurten ja hitaasti harjoittelevien syväoppimismallien arviointiin.
Varautumistaulukko
Mcnemarin testi toimii varautumistaulukon perusteella.
ennen kuin sukellamme testiin, katsotaan hetki, miten kahden luokittajan varautumistaulukko lasketaan.
ennustetaulukko on kahden kategorisen muuttujan muodostama taulukointi tai laskenta. Mcnemarin testin tapauksessa olemme kiinnostuneita binäärimuuttujista oikein/väärin tai kyllä / ei kontrollille ja käsittelylle tai kahdelle tapaukselle. Tätä kutsutaan 2×2-varautumistaulukoksi.
valmiustaulukko ei välttämättä ole ensi silmäyksellä intuitiivinen. Konkretisoidaan se toimivalla esimerkillä.
katsotaan, että meillä on kaksi koulutettua luokittelijaa. Jokainen luokittelija tekee binääriluokan ennustuksen jokaiselle testiaineiston 10 esimerkille. Ennustukset arvioidaan ja määritetään oikeiksi tai virheellisiksi.
voimme sitten tiivistää nämä tulokset taulukkoon seuraavasti:
1
2
3
4
5
6
7
8
9
10
11
|
esimerkiksi Luokitus1 oikein,Luokitus2 oikein
1yesno
2nono
3NoYes
4noyes
5YesYes
6YesYes
6yesyes
7YesYes
7YesYes
8nono
9yesno
10yesyes
|
voimme nähdä, että Luokittelija1 sai 6 oikea, tai tarkkuus 60%, ja Classifier2 sai 5 oikein, tai 50% tarkkuus testisarjassa.
taulukko voidaan nyt pelkistää valmiustaulukoksi.
valmiustaulukko perustuu siihen, että molemmat luokittajat on koulutettu täsmälleen samojen koulutustietojen perusteella ja arvioitu täsmälleen samojen testitietojen perusteella.
ennakoimattomuustaulukossa on seuraava rakenne:
1
2
3
|
Luokittelija2 Oikein, Luokittelija2 Väärin
Luokittelija1 Oikein ????
Luokitus1 Virheellinen ?? ??
|
kun kyseessä on ensimmäinen solu taulukossa, meidän on summa kokonaismäärä testiasteikkoja, jotka Classifier1 sai oikein ja Classifier2 sai oikein. Esimerkiksi ensimmäinen instanssi, jonka molemmat luokittelijat ennustivat oikein, oli instanssi numero 5. Molempien luokittelijoiden oikein ennustamia tapauksia oli yhteensä 4.
toinen ohjelmallisempi tapa ajatella asiaa on laskea yhteen kaikki Yes/No-vastausten yhdistelmät yllä olevassa tulostaulukossa.
1
2
3
|
Luokittelija2 oikein, Luokittelija2 väärin
Luokittelija1 oikein kyllä / kyllä / ei
Luokittelija1 väärin ei / kyllä ei / ei
|
varautumistaulukoksi järjestetyt tulokset ovat seuraavat:
1
2
3
|
Luokittelija2 oikein, Luokittelija2 väärin
Luokittelija1 oikein 42
Luokittelija1 väärin 1 3
|
Mcnemarin testi Statistic
Mcnemarin testi on parillinen nonparametrinen eli jakaumaton tilastollinen hypoteesikoe.
se on myös vähemmän intuitiivinen kuin eräät muut tilastolliset hypoteesitestit.
Mcnemarin testissä tarkistetaan, täsmäävätkö kahden tapauksen väliset erimielisyydet. Teknisesti tätä kutsutaan vikatapahtumataulukon homogeenisuudeksi (erityisesti marginaaliseksi homogeenisuudeksi). Näin ollen Mcnemarin testi on eräänlainen homogeenisuustesti varautumistaulukoille.
testiä käytetään lääketieteessä yleisesti verrattaessa hoidon vaikutusta kontrolliin.
kahden binääriluokitusalgoritmin vertailussa kokeessa kommentoidaan, ovatko nämä kaksi mallia eri mieltä samalla tavalla (vai eivät). Se ei ota kantaa siihen, onko yksi malli enemmän vai vähemmän tarkka tai virhealtis kuin toinen. Tämä käy selväksi, kun katsotaan, miten tilasto lasketaan.
Mcnemarin testitilasto lasketaan seuraavasti:
1
|
tilasto = (Kyllä/Ei – Ei/Kyllä)^2 / (kyllä / ei + ei / kyllä)
|
missä kyllä / ei on testiesiintymien lukumäärä, jotka Classifier1 sai oikein ja Classifier2 sai väärin, ja ei / kyllä on testiesiintymien lukumäärä, jotka Classifier1 sai virheellisen ja Classifier2 sai oikein.
tässä testin tilastolaskelmassa oletetaan, että jokaisen laskennassa käytetyn vikatapahtumataulukon solun lukema on vähintään 25. Testin statistiikassa on Chi-Potenssijakauma, jossa on 1 vapausaste.
voimme nähdä, että varautumistaulukossa käytetään vain kahta elementtiä, erityisesti sitä, että kyllä/kyllä ja ei/ei-elementtejä ei käytetä testitilaston laskennassa. Näin ollen voimme nähdä, että tilasto raportoi eri oikeita tai virheellisiä ennusteita näiden kahden mallin välillä, ei tarkkuutta tai virhemääriä. Tämä on tärkeää ymmärtää, kun esitetään väitteitä tilaston löytymisestä.
testin oletusoletus eli nollahypoteesi on, että nämä kaksi tapausta ovat eri mieltä samasta määrästä. Jos nollahypoteesi hylätään, se viittaa siihen, että on olemassa todisteita siitä, että tapaukset ovat eri tavoin eri mieltä, että erimielisyydet ovat vääristyneitä.
koska valitaan merkitsevyystaso, testin laskema p-arvo voidaan tulkita seuraavasti:
- p > alfa: H0: n hylkimisessä ei onnistuttu, erimielisyyden välillä ei ollut eroa (esim.hoidolla ei ollut vaikutusta).
- p < = alfa: hylkää H0, merkittävä ero erimielisyyden välillä (esim.hoidolla oli vaikutusta).
tulkitse Mcnemarin testi Luokittajille
on tärkeää käyttää hetki, jotta kahden koneoppimisen luokittajamallin yhteydessä ymmärretään selvästi, miten testin tulos tulkitaan.
Mcnemarin testin laskennassa käytetyt kaksi termiä kuvaavat molempien mallien tekemiä virheitä. Erityisesti Varautumistaulukon Ei / Kyllä-ja kyllä/ei-solut. Testillä tarkistetaan, onko näiden kahden solun määrien välillä merkittävä ero. Siinä kaikki.
jos näiden solujen määrä on samanlainen, se osoittaa, että molemmat mallit tekevät virheitä paljolti samassa suhteessa, vain testiryhmän eri tapauksissa. Tällöin testin tulos ei olisi merkittävä eikä nollahypoteesia hylättäisi.
nollahypoteesin mukaan näillä kahdella algoritmilla pitäisi olla sama virhetaajuus …
— Approximate Statistical Tests for Comparing Supervised Classification Learning Algorithm, 1998.
jos näiden solujen määrät eivät ole samanlaisia, se osoittaa, että molemmat mallit eivät ainoastaan tee erilaisia virheitä, vaan niillä on itse asiassa erilainen suhteellinen osuus testisarjan virheistä. Tällöin testin tulos olisi merkittävä ja hylkäisimme nollahypoteesin.
joten voimme hylätä nollahypoteesin sen hypoteesin hyväksi, että näillä kahdella algoritmilla on erilainen suorituskyky, kun ne koulutetaan tiettyyn koulutukseen
— Approximate Statistical Tests for Comparing Supervised Classification Learning Algorithm, 1998.
voimme tiivistää tämän seuraavasti:
- nollahypoteesin hylkääminen: Luokittajilla on sama osuus testijoukossa olevista virheistä.
- hylkää nollahypoteesi: Luokittajilla on erilainen osuus testijoukossa olevista virheistä.
testin suorittamisen ja merkittävän tuloksen löytämisen jälkeen voi olla hyödyllistä ilmoittaa tilastollinen vaikutusmittari havainnon kvantifioimiseksi. Luonnollinen valinta olisi esimerkiksi kertoa kerroinsuhteet tai itse varautumistaulukko, vaikka molemmat olettavat sivistynyttä lukijaa.
voi olla hyödyllistä ilmoittaa testisarjan kahden luokittajan välinen virheero. Tässä tapauksessa ole varovainen väitteidesi kanssa, sillä merkittävä testi ei kerro mallien välistä virheeroa, ainoastaan mallien välisen virheen suhteellista eroa.
lopuksi Dieterich korostaa mcnemarin testiä käyttäessään kahta tärkeää rajoitusta, jotka on otettava huomioon. Ne ovat:
ei mittaa Koulutussarjaa tai mallin vaihtelua.
yleensä mallikäyttäytyminen vaihtelee malliin sopivien koulutustietojen perusteella.
tämä johtuu sekä mallin vuorovaikutuksesta tiettyjen koulutustilanteiden kanssa että satunnaisuuden käytöstä oppimisen aikana. Mallin sovittaminen useisiin eri harjoitusaineistoihin ja taidon arviointi, kuten tehdään resampling-menetelmillä, tarjoaa tavan mitata mallin varianssia.
testi on asianmukainen, jos vaihtelun lähteet ovat pieniä.
näin ollen Mcnemarin testiä tulisi soveltaa vain, jos uskomme näiden vaihtelun lähteiden olevan pieniä.
— Approximate Statistical Tests for Comparing Supervised Classification Learning Algorithm, 1998.
mallien vähemmän suora vertailu
kaksi luokittajaa arvioidaan yhdellä testisarjalla, ja testisarjan odotetaan olevan pienempi kuin koulutussarja.
tämä eroaa hypoteesitesteistä, joissa käytetään resamplausmenetelmiä, sillä useampi, ellei jopa kaikki, aineisto on saatavilla testijoukkona arvioinnin aikana (mikä tuo omat ongelmansa tilastollisesta näkökulmasta).
tämä antaa vähemmän mahdollisuuksia verrata mallien suorituskykyä. Se edellyttää, että testijoukko on sopivasti toimialueen edustaja, mikä usein tarkoittaa, että testiaineisto on suuri.
Mcnemarin testi Pythonissa
Mcnemarin testi voidaan toteuttaa Pythonissa mcnemar() Statsmodels-funktiolla.
funktio ottaa ennustetaulukon argumenttina ja palauttaa lasketun testin statistin ja p-arvon.
tilastoa voi käyttää kahdella tavalla riippuen tiedon määrästä.
jos taulukossa on solu, jota käytetään testin statistiikan laskemiseen ja jonka lukema on alle 25, käytetään testistä muunnettua versiota, joka laskee tarkan p-arvon binomijakauman avulla. Tämä on testin oletuskäyttö:
1
|
stat, p = mcnemar(taulukko, tarkka=tosi)
|
vuorotellen, jos kaikkien vikatapahtumataulukon testitilastojen laskennassa käytettyjen solujen arvo on 25 tai enemmän, voidaan käyttää testin vakiolaskentaa.
1
|
stat, p = mcnemar (taulukko, tarkka = epätosi, korjaus = tosi)
|
voimme laskea Mcnemarin edellä kuvatusta esimerkkitaulukosta. Tällä varautumistaulukolla on pieni määrä sekä erimielisyyden soluissa, ja siksi on käytettävä tarkkaa menetelmää.
koko esimerkki on lueteltu alla.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# esimerkki mcnemarin testin
laskemisesta statsmodeleista.tilastot.contingency_tables tuo mcnemar
# define contingency table
table = ,
]
# laske mcnemarin testi
tulos = mcnemar (taulukko, tarkka=tosi)
# summaa havainto
print (”statistic=%.3f, p-arvo=%.3F ’ % (tulos.tilasto, tulos.pvalue))
# tulkitsee p-arvon
alpha = 0, 05
jos tulos.pvalue > alpha:
print (”same proposures of errors (fail to reject H0)”)
else:
print (”Different proportions of errors (reject H0)’)
|
esimerkin suorittaminen laskee tilaston ja p-arvon varautumistaulukossa ja tulostaa tulokset.
voimme nähdä, että testi vahvistaa vahvasti, että näiden kahden tapauksen välisissä erimielisyyksissä on hyvin vähän eroa. Nollahypoteesia ei ole hylätty.
koska käytämme testiä luokittajien vertailuun, toteamme, että näiden kahden mallin välisissä erimielisyyksissä ei ole tilastollisesti merkittävää eroa.
1
2
|
statistic=1.000, p-arvo=1.000
samat virheiden osuudet (H0: n hylkäämisen laiminlyönti)
|
laajennukset
tässä osiossa luetellaan joitakin ideoita opetusohjelman laajentamiseksi, joita haluat ehkä tutkia.
- Etsi koneoppimisen tutkimuspaperi, jossa hyödynnetään Mcnemarin tilastollista hypoteesitestiä.
- Päivitä koodiesimerkki siten, että ennakoimattomuustaulukossa on merkittävä ero näiden kahden tapauksen välillä.
- toteuta funktio, joka käyttää mcnemarin testin oikeaa versiota, joka perustuu annettuun varautumistaulukkoon.
jos tutkit jotain näistä laajennuksista, haluaisin tietää.
Jatkoluku
tämä osio tarjoaa lisää resursseja aiheeseen, jos haluat mennä syvemmälle.
Papers
- Note on the sampling error of the difference between correlated proportions or prosents, 1947.
- Approximate Statistical Tests for Comparing Supervised Classification Learning Algorithms, 1998.
API
- statsmodels.tilastot.contingency_tables.mcnemar() API
Artikkelit
- Mcnemarin testi Wikipediassa
- tyypin I ja tyypin II virheet Wikipediassa
- Valmiustaulukko Wikipediassa
Yhteenveto
tässä opetusohjelmassa selvitit, miten mcnemarin test statistical hypothesis-testi vertailee koneoppimisen luokittelijamalleja yhdellä testiaineistolla.
nimenomaan opit:
- mcnemarin testin suositus malleille, jotka ovat kalliita kouluttaa, mikä sopii suuriin syväoppimismalleihin.
- miten kahden luokittajan ennustetulokset muutetaan ennakointitaulukoksi ja miten taulukkoa käytetään mcnemarin testin tilastotietojen laskemiseen.
- Miten lasketaan Mcnemarin testi Pythonilla ja tulkitaan ja raportoidaan tulos.
onko sinulla kysyttävää?
esitä kysymyksesi alla olevissa kommenteissa, niin teen parhaani vastatakseni.
ota haltuun koneoppimisen tilastot!
kehittävät työskentelyymmärrystä tilastoista
…kirjoittamalla koodirivejä python-kielellä
Discover how in my new Ebook:
Statistical Methods for Machine Learning
It provides self-study tutorials on topics like:
Hypothesis Tests, Correlation, Nonparametric Stats, Resampling, and much more…
selvitä, miten Data muutetaan tiedoksi
Ohita akateemikot. Pelkkiä Tuloksia.
See What ’ s Inside