Forvirringsmatrix i maskinlæring med EKSEMPEL

⚡ Smart opsummering

En forvirringsmatrix er en præstationsmålingstabel til klassifikationsmodeller, der sammenligner forudsagte betegnelser med kendte, faktiske betegnelser og dermed præcist afslører, hvilke klasser en klassifikator får rigtige, og hvilke den fejler.

  • 🔘 Fire resultater: Sandt positiv, sandt negativ, falsk positiv og falsk negativ udfylder hver celle i en binær matrix.
  • ☑️ Fejltyper: En falsk positiv er en type I-fejl, mens en falsk negativ er en type II-fejl.
  • Afledte metrikker: Nøjagtighed, præcision, recall, specificitet og F1-score kommer alle fra de samme fire tæller.
  • 🧪 Ud over nøjagtighed: Ved ubalancerede data smigrer nøjagtigheden en model, mens matricen afslører, hvilken klasse den rent faktisk fejler.
  • 🛠️ Visning af flere klasser: N klasser producerer et N×N gitter, hvor diagonalen indeholder alle korrekte forudsigelser.
  • 🇧🇷 Python rute: scikit-learn bygger den samme tabel i to linjer med confusion_matrix() og classification_report().

Forvirringsmatrix i maskinlæring med eksempel

Hvad er Confusion Matrix?

A forvirringsmatrix er en præstationsmålingsteknik til machine learning klassificering. Det er en tabel, der viser, hvordan en klassificeringsmodel præsterede på et sæt testdata, hvor de sande værdier allerede er kendte. Begrebet forvirringsmatrix er simpelt nok, men den terminologi, der er bygget ovenpå, kan være forvirrende, så hver del forklares nedenfor i et letforståeligt sprog.

Matricen gælder for enhver overvåget klassifikator — logistisk regression, et beslutningstræ, en Naiv Bayes model eller dybt neuralt netværk — fordi den kun sammenligner to kolonner med etiketter: hvad modellen forudsagde, og hvad der faktisk var sandt.

Fire udfald af forvirringsmatricen

Forvirringsmatricen visualiserer nøjagtigheden af ​​en klassifikator ved at sammenligne de faktiske og forudsagte klasser. Den binære forvekslingsmatrix er sammensat af kvadrater:

Binær forvirringstabel, der viser TP-, FP-, FN- og TN-kvadranterne
Forvirringstabel

Tabellen ovenfor kortlægger de fire kvadrater, som hver binær forvirringsmatrix indeholder:

  • TP: Sand positiv: Forudsagte værdier korrekt forudsagt som faktiske positive
  • FP: Falsk positiv: Forudsagte værdier er fejlagtigt forudsagt som faktiske positive, dvs. negative værdier er forudsagt som positive
  • FN: Falsk negativ: Positive værdier forudsagt som negative
  • TN: Sand negativ: Forudsagte værdier korrekt forudsagt som en faktisk negativ

Statistik giver de to fejlceller deres egne navne. En falsk positiv er en Type I fejl — modellen udløste en alarm, der aldrig burde have været udløst. En falsk negativ er en Type II fejl — modellen forblev tavs, da den burde have slået alarm. At vide, hvilken af ​​de to der er dyrere for dit problem, afgør, hvilken metrik du justerer senere.

Du kan beregne nøjagtighedstesten ud fra forvirringsmatricen, som vist i nedenstående formel:

Nøjagtighedsformel udledt af de fire forvirringsmatrixresultater

Eksempel på forvirringsmatrix

Forvirringsmatrix er en nyttig maskinlæringsmetode, der giver dig mulighed for at måle recall, præcision, nøjagtighed og AUC-ROC-kurven. Fodboldeksemplet nedenfor viser, hvad udtrykkene sand positiv, sand negativ, falsk positiv og falsk negativ betyder i dagligdags sprog.

Sandt positivt:

Du forudsagde positivt, og det viste sig at være sandt. For eksempel havde du forudsagt, at Frankrig ville vinde VM, og de vandt.

Sandt negativt:

Du forudsagde negativt, og det er også sandt. Du havde forudsagt, at England ikke ville vinde, og de tabte.

Falsk positiv:

Din forudsigelse er positiv, og den er falsk.

Du havde forudsagt, at England ville vinde, men de tabte.

Falsk negativ:

Din forudsigelse er negativ, og resultatet gør den falsk.

Du havde forudsagt, at Frankrig ikke ville vinde, men det vandt.

Du skal huske, at det første ord beskriver, om forudsigelsen var rigtig eller forkert (sand eller falsk), og det andet ord beskriver, hvad modellen forudsagde (positiv eller negativ).

Sådan beregnes en forvirringsmatrix

Her er den trinvise proces til beregning af en forvirringsmatrix i data mining:

  • Trin 1) Først skal du bruge et testdatasæt sammen med dets forventede resultatværdier.
  • Trin 2) Forudsig alle rækkerne i testdatasættet.
  • Trin 3) Sammenlign de forventede resultater med forudsigelserne og tæl:
    1. Summen af ​​korrekte forudsigelser for hver klasse.
    2. Summen af ​​forkerte forudsigelser for hver klasse.

Derefter er disse tal organiseret i nedenstående givne metoder:

  • Hver række i matricen svarer til en faktisk klasse.
  • Hver kolonne i matrixen linker til en forudsagt klasse.
  • Det samlede antal korrekte og forkerte klassificeringer er indtastet i tabellen.
  • Summen af ​​korrekte forudsigelser for en klasse placeres i den celle, hvor klassens faktiske række møder dens egen forudsagte kolonne – diagonalen.
  • Summen af ​​forkerte forudsigelser for en klasse placeres i den faktiske række for den pågældende klasseværdi og den forudsagte kolonne for den klasse, som modellen valgte i stedet.

Række- og kolonneroller er en konvention snarere end en lov, og nogle plotværktøjer transponerer layoutet, så læs altid aksebetegnelserne, før du fortolker en matrix. Den anvendte orientering - faktisk på rækkerne, forudsagt på kolonnerne - er den, scikit-learn producerer.

Andre vigtige vilkår ved hjælp af en forvirringsmatrix

Når de fire tællinger er på plads, beskriver en familie af sekundære termer forskellige udsnit af den samme tabel:

  • Positiv prædiktiv værdi (PPV): Dette er meget tæt på præcision. En væsentlig forskel mellem de to begreber er, at PPV tager højde for prævalens. I en situation, hvor klasserne er perfekt afbalancerede, er den positive prædiktive værdi den samme som præcisionen.
  • Nul fejlrate: Dette udtryk definerer, hvor ofte din forudsigelse ville være forkert, hvis du altid forudsagde majoritetsklassen. Du kan bruge det som en basismåling at sammenligne din klassifikator med.
  • F-score: F1-scoren er en vægtet gennemsnitsscore af den sande positive rate (tilbagekaldelse) og præcision.
  • ROC-kurve: ROC-kurven viser den sande positive rate mod den falsk positive rate ved forskellige grænseværdier. Den viser også en afvejning mellem sensitivitet (recall) og specificitet, som er den sande negative rate.
  • Præcision: Præcisionsmetrikken viser nøjagtigheden af ​​den positive klasse. Det måler, hvor sandsynligt forudsigelsen af ​​den positive klasse er korrekt.

Præcisionsformel: sande positiver divideret med sande positiver plus falske positiver

Den maksimale score er 1, når klassifikatoren klassificerer alle de positive værdier perfekt. Præcision alene er ikke særlig nyttig, da den ignorerer den negative klasse. Metrikken parres normalt med recall-metrikken. Recall kaldes også følsomhed eller sand positiv rate, og den er skrevet som vist nedenfor.

  • Følsomhed: Følsomhed beregner forholdet mellem korrekt detekterede positive klasser. Denne metrik viser, hvor god modellen er til at genkende en positiv klasse.

Følsomhedsformel: sande positive divideret med sande positive plus falske negative

Forvirringsmatrixmetrikker og formler

Hver af ovenstående metrikker er aritmetiske baseret på de samme fire tællere, så det er nyttigt at se dem side om side med det spørgsmål, som hver enkelt besvarer.

metric Formula Spørgsmål det besvarer Brug det når
Nøjagtighed (TP + TN) / (TP + TN + FP + FN) Hvor mange forudsigelser var korrekte i alt? Klasserne er nogenlunde afbalancerede
Precision TP / (TP + FP) Når modellen siger positiv, hvor ofte har den så ret? Falske alarmer er dyre
Genkald (følsomhed) TP / (TP + FN) Af alle de virkelige positive ting, hvor mange blev fanget? Oversete positiver er dyre
Specificitet TN / (TN + FP) Af alle reelle negativer, hvor mange blev ryddet op? Den negative klasse betyder også noget
F1 score 2 × (Præcision × Genkaldelse) / (Præcision + Genkaldelse) Hvad er balancen mellem de to? Du skal bruge ét nummer til begge

Tag et spamfilter testet på 100 e-mails, der producerer TP = 45, FN = 5, FP = 10 og TN = 40. Nøjagtigheden er (45 + 40) / 100 = 0.85. Præcisionen er 45 / (45 + 10) = 0.82, recall er 45 / (45 + 5) = 0.90, og specificiteten er 40 / (40 + 10) = 0.80. F1-scoren giver 0.86.

Disse tal fortæller en historie, som et enkelt nøjagtighedstal skjuler: filteret fanger 90 procent af ægte spam, men sætter fejlagtigt én ud af fem markerede legitime e-mails i karantæne. Om denne handel er acceptabel afhænger af omkostningerne ved hver fejl, hvilket netop er grunden til, at matricen rapporteres i stedet for nøjagtighed alene.

Forvirringsmatrix til klassificering af flere klasser

Klassifikationsproblemer stopper sjældent ved to betegnelser, og matricen skalerer uden at ændre form. For N klasser bliver tabellen et N×N gitter: diagonalen indeholder alle korrekte forudsigelser, og hver celle uden for diagonalen registrerer præcis, hvilken klasse der blev forvekslet med hvilken anden klasse.

En model med tre klasser, der sorterer billeder i kat, hund og kanin, producerer et 3×3-gitter. Hvis cellen i rækken "kat", kolonnen "hund" indeholder 12, så blev tolv kattebilleder mærket hund. Det detaljeringsniveau er grunden til, at matricen er mere nyttig end en score: den navngiver det specifikke par af klasser, som modellen ikke kan adskille.

Præcision, recall og F1 defineres pr. klasse ved hjælp af en én-vs-rest-visning, hvor den pågældende klasse er den positive klasse, og alt andet er negativt. Tallene pr. klasse kombineres derefter på en af ​​tre måder:

  • Makrogennemsnit: Beregner metrikken for hver klasse uafhængigt og tager derefter den uvægtede middelværdi. Hver klasse tæller lige meget, så sjældne klasser ikke overdøves.
  • Mikrogennemsnit: Samler TP-, FP- og FN-tællingerne på tværs af alle klasser, før metrikken beregnes. Store klasser dominerer, og for problemer med én label er mikropræcision, mikrorecall og nøjagtighed identiske.
  • Vægtet gennemsnit: Gennemsnitter scorerne pr. klasse ved hjælp af antallet af sande forekomster af hver klasse som vægt, hvilket holder klasseubalancen synlig.

Vælg makro, når alle klasser har lige stor betydning, og vægtet, når klassefordelingen afspejler den reelle trafik.

Sådan opretter du en forvirringsmatrix i Python

Scikit-learn-biblioteket bygger hele tabellen ud fra to label-arrays, så manuel optælling er ikke nødvendig. Eksemplet nedenfor sammenligner ti sande labels med ti forudsigelser.

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)

Kaldet returnerer et 2×2 NumPy-array, hvor række 0 er den faktiske negative klasse, og række 1 er den faktiske positive klasse:

[[4 1]
 [1 4]]

Hvis man læser arrayet i forhold til scikit-learn-konventionen, får man TN = 4 (øverst til venstre), FP = 1 (øverst til højre), FN = 1 (nederst til venstre) og TP = 4 (nederst til højre). Ved at udpakke disse fire værdier på én linje skabes kortetping eksplicit:

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

For at få præcision, genkaldelse og F1 for hver klasse på én gang, inklusive makro- og vægtede gennemsnit beskrevet ovenfor, skal du kalde classification_report() i stedet for at beregne hver metrik manuelt:

from sklearn.metrics import classification_report

print(classification_report(y_true, y_pred))

For en plottet version, ConfusionMatrixDisplay.from_predictions(y_true, y_pred) gengiver den samme tabel som et mærket varmekort. Den fulde argumentliste, inklusive labels og normalize muligheder, er dokumenteret i scikit-learn confusion_matrix referenceDet samme evalueringstrin gælder for modeller bygget med TensorFlow, fordi metrikken kun afhænger af de forudsagte etiketter.

Hvorfor har du brug for forvirringsmatrix?

Her er fordelene og ulemperne ved at bruge en forvirringsmatrix.

  • Det viser, hvordan en klassifikationsmodel bliver forvirret, når den laver forudsigelser.
  • Forvirringsmatricen giver dig ikke kun indsigt i de fejl, din klassifikator laver, men også i de typer af fejl, den laver.
  • Denne opdeling hjælper dig med at overvinde begrænsningen ved udelukkende at bruge klassificeringsnøjagtighed.
  • Hver kolonne i forvirringsmatricen repræsenterer forekomsterne af den forudsagte klasse.
  • Hver række i forvirringsmatricen repræsenterer forekomsterne af den faktiske klasse.
  • Den forvandler modelevaluering til en diagnose, der peger på det specifikke klassepar, der har brug for flere data eller en bedre funktion.

Den diagnostiske værdi er grunden til, at forvirringsmatricen er central i evalueringsfasen i enhver datalogi arbejdsgang, og hvorfor det normalt er den første tabel, der gennemgås, før en klassifikator opgraderes til produktion.

Ofte Stillede Spørgsmål

Hvis kun to procent af registreringerne er falske, opnår en model, der forudsiger "ikke-svindel" hver gang, en nøjagtighed på 98 procent, men ikke fanger noget. Matricen eksponerer den tomme celle med sandt positivt med det samme, hvilket er grunden til, at genkaldelse er vigtigere end nøjagtighed på skæve data.

En normaliseret matrix viser proportioner i stedet for råtællinger, normalt divideret med hver celles rækketotal. Den gør klasser af meget forskellige størrelser sammenlignelige med et hurtigt blik, selvom den skjuler stikprøvestørrelser – så rapporter begge versioner, når klasserne er ubalancerede.

Genopbyg matricen ved flere sandsynlighedsgrænser, og se handlen. Ved at sænke tærsklen flyttes poster fra den falsk-negative celle til den sand-positive celle, hvilket øger recall, men også øger falsk-positive. Vælg den grænse, hvor den resterende fejlblanding koster mindst.

Nej. Matricen tæller diskrete label-matches, så den har brug for kategorier. Regressionsoutput er kontinuerlige og bedømmes med fejlmål såsom gennemsnitlig absolut fejl eller R-kvadrat. At inddele et kontinuerligt mål i bånd er den eneste måde at gøre en matrix meningsfuld på.

Genkaldelse vinder normalt, fordi en misset diagnose koster langt mere end en unødvendig opfølgende test. Screeningsværktøjer er derfor indstillet til at holde falske negative resultater tæt på nul og acceptere ekstra falske positive resultater, som en bekræftende test senere filtrerer fra.

Automatiserede modelevalueringsværktøjer scanner nu alle celler uden for diagonalen, rangerer de dyreste forvirringer og foreslår, hvilke klasser der har brug for flere træningsdata eller en flettet etiket. De scanner også automatisk tærskler og omdanner en manuel sammenligning af matricer til en rangeret shortlist.

GitHub Copilot laver et udkast til importen, metrikkaldet og et varmekortplot fra en kort kommentar. Betragt udkastet som et udgangspunkt — bekræft altid selv akserækkefølgen og argumentet med positiv etiket, fordi en transponeret matrix inverterer enhver konklusion.

Stor nok til, at den sjældneste klasse stadig fylder sin række med et brugbart antal — en håndfuld prøver producerer metrikker, der svinger voldsomt mellem kørsler. Krydsvalidering, som summerer matricer på tværs af foldninger, giver et mere stabilt billede end én lille holdout-split.

Opsummer dette indlæg med: