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.
Š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:

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:
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:
- Zbroj točnih predviđanja svake klase.
- 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.
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.
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.


