Matrica zabune u strojnom učenju s PRIMJEROM

⚡ Pametni sažetak

Matrica konfuzije je tablica mjerenja performansi za klasifikacijske modele koja uspoređuje predviđene oznake s poznatim stvarnim oznakama, otkrivajući točno koje klase klasifikator točno pogađa, a koje griješi.

  • 🔘 Četiri ishoda: Istinski pozitivni, istiniti negativni, lažno pozitivni i lažno negativni ispunjavaju svaku ćeliju binarne matrice.
  • ☑️ Vrste pogrešaka: Lažno pozitivan rezultat je pogreška tipa I, dok je lažno negativan rezultat pogreška tipa II.
  • Izvedeni pokazatelji: Točnost, preciznost, prisjećanje, specifičnost i F1 rezultat proizlaze iz iste četiri vrijednosti.
  • 🧪 Iznad točnosti: Na neuravnoteženim podacima točnost laska modelu, dok matrica otkriva koju klasu zapravo ne zadovoljava.
  • 🛠️ Prikaz više klasa: N klasa proizvodi mrežu N×N gdje dijagonala sadrži svako točno predviđanje.
  • Python ruta: scikit-learn gradi istu tablicu u dva retka s confusion_matrix() i classification_report().

Matrica zbunjenosti u strojnom učenju s primjerom

Što je Matrica zabune?

A matrica zabune je tehnika mjerenja performansi za stroj za učenje klasifikacija. To je tablica koja prikazuje kako je klasifikacijski model radio na skupu testnih podataka za koje su stvarne vrijednosti već poznate. Pojam matrice konfuzije je dovoljno jednostavan, ali terminologija izgrađena na njemu može biti zbunjujuća, pa je svaki dio objašnjen u nastavku jednostavnim jezikom.

Matrica se primjenjuje na bilo koji nadzirani klasifikator — logistička regresija, stablo odlučivanja, Naivni Bayesov model ili duboka neuronska mreža — jer uspoređuje samo dva stupca oznaka: što je model predvidio i što je zapravo bilo istinito.

Četiri ishoda matrice zabune

Matrica zabune vizualizira točnost klasifikatora usporedbom stvarnih i predviđenih klasa. Binarna matrica zabune sastoji se od kvadrata:

Binarna tablica konfuzije koja prikazuje TP, FP, FN i TN kvadrante
Tablica zabune

Gornja tablica prikazuje četiri kvadrata koja svaka binarna matrica konfuzije sadrži:

  • TP: Istina Pozitivno: Predviđene vrijednosti ispravno predviđene kao stvarne pozitivne
  • FP: Lažno pozitivan: Predviđene vrijednosti netočno predviđene kao stvarne pozitivne, tj. negativne vrijednosti predviđene kao pozitivne
  • FN: Lažno negativno: Pozitivne vrijednosti predviđene kao negativne
  • TN: Istina negativna: Predviđene vrijednosti ispravno predviđene kao stvarne negativne

Statistika daje dvjema ćelijama pogreške vlastita imena. Lažno pozitivan rezultat je Pogreška tipa I — model je aktivirao uzbunu koja se nikada nije trebala aktivirati. Lažno negativan rezultat je Greška tipa II — model je ostao nijem kada je trebao oglasiti uzbunu. Poznavanje koji je od ta dva skuplji za vaš problem određuje koju ćete metriku kasnije podesiti.

Test točnosti možete izračunati iz matrice zbunjenosti, kao što pokazuje sljedeća formula:

Formula točnosti izvedena iz četiri ishoda matrice konfuzije

Primjer matrice zabune

Matrica zbunjenosti korisna je metoda strojnog učenja koja vam omogućuje mjerenje prisjećanja, preciznosti, točnosti i AUC-ROC krivulje. Primjer nogometa u nastavku pokazuje što pojmovi Istinski pozitivan, Istinski negativan, Lažno pozitivan i Lažno negativan znače u svakodnevnom jeziku.

Pravo pozitivno:

Predvidili ste pozitivno i pokazalo se istinitim. Na primjer, predvidjeli ste da će Francuska osvojiti svjetsko prvenstvo i pobijedila je.

Istinski negativan:

Predvidili ste negativno, i to je također istina. Predvidjeli ste da Engleska neće pobijediti, a izgubila je.

Lažno pozitivno:

Vaše predviđanje je pozitivno, ali je lažno.

Predvidio si da će Engleska pobijediti, ali je izgubila.

