Naposledy Aktualizováno 8. srpna 2019
výběr statistická hypotéza, test je náročný problém otevřít pro interpretaci strojového učení výsledky.
ve svém široce citovaném dokumentu z roku 1998 Thomas Dietterich doporučil mcnemarův test v těch případech, kdy je drahé nebo nepraktické trénovat více kopií klasifikačních modelů.
To popisuje současnou situaci s hluboké učení modely, které jsou velmi velké a jsou vyškoleni a hodnoceny na velké soubory dat, často vyžadující dny nebo týdny trénovat jeden model.
v tomto tutoriálu zjistíte, jak použít Mcnemarův statistický test hypotéz k porovnání modelů klasifikátorů strojového učení na jednom testovacím datovém souboru.
Po dokončení tohoto kurzu budete vědět:
- doporučení McNemar test pro modely, které jsou drahé, aby vlak, který vyhovuje velké hluboké modely učení.
- Jak transformovat výsledky predikce ze dvou klasifikátorů v kontingenční tabulce a jak tabulky slouží k výpočtu statistiky v McNemar test.
- jak vypočítat Mcnemarův test v Pythonu a interpretovat a hlásit výsledek.
nastartujte svůj projekt pomocí mé nové statistiky knih pro strojové učení, včetně podrobných tutoriálů a souborů zdrojového kódu Pythonu pro všechny příklady.
začněme.
Jak Vypočítat McNemar Test pro Dva Strojové Učení Klasifikátorů
Foto Mark Kao, některá práva jsou vyhrazena.
- přehled tutoriálu
- Potřebujete pomoci s Statistiky pro Strojové Učení?
- Statistická Hypotéza Testy pro Hluboké Učení
- Kontingenční tabulka
- McNemar Test Statistika
- interpretujte Mcnemarův Test pro klasifikátory
- žádná míra tréninkové sady nebo Variability modelu.
- Méně Přímé Srovnání Modelů
- Mcnemarův Test v Pythonu
- Rozšíření
- další čtení
- papíry
- API
- Články
- Shrnutí
- Získejte přehled o statistikách pro strojové učení!
- rozvíjejí funkční porozumění statistice
- Objevte, jak transformovat Data do znalostí
přehled tutoriálu
tento tutoriál je rozdělen do pěti částí; jsou:
- Statistická Hypotéza Testy pro Hluboké Učení
- kontingenční Tabulce
- McNemar Test Statistika
- Interpretovat McNemar Test pro Klasifikátory
- McNemar Test v Pythonu
Potřebujete pomoci s Statistiky pro Strojové Učení?
Vezměte si zdarma 7denní e-mailový rychlokurz (se vzorovým kódem).
kliknutím se zaregistrujete a také získáte zdarma PDF Ebook verzi kurzu.
Stáhněte si ZDARMA Mini-Kurz
Statistická Hypotéza Testy pro Hluboké Učení
V jeho důležité a široce citován 1998 papírové na použití statistických hypotéz testy pro porovnání klasifikátorů s názvem „Přibližné Statistické Testy pro Porovnání pod Dohledem Klasifikace Algoritmy Učení“, Thomas Dietterich doporučuje použití McNemar test.
konkrétně se test doporučuje v těch případech, kdy porovnávané algoritmy mohou být vyhodnoceny pouze jednou, např. na jedné testovací sadě, na rozdíl od opakovaných hodnocení technikou převzorkování, jako je křížová validace k-fold.
pro algoritmy, které lze provést pouze jednou, je Mcnemarův test jediným testem s přijatelnou chybou typu I.
— Přibližné Statistické Testy pro Porovnání pod Dohledem Klasifikace Algoritmus Učení, 1998.
Konkrétně, Dietterich studie se zabývá hodnocením různých statistických hypotéz testy, některé operační základě výsledků z metody převzorkování. Statistický test vykazující účinek, když ve skutečnosti nebyl přítomen žádný účinek(falešně pozitivní).
statistické testy, které mohou porovnávat modely založené na jediné testovací sadě, jsou důležitým hlediskem pro moderní strojové učení, zejména v oblasti hlubokého učení.
modely hlubokého učení jsou často velké a pracují na velmi velkých datových sadách. Společně tyto faktory mohou znamenat, že školení modelu může trvat dny nebo dokonce týdny na rychlém moderním hardwaru.
to vylučuje praktické použití metod převzorkování pro porovnání modelů a naznačuje potřebu použít test, který může pracovat na výsledcích hodnocení vyškolených modelů na jediném datovém souboru testů.
Mcnemarův test může být vhodným testem pro hodnocení těchto velkých a pomalých modelů hlubokého učení.
Kontingenční tabulka
Mcnemarův test pracuje na kontingenční tabulce.
než se ponoříme do testu, pojďme chvíli pochopit, jak se vypočítá pohotovostní tabulka pro dva klasifikátory.
kontingenční tabulka je tabulka nebo počet dvou kategorických proměnných. V případě testu McNemar je, máme zájem o binární proměnné správné/nesprávné nebo ano/ne pro kontrolu a léčbu nebo dva případy. Tomu se říká kontingenční tabulka 2×2.
kontingenční tabulka nemusí být na první pohled intuitivní. Udělejme to konkrétním příkladem.
zvažte, že máme dva vyškolené klasifikátory. Každý klasifikátor dělá binární predikci třídy pro každý z 10 příklady v testovacím datovém souboru. Předpovědi jsou vyhodnoceny a určeny jako správné nebo nesprávné.
tyto výsledky pak můžeme shrnout do tabulky následovně:
1
2
3
4
5
6
7
8
9
10
11
|
Například,Classifier1 Správné,Classifier2 Správné
1YesNo
2NoNo
3NoYes
4NoNo
5YesYes
6YesYes
7YesYes
8NoNo
9YesNo
10YesYes
|
Můžeme vidět, že Classifier1 dostal 6 správné, nebo přesnost 60%, a Classifier2 dostal 5 správné, nebo 50% přesnost na testovací sadu.
tabulku lze nyní zmenšit na kontingenční tabulku.
kontingenční tabulka se opírá o skutečnost, že oba klasifikátory byly vyškoleny na přesně stejných tréninkových datech a vyhodnoceny na přesně stejných instancích testovacích dat.
kontingenční tabulka má následující strukturu:
1
2
3
|
Classifier2 Správné,Classifier2 Chyby Přiřazení Nesprávné Přípony
Classifier1 Opravit ????
Klasifikátor1 Nesprávné ?? ??
|
V případě první buňku v tabulce, musíme sečíst celkový počet testovacích případů, které Classifier1 tu správnou a Classifier2 tu správnou. Například první instance, kterou oba klasifikátoři správně předpověděli, byla instance číslo 5. Celkový počet případů, které oba klasifikátoři správně předpověděli, byl 4.
dalším programovějším způsobem, jak o tom přemýšlet, je součet každé kombinace ano / ne ve výše uvedené tabulce výsledků.
1
2
3
|
Classifier2 Správné,Classifier2 chyby přiřazení Nesprávné přípony
Classifier1, Jaká Ano/YesYes/Ne
Classifier1 chyby přiřazení Nesprávné přípony Ne/Ano Ne/Ne
|
výsledky uspořádala do kontingenční tabulce jsou následující:
1
2
3
|
Classifier2 Správné,Classifier2 Chyby Přiřazení Nesprávné Přípony
Classifier1, Jaká 42
Classifier1 Chyby Přiřazení Nesprávné Přípony 1 3
|
McNemar Test Statistika
McNemar testu je párový neparametrický nebo distribuce zdarma, statistický test hypotézy.
je také méně intuitivní než některé jiné statistické testy hypotéz.
Mcnemarův test kontroluje, zda se neshody mezi dvěma případy shodují. Technicky se to označuje jako homogenita kontingenční tabulky (konkrétně mezní homogenita). Proto je Mcnemarův test typem testu homogenity pro pohotovostní tabulky.
test je široce používán v medicíně k porovnání účinku léčby proti kontrole.
pokud jde o porovnání dvou binárních klasifikačních algoritmů, test komentuje, zda se oba modely nesouhlasí stejným způsobem (nebo ne). Nekomentuje, zda je jeden model více či méně přesný nebo náchylný k chybám než jiný. To je jasné, když se podíváme na to, jak se statistika vypočítává.
Mcnemarova statistika testů se vypočítá jako:
1
|
statistika = (Ano/Ne Ne/Ano)^2 / (Ano/Ne + Ne/Ano)
|
Kde Ano/Ne je počet testovacích případů, které Classifier1 tu správnou a Classifier2 dostal nesprávné, a Ne/Ano je počet testovacích případů, které Classifier1 mám chyby přiřazení nesprávné přípony a Classifier2 tu správnou.
tento výpočet statistiky testu předpokládá, že každá buňka v kontingenční tabulce použité při výpočtu má počet nejméně 25. Statistika testu má rozdělení Chi-kvadrát s 1 stupněm volnosti.
vidíme, že se používají pouze dva prvky kontingenční tabulky, konkrétně že prvky Ano/Ano a ne/ne se nepoužívají při výpočtu statistiky testu. Jako takový, můžeme vidět, že statistika podává zprávy o různých správných nebo nesprávných předpovědích mezi těmito dvěma modely, ne přesnost nebo chybovost. To je důležité pochopit při tvrzení o zjištění statistiky.
výchozí předpoklad nebo nulová hypotéza testu je, že oba případy nesouhlasí se stejnou částkou. Pokud je nulová hypotéza odmítnuta, naznačuje to, že existují důkazy, které naznačují, že případy nesouhlasí různými způsoby, že neshody jsou zkreslené.
Vzhledem k výběru hladina významnosti, p-hodnota počítá podle testu může být interpretován takto:
- p > alpha: nepodaří zamítnout H0, žádný rozdíl v nesouhlasu (např. léčba neměla žádný efekt).
- p < = alfa: odmítnout H0, významný rozdíl v neshodě (např. léčba měla účinek).
interpretujte Mcnemarův Test pro klasifikátory
je důležité chvíli pochopit, jak interpretovat výsledek testu v kontextu dvou modelů klasifikátorů strojového učení.
dva termíny použité při výpočtu Mcnemarova testu zachycují chyby obou modelů. Konkrétně buňky ne/ano a ano/ne v kontingenční tabulce. Test zkontroluje, zda existuje významný rozdíl mezi počty v těchto dvou buňkách. To je vše.
pokud mají tyto buňky počty, které jsou podobné, ukazuje nám, že oba modely dělají chyby v téměř stejném poměru, jen na různých instancích testovací sady. V tomto případě by výsledek testu nebyl významný a nulová hypotéza by nebyla zamítnuta.
Pod nulovou hypotézu, že dva algoritmy by měly mít stejnou chybovost …
— Přibližné Statistické Testy pro Porovnání pod Dohledem Klasifikace Algoritmus Učení, 1998.
pokud mají tyto buňky počty, které nejsou podobné, ukazuje to, že oba modely nejen dělají různé chyby, ale ve skutečnosti mají jiný relativní podíl chyb na testovací sadě. V tomto případě by byl výsledek testu významný a odmítli bychom nulovou hypotézu.
Takže můžeme zamítnout nulovou hypotézu ve prospěch hypotézy, že oba algoritmy mají různou výkonnost, když trénoval na konkrétní školení
— Přibližné Statistické Testy pro Porovnání pod Dohledem Klasifikace Algoritmus Učení, 1998.
můžeme shrnout takto:
- Nepodaří Zamítnout Nulovou Hypotézu: Klasifikátory mají podobný podíl chyby na testovací sadě.
- odmítnout nulovou hypotézu: klasifikátory mají jiný podíl chyb na testovací sadě.
po provedení zkoušky a nalezení významného výsledku může být užitečné nahlásit statistické opatření účinku za účelem kvantifikace nálezu. Například, přirozenou volbou by bylo hlásit poměry šancí, nebo samotná pohotovostní tabulka, ačkoli oba předpokládají sofistikovaného čtenáře.
může být užitečné nahlásit rozdíl v chybě mezi dvěma klasifikátory na testovací sadě. V tomto případě buďte opatrní se svými tvrzeními, protože významný test neuvádí rozdíl v chybách mezi modely, pouze relativní rozdíl v poměru chyb mezi modely.
a konečně, při použití mcnemarova testu, Dietterich zdůrazňuje dvě důležitá omezení, která je třeba vzít v úvahu. Jsou to:
žádná míra tréninkové sady nebo Variability modelu.
chování modelu se obecně liší v závislosti na konkrétních tréninkových datech použitých k přizpůsobení modelu.
to je způsobeno jak interakcí modelu se specifickými tréninkovými instancemi, tak použitím náhodnosti během učení. Montáž modelu na více různých datových sad školení a vyhodnocení dovedností, jako je tomu u metod převzorkování, poskytuje způsob, jak měřit rozptyl modelu.
zkouška je vhodná, pokud jsou zdroje variability malé.
Mcnemarův test by proto měl být použit pouze tehdy, pokud se domníváme, že tyto zdroje variability jsou malé.
— Přibližné Statistické Testy pro Porovnání pod Dohledem Klasifikace Algoritmus Učení, 1998.
Méně Přímé Srovnání Modelů
dva klasifikátory jsou hodnoceny na jeden test set a testovací sady se očekává, že bude menší, než je trénink set.
to se liší od testů hypotéz, které využívají metody převzorkování, protože více, ne-li všechny, datové sady je zpřístupněno jako testovací sada během hodnocení (což představuje vlastní problémy ze statistického hlediska).
to poskytuje menší příležitost porovnat výkon modelů. Vyžaduje, aby testovací sada byla vhodným zástupcem domény, což často znamená, že testovací datová sada je velká.
Mcnemarův Test v Pythonu
Mcnemarův test může být implementován v Pythonu pomocí funkce mcnemar() Statsmodels.
funkce vezme kontingenční tabulku jako argument a vrátí vypočtenou statistiku testu a hodnotu p.
existují dva způsoby použití statistiky v závislosti na množství dat.
Pokud je buňka v tabulce, která se používá při výpočtu testovací statistika, která má počet méně než 25, pak upravenou verzi testu se používá, který vypočítá přesnou p-hodnotu pomocí binomické rozdělení. Toto je výchozí použití testu:
1
|
stat, p = mcnemar(tabulka, přesné=True)
|
Střídavě, pokud všechny buňky použité ve výpočtu testovací statistika v kontingenční tabulce mají hodnotu 25, nebo více, pak standardním výpočtu test může být použit.
1
|
stat, p = mcnemar(tabulka, exact=False, korekce=True)
|
Můžeme vypočítat McNemar je na příklad kontingenční tabulce je popsáno výše. Tato kontingenční tabulka má malý počet v buňkách nesouhlasu a jako taková musí být použita přesná metoda.
úplný příklad je uveden níže.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# Příklad výpočtu mcnemar test
z statsmodels.statistik.contingency_tables import mcnemar
# define kontingenční tabulce
tabulka = ,
]
# výpočet mcnemar test
výsledek = mcnemar(tabulka, přesné=True)
# shrnout zjištění,
print(‚statistika=%.3f, p-hodnota=%.3f ‚ % (výsledek.statistika, výsledek.pvalue))
# interpretovat p-hodnotu
alfa = 0,05
pokud výsledek.pvalue > alpha:
print (‚stejné proporce chyb (fail to reject H0)‘)
else:
print(‚Různých poměrech chyby (zamítnutí H0)‘)
|
spuštění příkladu vypočítá statistiky a p-hodnoty v kontingenční tabulce a vytiskne výsledky.
vidíme, že test silně potvrzuje, že existuje velmi malý rozdíl v neshodách mezi oběma případy. Nulová hypotéza nebyla odmítnuta.
Jako jsme pomocí testu pro porovnání klasifikátorů, jsme konstatovat, že neexistuje statisticky významný rozdíl v neshody mezi oběma modely.
1
2
|
statistika=1.000, p-hodnota=1.000
Stejné proporce chyby (selhání zamítnout H0)
|
Rozšíření
Tento oddíl uvádí některé nápady pro rozšíření kurzu, které možná budete chtít prozkoumat.
- Najděte výzkumnou práci v strojovém učení, která využívá Mcnemarův statistický test hypotéz.
- Aktualizujte příklad kódu tak, aby pohotovostní tabulka ukazovala významný rozdíl v neshodě mezi oběma případy.
- implementujte funkci, která bude používat správnou verzi testu McNemar na základě poskytnuté pohotovostní tabulky.
pokud prozkoumáte některé z těchto rozšíření, rád bych to věděl.
další čtení
tato část poskytuje více zdrojů k tématu, pokud chcete jít hlouběji.
papíry
- poznámka k chybě vzorkování rozdílu mezi korelovanými proporcemi nebo procenty, 1947.
- přibližné statistické testy pro porovnání algoritmů učení pod dohledem, 1998.
API
- statsmodely.statistik.kontingency_tables.mcnemar() API
Články
- McNemar test na Wikipedii
- Typ i a typ II chyb na Wikipedii
- kontingenční tabulce na wikipedii
Shrnutí
V tomto tutoriálu, jste zjistili, jak používat McNemar test statistické hypotézy test pro porovnání strojového učení klasifikátoru modelů na jeden testovací dataset.
konkrétně jste se naučili:
- doporučení mcnemarova testu pro modely, které jsou drahé na trénink, což vyhovuje velkým modelům hlubokého učení.
- Jak transformovat výsledky predikce ze dvou klasifikátorů v kontingenční tabulce a jak tabulky slouží k výpočtu statistiky v McNemar test.
- jak vypočítat Mcnemarův test v Pythonu a interpretovat a hlásit výsledek.
máte nějaké dotazy?
zeptejte se na své otázky v komentářích níže a já se budu snažit odpovědět.
Získejte přehled o statistikách pro strojové učení!
rozvíjejí funkční porozumění statistice
…o psaní řádků kódu v pythonu
Zjistit, jak můj nový Ebook:
Statistické Metody Strojového Učení
poskytuje self-studovat návody na témata, jako jsou:
Hypotéza Testy, Korelace, Neparametrické Statistiky, Převzorkování, a mnohem více…
Objevte, jak transformovat Data do znalostí
přeskočte akademiky. Jen Výsledky.
podívejte se, co je uvnitř