Utvärderingsmått för modeller för förståelse av konversationsspråk
Din datauppsättning är uppdelad i två delar: en uppsättning för träning och en uppsättning för testning. Träningsuppsättningen används för att träna modellen, medan testuppsättningen används som ett test för modell efter träning för att beräkna modellens prestanda och utvärdering. Testuppsättningen introduceras inte i modellen genom träningsprocessen för att se till att modellen testas på nya data.
Modellutvärdering utlöses automatiskt när träningen har slutförts. Utvärderingsprocessen börjar med att använda den tränade modellen för att förutsäga användardefinierade avsikter och entiteter för yttranden i testuppsättningen. Sedan jämför processen dem med de tillhandahållna taggarna för att upprätta en baslinje för sanning. Resultaten returneras så att du kan granska modellens prestanda. För utvärdering använder förståelse av konversationsspråk följande mått:
Precision: Mäter hur exakt eller exakt din modell är. Det är förhållandet mellan de korrekt identifierade positiva identifieringarna (sanna positiva identifieringar) och alla identifierade positiva identifieringar. Precisionsmåttet visar hur många av de förutsagda klasserna som är korrekt märkta.
Precision = #True_Positive / (#True_Positive + #False_Positive)
Kom ihåg: Mäter modellens förmåga att förutsäga faktiska positiva klasser. Det är förhållandet mellan de förutsagda sanna positiva och vad som taggades. Återkallningsmåttet visar hur många av de förutsagda klasserna som är korrekta.
Recall = #True_Positive / (#True_Positive + #False_Negatives)
F1-poäng: F1-poängen är en funktion med precision och träffsäkerhet. Det behövs när du söker en balans mellan precision och återkallande.
F1 Score = 2 * Precision * Recall / (Precision + Recall)
Precision, träffsäkerhet och F1-poängen beräknas för:
- Varje entitet separat (utvärdering på entitetsnivå).
- Varje avsikt separat (utvärdering på avsiktsnivå).
- För modellen kollektivt (utvärdering på modellnivå).
Definitionerna av precision, återkallande och utvärdering är desamma för utvärderingar på entitetsnivå, avsiktsnivå och modellnivå. Antalet sanna positiva identifieringar, falska positiva identifieringar och falska negativa värden kan dock variera. Tänk till exempel på följande text.
Exempel
- Ge ett svar med "tack så mycket".
- Svara med att säga "ja".
- Kontrollera min e-post tack.
- E-post till Cynthia att middagen förra veckan var fantastisk.
- Skicka ett e-postmeddelande till Mike.
De avsikter som används är Reply
, sendEmail
och readEmail
. Entiteterna är contactName
och message
.
Modellen kan göra följande förutsägelser:
Yttrande | Förutsagd avsikt | Faktisk avsikt | Förutsagd entitet | Faktisk entitet |
---|---|---|---|---|
Gör ett svar med "tack så mycket" | Svar | Svar | thank you very much som message |
thank you very much som message |
Svara med att säga "ja" | sendEmail | Svar | -- | yes som message |
Kontrollera min e-post tack | readEmail | readEmail | -- | -- |
E-post till Cynthia att middagen förra veckan var fantastisk | Svar | sendEmail | dinner last week was splendid som message |
cynthia som contactName , dinner last week was splendid som message |
Skicka ett e-postmeddelande till Mike | sendEmail | sendEmail | mike som message |
mike som contactName |
Utvärdering på avsiktsnivå för svars avsikt
Nyckel | Antal | Förklaring |
---|---|---|
Sann positiv | 1 | Yttrande 1 förutsades korrekt som Reply . |
Falsk positiv identifiering | 1 | Yttrande 4 förutsades felaktigt som Reply . |
Falsk negativ | 1 | Yttrande 2 förutsades felaktigt som sendEmail . |
Precision = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 1) = 0.5
Komma ihåg = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5
F1-poäng = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.5 * 0.5) / (0.5 + 0.5) = 0.5
Utvärdering på avsiktsnivå för avsikten sendEmail
Nyckel | Antal | Förklaring |
---|---|---|
Sann positiv | 1 | Yttrande 5 förutsades korrekt som sendEmail . |
Falsk positiv identifiering | 1 | Yttrande 2 förutsades felaktigt som sendEmail . |
Falsk negativ | 1 | Yttrande 4 förutsades felaktigt som Reply . |
Precision = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 1) = 0.5
Komma ihåg = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5
F1-poäng = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.5 * 0.5) / (0.5 + 0.5) = 0.5
Utvärdering på avsiktsnivå för readEmail-avsikt
Nyckel | Antal | Förklaring |
---|---|---|
Sann positiv | 1 | Yttrande 3 förutsades korrekt som readEmail . |
Falsk positiv identifiering | 0 | -- |
Falsk negativ | 0 | -- |
Precision = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 0) = 1
Komma ihåg = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 0) = 1
F1-poäng = 2 * Precision * Recall / (Precision + Recall) = (2 * 1 * 1) / (1 + 1) = 1
Utvärdering på entitetsnivå för contactName-entitet
Nyckel | Antal | Förklaring |
---|---|---|
Sann positiv | 1 | cynthia förutsagts korrekt som contactName i yttrande 4. |
Falsk positiv identifiering | 0 | -- |
Falsk negativ | 1 | mike förutsagdes felaktigt som message i yttrande 5. |
Precision = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 0) = 1
Komma ihåg = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5
F1-poäng = 2 * Precision * Recall / (Precision + Recall) = (2 * 1 * 0.5) / (1 + 0.5) = 0.67
Utvärdering på entitetsnivå för meddelandeentitet
Nyckel | Antal | Förklaring |
---|---|---|
Sann positiv | 2 | thank you very much förutsades korrekt som message i yttrande 1 och dinner last week was splendid förutsades korrekt som message i yttrande 4. |
Falsk positiv identifiering | 1 | mike förutsagdes felaktigt som message i yttrande 5. |
Falsk negativ | 1 | yes förutsades inte som message i yttrande 2. |
Precision = #True_Positive / (#True_Positive + #False_Positive) = 2 / (2 + 1) = 0.67
Komma ihåg = #True_Positive / (#True_Positive + #False_Negatives) = 2 / (2 + 1) = 0.67
F1-poäng = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.67 * 0.67) / (0.67 + 0.67) = 0.67
Utvärdering på modellnivå för den kollektiva modellen
Nyckel | Antal | Förklaring |
---|---|---|
Sann positiv | 6 | Summan av sanna positiva identifieringar för alla avsikter och entiteter. |
Falsk positiv identifiering | 3 | Summan av falska positiva identifieringar för alla avsikter och entiteter. |
Falsk negativ | 4 | Summan av falska negativa identifieringar för alla avsikter och entiteter. |
Precision = #True_Positive / (#True_Positive + #False_Positive) = 6 / (6 + 3) = 0.67
Komma ihåg = #True_Positive / (#True_Positive + #False_Negatives) = 6 / (6 + 4) = 0.60
F1-poäng = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.67 * 0.60) / (0.67 + 0.60) = 0.63
Förvirringsmatris
En förvirringsmatris är en N x N-matris som används för utvärdering av modellprestanda, där N är antalet entiteter eller avsikter. Matrisen jämför de förväntade etiketterna med de som förutsägs av modellen. Matrisen ger en holistisk vy över hur bra modellen presterar och vilka typer av fel den gör.
Du kan använda förvirringsmatrisen för att identifiera avsikter eller entiteter som är för nära varandra och ofta misstas (tvetydighet). I det här fallet bör du överväga att slå samman dessa avsikter eller entiteter. Om sammanslagning inte är möjligt kan du överväga att lägga till fler taggade exempel på både avsikter eller entiteter för att hjälpa modellen att skilja mellan dem.
Den markerade diagonalen i följande bild visar korrekt förutsagda entiteter, där den förutsagda taggen är samma som den faktiska taggen.
Du kan beräkna utvärderingsmåtten på avsiktsnivå eller entitetsnivå och modellnivå från förvirringsmatrisen:
- Värdena i diagonalen är de sanna positiva värdena för varje avsikt eller entitet.
- Summan av värdena i avsikts- eller entitetsraderna (exklusive diagonalen) är modellens falska positiva resultat.
- Summan av värdena i avsikts- eller entitetskolumnerna (exklusive diagonalen) är modellens falska negativa.
Likaledes:
- Modellens verkliga positiva resultat är summan av sanna positiva identifieringar för alla avsikter eller entiteter.
- Modellens falska positiva resultat är summan av falska positiva identifieringar för alla avsikter eller entiteter.
- Modellens falska negativa är summan av falska negativa identifieringar för alla avsikter eller entiteter.
Vägledning
När du har tränat din modell ser du några riktlinjer och rekommendationer om hur du kan förbättra modellen. Vi rekommenderar att du har en modell som täcker varje punkt i vägledningsavsnittet.
- Träningsuppsättningen har tillräckligt med data: När en avsikt eller entitet har färre än 15 märkta instanser i träningsdata kan det leda till lägre noggrannhet eftersom modellen inte är tillräckligt tränad på den avsikten. I det här fallet bör du överväga att lägga till mer märkta data i träningsuppsättningen. Du bör bara överväga att lägga till mer märkta data i entiteten om entiteten har en inlärd komponent. Om din entitet endast definieras av list-, fördefinierade och regex-komponenter gäller inte den här rekommendationen.
- Alla avsikter eller entiteter finns i testuppsättningen: När testdata saknar märkta instanser för en avsikt eller entitet är modellutvärderingen mindre omfattande på grund av otestade scenarier. Överväg att ha testdata för varje avsikt och entitet i din modell för att säkerställa att allt testas.
- Oklar skillnad mellan avsikter eller entiteter: När data är liknande för olika avsikter eller entiteter kan det leda till lägre noggrannhet eftersom de ofta felklassificeras som varandra. Granska följande avsikter och entiteter och överväg att slå samman dem om de är liknande. Annars lägger du till fler exempel för att bättre skilja dem från varandra. Mer vägledning finns på fliken Förvirringsmatris . Om du ser två entiteter som ständigt förutsägs för samma intervall eftersom de delar samma lista, fördefinierade eller regex-komponenter, måste du lägga till en inlärd komponent för varje entitet och göra det nödvändigt. Läs mer om entitetskomponenter.