Lažno negativno:

Tvoja je predikcija negativna, a rezultat je čini lažnom.

Predviđali ste da Francuska neće pobijediti, ali pobijedila je.

Trebate imati na umu da prva riječ opisuje je li predviđanje bilo točno ili netočno (Istina ili Netočno), a druga riječ opisuje što je model predvidio (Pozitivno ili Negativno).

Kako izračunati matricu zabune

Evo korak-po-korak postupka za izračunavanje matrice konfuzije u data mining:

  • Korak 1) Prvo vam je potreban skup podataka za testiranje zajedno s njegovim očekivanim vrijednostima rezultata.
  • Korak 2) Predvidi sve retke u testnom skupu podataka.
  • Korak 3) Usporedite očekivane ishode s predviđanjima i izbrojite:
    1. Zbroj točnih predviđanja svake klase.
    2. Ukupan broj netočnih predviđanja svake klase.

Nakon toga, ovi su brojevi organizirani u dolje navedene metode:

  • Svaki redak matrice odgovara jednoj stvarnoj klasi.
  • Svaki stupac matrice povezan je s predviđenom klasom.
  • U tablicu se upisuje ukupan broj točnih i netočnih klasifikacija.
  • Zbroj točnih predviđanja za klasu ide u ćeliju gdje se stvarni redak te klase susreće s vlastitim predviđenim stupcem - dijagonalom.
  • Zbroj netočnih predviđanja za klasu ide u stvarni redak za tu vrijednost klase i predviđeni stupac klase koju je model odabrao.

Uloge redaka i stupaca su konvencija, a ne zakon, a neki alati za crtanje transponiraju raspored, stoga uvijek pročitajte oznake osi prije interpretacije matrice. Orijentacija koja se ovdje koristi - stvarna u retcima, predviđena u stupcima - je ona koju proizvodi scikit-learn.

Drugi važni pojmovi koji koriste matricu zabune

Nakon što su četiri brojanja na svom mjestu, obitelj sekundarnih pojmova opisuje različite dijelove iste tablice:

  • Pozitivna prediktivna vrijednost (PPV): Ovo je vrlo blizu preciznosti. Jedna značajna razlika između ta dva pojma jest da PPV uzima u obzir prevalenciju. U situaciji kada su klase savršeno uravnotežene, pozitivna prediktivna vrijednost jednaka je preciznosti.
  • Nulta stopa pogreške: Ovaj pojam definira koliko često bi vaša predviđanja bila pogrešna ako biste uvijek predviđali većinsku klasu. Možete ga tretirati kao osnovnu metriku za usporedbu vašeg klasifikatora.
  • F rezultat: F1 rezultat je ponderirani prosječni rezultat stvarne pozitivne stope (prisjećanja) i preciznosti.
  • ROC krivulja: ROC krivulja prikazuje stopu stvarnih pozitivnih rezultata u odnosu na stopu lažno pozitivnih rezultata na različitim graničnim vrijednostima. Također pokazuje kompromis između osjetljivosti (podsjetljivosti) i specifičnosti, što je stopa stvarnih negativnih rezultata.
  • Preciznost: Metrika preciznosti pokazuje točnost pozitivne klase. Mjeri koliko je vjerojatno da je predviđanje pozitivne klase točno.

Formula preciznosti: broj istinitih pozitivnih rezultata podijeljen s brojem istinitih pozitivnih rezultata plus broj lažno pozitivnih rezultata

Maksimalni rezultat je 1 kada klasifikator savršeno klasificira sve pozitivne vrijednosti. Sama preciznost nije od velike pomoći jer zanemaruje negativnu klasu. Metrika se obično uparuje s metrikom prisjećanja. Prisjećanje se naziva i osjetljivost ili stopa istinske pozitivnosti, a piše se kako je prikazano u nastavku.

  • Osjetljivost: Osjetljivost izračunava omjer ispravno detektiranih pozitivnih klasa. Ova metrika pokazuje koliko je model dobar u prepoznavanju pozitivne klase.

Formula osjetljivosti: istiniti pozitivni rezultati podijeljeni s istinitim pozitivnim rezultatima plus lažno negativni rezultati

Metrike i formule matrice konfuzije

Svaka gore navedena metrika je aritmetička na temelju iste četiri stavke, stoga je korisno vidjeti ih usporedno s pitanjem na koje svaka od njih odgovara.

