Osumatarkkuus: oikea vastaus voi peittää epäonnistuneen tunnistimen
Osumatarkkuus (accuracy) on oikeiden luokkaennusteiden osuus kaikista ennusteista. Jokainen esimerkki painaa yhtä paljon, joten yleinen luokka voi hallita tulosta.
Kuvitellaan tuhat viestiä, joista kymmenen on roskapostia. Aina tavallista postia ennustava luokitin saavuttaa 99 prosentin osumatarkkuuden tunnistamatta yhtään roskapostia. Luku kertoo, kuinka usein järjestelmä on oikeassa, mutta ei virheiden laatua.
Vertaa päätöstä perustasoon
NumPy-esimerkki vertaa kahta havainnollistavaa ennustejoukkoa. Toinen tunnistin löytää kaikki positiiviset tapaukset mutta tuottaa kaksikymmentä väärää hälytystä.
import numpy as np
target = np.zeros(1000, dtype=bool)
target[:10] = True
baseline = np.zeros_like(target)
detector = baseline.copy()
detector[:30] = True
accuracy = [(pred == target).mean() for pred in (baseline, detector)]
recall = [(pred & target).sum() / target.sum() for pred in (baseline, detector)]
accuracy suosii hyödytöntä perustasoa, kun taas positiivisen luokan saanti (recall) paljastaa eron. Kumpikaan ei yksin ratkaise paremmuutta: hyödyllinen toimintapiste riippuu ohitettujen tapausten ja väärien hälytysten kustannuksista.
Moniluokkaisessa tehtävässä tarkastele myös luokkakohtaisia tuloksia. Monitunnisteisessa luokittelussa täsmennä, edellyttääkö oikea ennuste koko tunnistejoukon täsmäämistä vai arvioidaanko tunnisteet erikseen.