Modellutvärdering
Dela upp data
Efter att ha tränat ett neuralt nätverk är det avgörande att utvärdera hur väl det presterar på osedd data. Denna utvärdering hjälper till att avgöra om modellen har lärt sig meningsfulla mönster eller bara memorerat träningsdata. För att göra detta delas datasettet upp i två delar:
- Träningsmängd — används för att träna det neurala nätverket genom att justera vikter och bias med hjälp av backpropagation;
- Testmängd — används efter träning för att utvärdera hur väl modellen generaliserar till ny, osedd data.
En vanlig uppdelning är 80% för träning och 20% för test, även om denna fördelning kan variera beroende på datasetets storlek och komplexitet.
Datasplitten 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 avgör andelen data som reserveras för testning. Till exempel innebär test_size=0.1 att 10% av datan används för test och 90% för träning.
Om modellen presterar bra på träningsmängden men dåligt på testmängden kan den vara överanpassad — den har lärt sig mönster som är för specifika för träningsdatan istället för att generalisera till nya exempel. Målet är att uppnå stark prestanda på båda dataseten, vilket säkerställer att modellen generaliserar väl.
När datan är uppdelad och modellen är tränad bör prestandan mätas med lämpliga utvärderingsmått, vilka 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;
- Återkallande;
- 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, vilket innebär att 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
Can you explain what a confusion matrix is and how to interpret it?
How do I choose which evaluation metric to use for my classification problem?
Can you give examples of when to prioritize precision over recall, or vice versa?
Awesome!
Completion rate improved to 4
Modellutvärdering
Svep för att visa menyn
Dela upp data
Efter att ha tränat ett neuralt nätverk är det avgörande att utvärdera hur väl det presterar på osedd data. Denna utvärdering hjälper till att avgöra om modellen har lärt sig meningsfulla mönster eller bara memorerat träningsdata. För att göra detta delas datasettet upp i två delar:
- Träningsmängd — används för att träna det neurala nätverket genom att justera vikter och bias med hjälp av backpropagation;
- Testmängd — används efter träning för att utvärdera hur väl modellen generaliserar till ny, osedd data.
En vanlig uppdelning är 80% för träning och 20% för test, även om denna fördelning kan variera beroende på datasetets storlek och komplexitet.
Datasplitten 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 avgör andelen data som reserveras för testning. Till exempel innebär test_size=0.1 att 10% av datan används för test och 90% för träning.
Om modellen presterar bra på träningsmängden men dåligt på testmängden kan den vara överanpassad — den har lärt sig mönster som är för specifika för träningsdatan istället för att generalisera till nya exempel. Målet är att uppnå stark prestanda på båda dataseten, vilket säkerställer att modellen generaliserar väl.
När datan är uppdelad och modellen är tränad bör prestandan mätas med lämpliga utvärderingsmått, vilka 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;
- Återkallande;
- 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, vilket innebär att 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!