metrički Formula Pitanje na koje odgovara Koristite ga kada
Točnost (TP + TN) / (TP + TN + FP + FN) Koliko je predviđanja ukupno bilo točnih? Razredi su otprilike uravnoteženi
Preciznost TP / (TP + FP) Kada model kaže pozitivno, koliko često je to točno? Lažni alarmi su skupi
Prisjećanje (osjetljivost) TP / (TP + FN) Od svih stvarno pozitivnih, koliko ih je uhvaćeno? Propušteni pozitivni rezultati su skupi
Specifičnost TN / (TN + FP) Od svih stvarno negativnih, koliko ih je očišćeno? Negativna klasa je također važna
F1 rezultat 2 × (Preciznost × Prisjećanje) / (Preciznost + Prisjećanje) Kakva je ravnoteža između to dvoje? Treba vam jedan broj za oboje

Uzmimo filter neželjene pošte testiran na 100 e-poruka koji daje TP = 45, FN = 5, FP = 10 i TN = 40. Točnost je (45 + 40) / 100 = 0.85. Preciznost je 45 / (45 + 10) = 0.82, prisjećanje je 45 / (45 + 5) = 0.90, a specifičnost je 40 / (40 + 10) = 0.80. F1 rezultat iznosi 0.86.

Te brojke pričaju priču koju krije jedna brojka točnosti: filter hvata 90 posto pravog neželjenog sadržaja, ali pogrešno stavlja u karantenu jednu legitimnu e-poštu od pet označenih. Je li ta razmjena prihvatljiva ovisi o cijeni svake pogreške, što je upravo razlog zašto se prikazuje matrica umjesto same točnosti.

Matrica konfuzije za klasifikaciju u više klasa

Problemi klasifikacije rijetko se zaustavljaju na dvije oznake, a matrica se skalira bez promjene oblika. Za N klasa tablica postaje mreža N×N: dijagonala sadrži svako točno predviđanje, a svaka ćelija izvan dijagonale točno bilježi koja je klasa zamijenjena s kojom drugom klasom.

Model s tri klase koji sortira slike u mačku, psa i zeca stvara mrežu 3×3. Ako ćelija u retku "mačka", stupcu "pas" sadrži 12, tada je dvanaest slika mačaka označeno kao pas. Ta razina detalja je razlog zašto je matrica korisnija od rezultata: ona imenuje specifični par klasa koje model ne može razdvojiti.

Preciznost, prizivanje i F1 definirani su po klasi korištenjem pristupa jedan-naspram-ostatka, gdje je dotična klasa pozitivna klasa, a sve ostalo je negativno. Brojke po klasi zatim se kombiniraju na jedan od tri načina:

  • Makro prosjek: Izračunava metriku za svaku klasu neovisno, a zatim uzima neponderiranu srednju vrijednost. Svaka klasa se računa jednako, tako da se rijetke klase ne guše.
  • Mikro prosjek: Objedinjuje brojeve TP, FP i FN iz svih klasa prije izračunavanja metrike. Velike klase dominiraju, a za probleme s jednom oznakom mikropreciznost, mikropodsjećanje i točnost su identični.
  • Ponderirani prosjek: Usrednjava rezultate po klasi koristeći broj istinitih instanci svake klase kao težinu, što neravnotežu u klasama održava vidljivom.

Odaberite makro kada je svaka klasa jednako važna, a ponderiranu kada raspodjela klasa odražava stvarni promet.

Kako stvoriti matricu zbunjenosti u Python

Biblioteka scikit-learn gradi cijelu tablicu iz dva niza oznaka, tako da nije potrebno ručno brojanje. Primjer u nastavku uspoređuje deset istinitih oznaka s deset predviđanja.

from sklearn.metrics import confusion_matrix

y_true = [1, 0, 1, 1, 0, 1, 0, 0, 1, 0]
y_pred = [1, 0, 1, 0, 0, 1, 1, 0, 1, 0]

cm = confusion_matrix(y_true, y_pred)
print(cm)

Poziv vraća 2×2 NumPy niz u kojem je redak 0 stvarna negativna klasa, a redak 1 stvarna pozitivna klasa:

[[4 1]
 [1 4]]

Čitanje niza prema scikit-learn konvenciji daje TN = 4 (gore lijevo), FP = 1 (gore desno), FN = 1 (dolje lijevo) i TP = 4 (dolje desno). Raspakiranjem te četiri vrijednosti u jednom retku dobiva se mapaping eksplicitan:

tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel()

