Modellutvärdering
Dela upp data
När ett neuralt nätverk har tränats behöver vi ett sätt att utvärdera dess prestanda på osedd data. Detta hjälper oss att förstå om modellen verkligen har lärt sig användbara mönster eller bara memorerat träningsdatan. För att uppnå detta delar vi upp datasetet i två delar:
- Träningsmängd: denna del av datan används för att träna det neurala nätverket, vilket gör att det kan justera vikter och bias genom backpropagation;
- Testmängd: efter träning utvärderas modellen på denna separata datamängd för att mäta hur väl den generaliserar till nya, osedda exempel.
En typisk uppdelning är 80% träning / 20% test, men detta kan variera beroende på datasetets storlek och komplexitet.
Uppdelning mellan träning och test utförs vanligtvis med funktionen train_test_split()
från 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=...)
Parametern test_size
anger andelen av datasetet som ska användas som testmängd. Till exempel innebär test_size=0.1
att 10% av datan används för testning, medan resterande 90% används för träning.
Om en modell presterar bra på träningsdatan men dåligt på testdatan kan den vara överanpassad, vilket innebär att den har memorerat träningsmängden istället för att lära sig generaliserbara mönster. Målet är att uppnå hög testnoggrannhet samtidigt som god generalisering bibehålls.
När modellen är tränad behöver vi kvantifiera dess prestanda med hjälp av mått. Valet av mått beror på den specifika klassificeringsuppgiften.
Klassificeringsmått
För klassificeringsproblem kan flera viktiga mått användas för att utvärdera modellens prediktioner:
- noggrannhet;
- precision;
- återkallelse;
- F1-poäng.
Eftersom en perceptron utför binär klassificering hjälper det att skapa en förväxlingsmatris för att bättre förstå dessa mått.
En förväxlingsmatris är en tabell som sammanfattar modellens klassificeringsprestanda genom att jämföra de predikterade etiketterna med de faktiska etiketterna. Den ger insikt i antalet korrekta och felaktiga prediktioner för varje klass (1
och 0
).
Noggrannhet mäter andelen korrekt klassificerade prover av det totala antalet. Om en modell korrekt klassificerar 90 av 100 bilder är dess noggrannhet 90%.
accuracy=allcorrect=TP+TN+FP+FNTP+TNÄven om noggrannhet är användbart ger det inte alltid en fullständig bild—särskilt för obalanserade datamängder. Till exempel, i en datamängd där 95% av proverna tillhör en klass kan en modell uppnå 95% noggrannhet bara genom att alltid förutsäga majoritetsklassen—utan att faktiskt lära sig något användbart. I sådana fall kan precision, recall eller F1-score vara mer informativa.
Precision är andelen korrekt förutsagda positiva fall av alla förutsagda positiva. Detta mått är särskilt användbart när falska positiva är kostsamma, såsom vid skräppostdetektion eller bedrägeridetektion.
precision=predicted positivecorrect positive=TP+FPTPRecall (sensitivitet) mäter hur många av de faktiska positiva fallen modellen korrekt identifierar. Hög recall är avgörande i situationer där falska negativa måste minimeras, såsom vid medicinska diagnoser.
recall=all positivecorrect positive=TP+FNTPF1-poäng är det harmoniska medelvärdet av precision och återkallelse, vilket ger ett balanserat mått när både falska positiva och falska negativa är viktiga. Detta är användbart när datasettet är obalanserat, det vill säga när en klass förekommer betydligt oftare än den andra.
F1=precision+recall2×precision×recall1. Vad är huvudsyftet med att dela upp ditt dataset i tränings- och testuppsättningar?
2. Varför kan F1-poäng föredras framför noggrannhet på ett obalanserat dataset?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 4
Modellutvärdering
Svep för att visa menyn
Dela upp data
När ett neuralt nätverk har tränats behöver vi ett sätt att utvärdera dess prestanda på osedd data. Detta hjälper oss att förstå om modellen verkligen har lärt sig användbara mönster eller bara memorerat träningsdatan. För att uppnå detta delar vi upp datasetet i två delar:
- Träningsmängd: denna del av datan används för att träna det neurala nätverket, vilket gör att det kan justera vikter och bias genom backpropagation;
- Testmängd: efter träning utvärderas modellen på denna separata datamängd för att mäta hur väl den generaliserar till nya, osedda exempel.
En typisk uppdelning är 80% träning / 20% test, men detta kan variera beroende på datasetets storlek och komplexitet.
Uppdelning mellan träning och test utförs vanligtvis med funktionen train_test_split()
från 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=...)
Parametern test_size
anger andelen av datasetet som ska användas som testmängd. Till exempel innebär test_size=0.1
att 10% av datan används för testning, medan resterande 90% används för träning.
Om en modell presterar bra på träningsdatan men dåligt på testdatan kan den vara överanpassad, vilket innebär att den har memorerat träningsmängden istället för att lära sig generaliserbara mönster. Målet är att uppnå hög testnoggrannhet samtidigt som god generalisering bibehålls.
När modellen är tränad behöver vi kvantifiera dess prestanda med hjälp av mått. Valet av mått beror på den specifika klassificeringsuppgiften.
Klassificeringsmått
För klassificeringsproblem kan flera viktiga mått användas för att utvärdera modellens prediktioner:
- noggrannhet;
- precision;
- återkallelse;
- F1-poäng.
Eftersom en perceptron utför binär klassificering hjälper det att skapa en förväxlingsmatris för att bättre förstå dessa mått.
En förväxlingsmatris är en tabell som sammanfattar modellens klassificeringsprestanda genom att jämföra de predikterade etiketterna med de faktiska etiketterna. Den ger insikt i antalet korrekta och felaktiga prediktioner för varje klass (1
och 0
).
Noggrannhet mäter andelen korrekt klassificerade prover av det totala antalet. Om en modell korrekt klassificerar 90 av 100 bilder är dess noggrannhet 90%.
accuracy=allcorrect=TP+TN+FP+FNTP+TNÄven om noggrannhet är användbart ger det inte alltid en fullständig bild—särskilt för obalanserade datamängder. Till exempel, i en datamängd där 95% av proverna tillhör en klass kan en modell uppnå 95% noggrannhet bara genom att alltid förutsäga majoritetsklassen—utan att faktiskt lära sig något användbart. I sådana fall kan precision, recall eller F1-score vara mer informativa.
Precision är andelen korrekt förutsagda positiva fall av alla förutsagda positiva. Detta mått är särskilt användbart när falska positiva är kostsamma, såsom vid skräppostdetektion eller bedrägeridetektion.
precision=predicted positivecorrect positive=TP+FPTPRecall (sensitivitet) mäter hur många av de faktiska positiva fallen modellen korrekt identifierar. Hög recall är avgörande i situationer där falska negativa måste minimeras, såsom vid medicinska diagnoser.
recall=all positivecorrect positive=TP+FNTPF1-poäng är det harmoniska medelvärdet av precision och återkallelse, vilket ger ett balanserat mått när både falska positiva och falska negativa är viktiga. Detta är användbart när datasettet är obalanserat, det vill säga när en klass förekommer betydligt oftare än den andra.
F1=precision+recall2×precision×recall1. Vad är huvudsyftet med att dela upp ditt dataset i tränings- och testuppsättningar?
2. Varför kan F1-poäng föredras framför noggrannhet på ett obalanserat dataset?
Tack för dina kommentarer!