Modellvurdering
Delt datasett
Når et nevralt nettverk er trent, trenger vi en måte å evaluere ytelsen på usett data. Dette hjelper oss å forstå om modellen faktisk har lært nyttige mønstre, eller om den bare har husket treningsdataene. For å oppnå dette, deler vi datasettet i to deler:
- Treningssett: denne delen av dataene brukes til å trene det nevrale nettverket, slik at det kan justere vekter og bias gjennom tilbakepropagering;
- Testsett: etter trening evalueres modellen på dette separate datasettet for å måle hvor godt den generaliserer til nye, ukjente eksempler.
En typisk deling er 80 % trening / 20 % testing, men dette kan variere avhengig av størrelsen og kompleksiteten på datasettet.
Trenings-/testdeling utføres vanligvis med funksjonen train_test_split()
fra modulen sklearn.model_selection
:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=...)
Parameteren test_size
angir andelen av datasettet som skal brukes som testsett. For eksempel betyr test_size=0.1
at 10 % av dataene brukes til testing, mens de resterende 90 % brukes til trening.
Hvis en modell presterer godt på treningsdataene, men dårlig på testdataene, kan den være overtilpasset, noe som betyr at den har husket treningssettet i stedet for å lære generaliserbare mønstre. Målet er å oppnå høy testnøyaktighet samtidig som man opprettholder god generalisering.
Når modellen er trent, må vi kvantifisere ytelsen ved hjelp av metrikker. Valg av metrikk avhenger av den spesifikke klassifiseringsoppgaven.
Klassifiseringsmetrikker
For klassifiseringsproblemer kan flere sentrale metrikker brukes for å evaluere modellens prediksjoner:
- nøyaktighet;
- presisjon;
- tilbakekalling;
- F1-score.
Siden en perseptron utfører binær klassifisering, vil det å lage en forvirringsmatrise hjelpe deg å forstå disse metrikkene bedre.
En forvirringsmatrise er en tabell som oppsummerer modellens klassifiseringsytelse ved å sammenligne de predikerte etikettene med de faktiske etikettene. Den gir innsikt i antall riktige og gale prediksjoner for hver klasse (1
og 0
).
Nøyaktighet måler andelen korrekt klassifiserte prøver av det totale antallet. Hvis en modell klassifiserer 90 av 100 bilder riktig, er nøyaktigheten 90%.
accuracy=allcorrect=TP+TN+FP+FNTP+TNSelv om nøyaktighet er nyttig, gir det ikke alltid et fullstendig bilde—spesielt for ubalanserte datasett. For eksempel, i et datasett der 95% av prøvene tilhører én klasse, kan en modell oppnå 95% nøyaktighet bare ved alltid å forutsi majoritetsklassen—uten å faktisk lære noe nyttig. I slike tilfeller kan presisjon, recall eller F1-score være mer informative.
Presisjon er prosentandelen korrekt predikerte positive tilfeller av alle predikerte positive. Dette målet er spesielt nyttig når falske positiver er kostbare, som ved spamdeteksjon eller svindeldeteksjon.
precision=predicted positivecorrect positive=TP+FPTPRecall (sensitivitet) måler hvor mange av de faktiske positive tilfellene modellen identifiserer korrekt. Høy recall er avgjørende i situasjoner der falske negative må minimeres, som ved medisinske diagnoser.
recall=all positivecorrect positive=TP+FNTPF1-score er det harmoniske gjennomsnittet av presisjon og tilbakekalling, og gir et balansert mål når både falske positive og falske negative er viktige. Dette er nyttig når datasettet er ubalansert, altså når én klasse forekommer betydelig oftere enn den andre.
F1=precision+recall2×precision×recall1. Hva er hovedformålet med å dele datasettet i trenings- og testsett?
2. Hvorfor kan F1-score være å foretrekke fremfor nøyaktighet på et ubalansert datasett?
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Awesome!
Completion rate improved to 4
Modellvurdering
Sveip for å vise menyen
Delt datasett
Når et nevralt nettverk er trent, trenger vi en måte å evaluere ytelsen på usett data. Dette hjelper oss å forstå om modellen faktisk har lært nyttige mønstre, eller om den bare har husket treningsdataene. For å oppnå dette, deler vi datasettet i to deler:
- Treningssett: denne delen av dataene brukes til å trene det nevrale nettverket, slik at det kan justere vekter og bias gjennom tilbakepropagering;
- Testsett: etter trening evalueres modellen på dette separate datasettet for å måle hvor godt den generaliserer til nye, ukjente eksempler.
En typisk deling er 80 % trening / 20 % testing, men dette kan variere avhengig av størrelsen og kompleksiteten på datasettet.
Trenings-/testdeling utføres vanligvis med funksjonen train_test_split()
fra modulen sklearn.model_selection
:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=...)
Parameteren test_size
angir andelen av datasettet som skal brukes som testsett. For eksempel betyr test_size=0.1
at 10 % av dataene brukes til testing, mens de resterende 90 % brukes til trening.
Hvis en modell presterer godt på treningsdataene, men dårlig på testdataene, kan den være overtilpasset, noe som betyr at den har husket treningssettet i stedet for å lære generaliserbare mønstre. Målet er å oppnå høy testnøyaktighet samtidig som man opprettholder god generalisering.
Når modellen er trent, må vi kvantifisere ytelsen ved hjelp av metrikker. Valg av metrikk avhenger av den spesifikke klassifiseringsoppgaven.
Klassifiseringsmetrikker
For klassifiseringsproblemer kan flere sentrale metrikker brukes for å evaluere modellens prediksjoner:
- nøyaktighet;
- presisjon;
- tilbakekalling;
- F1-score.
Siden en perseptron utfører binær klassifisering, vil det å lage en forvirringsmatrise hjelpe deg å forstå disse metrikkene bedre.
En forvirringsmatrise er en tabell som oppsummerer modellens klassifiseringsytelse ved å sammenligne de predikerte etikettene med de faktiske etikettene. Den gir innsikt i antall riktige og gale prediksjoner for hver klasse (1
og 0
).
Nøyaktighet måler andelen korrekt klassifiserte prøver av det totale antallet. Hvis en modell klassifiserer 90 av 100 bilder riktig, er nøyaktigheten 90%.
accuracy=allcorrect=TP+TN+FP+FNTP+TNSelv om nøyaktighet er nyttig, gir det ikke alltid et fullstendig bilde—spesielt for ubalanserte datasett. For eksempel, i et datasett der 95% av prøvene tilhører én klasse, kan en modell oppnå 95% nøyaktighet bare ved alltid å forutsi majoritetsklassen—uten å faktisk lære noe nyttig. I slike tilfeller kan presisjon, recall eller F1-score være mer informative.
Presisjon er prosentandelen korrekt predikerte positive tilfeller av alle predikerte positive. Dette målet er spesielt nyttig når falske positiver er kostbare, som ved spamdeteksjon eller svindeldeteksjon.
precision=predicted positivecorrect positive=TP+FPTPRecall (sensitivitet) måler hvor mange av de faktiske positive tilfellene modellen identifiserer korrekt. Høy recall er avgjørende i situasjoner der falske negative må minimeres, som ved medisinske diagnoser.
recall=all positivecorrect positive=TP+FNTPF1-score er det harmoniske gjennomsnittet av presisjon og tilbakekalling, og gir et balansert mål når både falske positive og falske negative er viktige. Dette er nyttig når datasettet er ubalansert, altså når én klasse forekommer betydelig oftere enn den andre.
F1=precision+recall2×precision×recall1. Hva er hovedformålet med å dele datasettet i trenings- og testsett?
2. Hvorfor kan F1-score være å foretrekke fremfor nøyaktighet på et ubalansert datasett?
Takk for tilbakemeldingene dine!