Za dobivanje preciznosti, priopćenja i F1 za svaku klasu odjednom, uključujući makro i ponderirane prosjeke opisane gore, pozovite classification_report() umjesto ručnog izračunavanja svake metrike:

from sklearn.metrics import classification_report

print(classification_report(y_true, y_pred))

Za nacrtanu verziju, ConfusionMatrixDisplay.from_predictions(y_true, y_pred) prikazuje istu tablicu kao označenu toplinsku kartu. Potpuni popis argumenata, uključujući labels i normalize opcije, dokumentirane su u scikit-learn referenca matrice_confuzijeIsti korak evaluacije primjenjuje se na modele izgrađene s TensorFlow, jer metrika ovisi samo o predviđenim oznakama.

Zašto vam treba Confusion matrix?

Evo prednosti i koristi korištenja matrice konfuzije.

  • To pokazuje kako klasifikacijski model postaje zbunjujući kada daje predviđanja.
  • Matrica zbunjenosti daje vam uvid ne samo u pogreške koje vaš klasifikator radi, već i u vrste pogrešaka koje radi.
  • Ova raščlamba pomaže vam prevladati ograničenje korištenja samo točnosti klasifikacije.
  • Svaki stupac matrice zabune predstavlja instance te predviđene klase.
  • Svaki redak matrice zabune predstavlja instance stvarne klase.
  • Pretvara evaluaciju modela u dijagnozu, pokazujući na specifični par klasa kojem je potrebno više podataka ili bolja značajka.

Ta dijagnostička vrijednost je razlog zašto se matrica zbunjenosti nalazi u središtu faze evaluacije u bilo kojem znanost o podacima tijek rada i zašto je to obično prva tablica koja se pregledava prije nego što se klasifikator promovira u produkciju.

Pitanja i odgovori

Ako su samo dva posto zapisa lažni, model koji svaki put predviđa „nije prijevara“ postiže 98 posto točnosti, a ne otkriva ništa. Matrica odmah otkriva praznu ćeliju s istinitim pozitivnim rezultatom, zbog čega je prisjećanje važnije od točnosti na iskrivljenim podacima.

Normalizirana matrica prikazuje proporcije umjesto sirovih brojeva, obično dijeleći svaku ćeliju s ukupnim brojem redaka. To čini klase vrlo različitih veličina usporedivima na prvi pogled, iako skriva veličine uzoraka - stoga prijavite obje verzije kada su klase neuravnotežene.

Ponovno izgradite matricu na nekoliko graničnih vrijednosti vjerojatnosti i promatrajte razmjenu. Snižavanjem praga pomiču se zapisi iz lažno negativne ćelije u ćeliju s istinitim pozitivnim rezultatima, povećavajući prisjećanje, ali i povećavajući lažno pozitivne rezultate. Odaberite graničnu vrijednost gdje preostala mješavina pogrešaka košta najmanje.

Ne. Matrica broji diskretna podudaranja oznaka, pa su joj potrebne kategorije. Izlazi regresije su kontinuirani i procjenjuju se mjerama pogreške kao što su srednja apsolutna pogreška ili R-kvadrat. Razvrstavanje kontinuiranog cilja u pojaseve jedini je način da matrica bude smislena.

Prisjećanje obično pobjeđuje, jer propuštena dijagnoza košta puno više od nepotrebnog naknadnog testa. Alati za probir su stoga podešeni tako da lažno negativne rezultate drže blizu nule i prihvaćaju dodatne lažno pozitivne rezultate, koje potvrdni test kasnije filtrira.

Automatizirani alati za procjenu modela sada skeniraju svaku ćeliju izvan dijagonale, rangiraju najskuplje zbrke i predlažu kojim klasama je potrebno više podataka za obuku ili spojena oznaka. Također automatski uklanjaju pragove, pretvarajući ručnu usporedbu matrica u rangirani uži izbor.

GitHub kopilot izrađuje nacrt uvoza, poziva metrike i grafikon toplinske karte iz kratkog komentara. Nacrt tretirajte kao početnu točku - uvijek sami potvrdite redoslijed osi i argument pozitivne oznake, jer transponirana matrica invertira svaki zaključak.

Dovoljno velika da i najrjeđa klasa još uvijek ispunjava svoj redak s prihvatljivim brojem - nekoliko uzoraka proizvodi metrike koje se divlje mijenjaju između ciklusa. Unakrsna validacija, koja zbraja matrice po preklopima, daje stabilniju sliku od jedne male podjele.

Sažmite ovu objavu uz: