Bättre eller bara annorlunda?
Kunna jämföra två modeller på samma frågor och avgöra om skillnaden är verklig.
Förkunskaper
Intuition
Modell A får 82 % och modell B 87 % på ditt test med 40 frågor. Är B bättre?
Inte nödvändigtvis. Med 40 frågor är osäkerheten ungefär ±11 procentenheter. Skillnaden på 5 kan vara ren slump.
Men det finns ett mycket känsligare sätt: jämför parat, fråga för fråga.
| B rätt | B fel | |
|---|---|---|
| A rätt | 30 | 3 |
| A fel | 5 | 2 |
De 30 och 2 där båda gör lika säger ingenting om skillnaden. Det som räknas är 3 mot 5 — de fall där de skiljer sig. Med så få diskordanta fall är skillnaden inte visad.
Kod
import numpy as np
from scipy import stats
a = np.array([1,1,0,1,1,1,0,1,1,1,0,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,0,1,1,1,1,1,1,0])
b = np.array([1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0])
print(a.mean(), b.mean()) # 0.80 0.875
b_vinner = int(((b == 1) & (a == 0)).sum()) # 5
a_vinner = int(((a == 1) & (b == 0)).sum()) # 2
print(a_vinner, b_vinner, round(stats.binomtest(b_vinner, a_vinner + b_vinner, 0.5).pvalue, 3))
# 2 5 0.453 → inte avgjort
McNemars test frågar: om modellerna vore lika bra, hur ofta skulle 5 mot 2 uppstå av slump? Svaret 0,45 betyder «ofta» — ingen slutsats.
Hur många frågor behövs? För att upptäcka en skillnad på 5 procentenheter kring 85 % behövs storleksordningen 400–600 fall. Det är därför evalsviter är stora — och därför man återanvänder samma fall mellan versioner.
Behärskning innebär
- Jämför två modeller parat på samma frågor
- Avgör om skillnaden är större än slumpen
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- Wikipedia — McNemar's test (CC BY-SA 4.0) — CC BY-SA 4.0
- arXiv — Show Your Work: Improved Reporting of Experimental Results — arXiv (öppen åtkomst; licens per artikel)