Metriky vyhodnocení pro modely pro porozumění konverzačním jazykům
Vaše datová sada je rozdělená na dvě části: sadu pro trénování a sadu pro testování. Trénovací sada se používá k trénování modelu, zatímco testovací sada se používá jako test modelu po trénování k výpočtu výkonu a vyhodnocení modelu. Testovací sada se do modelu nevejde prostřednictvím procesu trénování, aby se zajistilo, že je model testován na nových datech.
Vyhodnocení modelu se aktivuje automaticky po úspěšném dokončení trénování. Proces vyhodnocení začíná použitím natrénovaného modelu k predikci uživatelem definovaných záměrů a entit pro promluvy v testovací sadě. Proces je pak porovná s poskytnutými značkami, aby vytvořil směrný plán pravdy. Výsledky se vrátí, abyste mohli zkontrolovat výkon modelu. Pro vyhodnocení používá porozumění konverzačnímu jazyku následující metriky:
Přesnost: Měří, jak přesný nebo přesný model je. Jedná se o poměr mezi správně identifikovanými pozitivními výsledky (pravdivě pozitivními výsledky) a všemi identifikovanými pozitivními výsledky. Metrika přesnosti ukazuje, kolik predikovaných tříd je správně označeno.
Precision = #True_Positive / (#True_Positive + #False_Positive)
Úplnost: Měří schopnost modelu předpovědět skutečné kladné třídy. Jedná se o poměr mezi predikovanými pravdivě pozitivními výsledky a značkou. Metrika úplnosti ukazuje, kolik predikovaných tříd je správné.
Recall = #True_Positive / (#True_Positive + #False_Negatives)
F1 skóre: Skóre F1 je funkce přesnosti a úplnosti. Je potřeba, když hledáte rovnováhu mezi přesností a úplností.
F1 Score = 2 * Precision * Recall / (Precision + Recall)
Přesnost, úplnost a skóre F1 se počítají pro:
- Každá entita samostatně (vyhodnocení na úrovni entit).
- Každý záměr samostatně (vyhodnocení na úrovni záměru).
- Pro model souhrnně (vyhodnocení na úrovni modelu)
Definice přesnosti, úplnosti a vyhodnocení jsou stejné pro vyhodnocení na úrovni entity, záměru a modelu. Počty pravdivě pozitivních výsledků, falešně pozitivních výsledků a falešně negativních výsledků se ale můžou lišit. Představte si například následující text.
Příklad
- Udělejte odpověď s "děkuji moc".
- Odpovězte tím, že řeknete "ano".
- Zkontrolujte prosím můj e-mail.
- E-mail cynthia, že večeře minulý týden byla skvělá.
- Pošlete Mikovi e-mail.
Použité záměry jsou Reply
, sendEmail
a readEmail
. Entity jsou contactName
a message
.
Model by mohl vytvořit následující předpovědi:
Výrok | Předpovězený záměr | Skutečný záměr | Předpovězená entita | Skutečná entita |
---|---|---|---|---|
Udělejte odpověď s "děkuji moc" | Odpověď | Odpověď | thank you very much protože message |
thank you very much protože message |
Odpovědět tím, že řeknete "ano". | sendEmail | Odpověď | -- | yes protože message |
Zkontrolujte prosím můj e-mail. | readEmail | readEmail | -- | -- |
E-mail cynthia, že večeře minulý týden byla skvělá | Odpověď | sendEmail | dinner last week was splendid protože message |
cynthia as , dinner last week was splendid as contactName message |
Odeslání e-mailu Miku | sendEmail | sendEmail | mike protože message |
mike protože contactName |
Vyhodnocení záměru na úrovni záměru pro záměr odpovědi
Klíč | Počet | Vysvětlení |
---|---|---|
Pravdivě pozitivní výsledek | 0 | Promluva 1 byla správně předpovězena jako Reply . |
Falešně pozitivní výsledek | 0 | Promluva 4 byla omylem předpovězena jako Reply . |
Falešně negativní | 0 | Promluva 2 byla omylem předpovězena jako sendEmail . |
Přesnost = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 1) = 0.5
Odvolat = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5
F1 – skóre = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.5 * 0.5) / (0.5 + 0.5) = 0.5
Vyhodnocení záměru na úrovni záměru pro záměr sendEmail
Klíč | Počet | Vysvětlení |
---|---|---|
Pravdivě pozitivní výsledek | 0 | Promluva 5 byla správně předpovězena jako sendEmail . |
Falešně pozitivní výsledek | 0 | Promluva 2 byla omylem předpovězena jako sendEmail . |
Falešně negativní | 0 | Promluva 4 byla omylem předpovězena jako Reply . |
Přesnost = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 1) = 0.5
Odvolat = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5
F1 – skóre = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.5 * 0.5) / (0.5 + 0.5) = 0.5
Vyhodnocení záměru na úrovni záměru pro záměr readEmail
Klíč | Počet | Vysvětlení |
---|---|---|
Pravdivě pozitivní výsledek | 0 | Promluva 3 byla správně předpovězena jako readEmail . |
Falešně pozitivní výsledek | 0 | -- |
Falešně negativní | 0 | -- |
Přesnost = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 0) = 1
Odvolat = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 0) = 1
F1 – skóre = 2 * Precision * Recall / (Precision + Recall) = (2 * 1 * 1) / (1 + 1) = 1
Vyhodnocení na úrovni entity pro entitu contactName
Klíč | Počet | Vysvětlení |
---|---|---|
Pravdivě pozitivní výsledek | 0 | cynthia byla správně předpovězena jako contactName v promluvě 4. |
Falešně pozitivní výsledek | 0 | -- |
Falešně negativní | 0 | mike byl omylem předpovězen jako message v promluvě 5. |
Přesnost = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 0) = 1
Odvolat = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5
F1 – skóre = 2 * Precision * Recall / (Precision + Recall) = (2 * 1 * 0.5) / (1 + 0.5) = 0.67
Vyhodnocení na úrovni entity pro entitu zprávy
Klíč | Počet | Vysvětlení |
---|---|---|
Pravdivě pozitivní výsledek | 2 | thank you very much byla správně předpovězena jako message v promluvě 1 a dinner last week was splendid byla správně předpovězena jako message v promluvě 4. |
Falešně pozitivní výsledek | 0 | mike byl omylem předpovězen jako message v promluvě 5. |
Falešně negativní | 0 | yes nebyl předpovězen jako message v promluvě 2. |
Přesnost = #True_Positive / (#True_Positive + #False_Positive) = 2 / (2 + 1) = 0.67
Odvolat = #True_Positive / (#True_Positive + #False_Negatives) = 2 / (2 + 1) = 0.67
F1 Score = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.67 * 0.67) / (0.67 + 0.67) = 0.67
Vyhodnocení na úrovni modelu pro kolektivní model
Klíč | Počet | Vysvětlení |
---|---|---|
Pravdivě pozitivní výsledek | 6 | Součet pravdivě pozitivních hodnot pro všechny záměry a entity |
Falešně pozitivní výsledek | 3 | Součet falešně pozitivních výsledků pro všechny záměry a entity |
Falešně negativní | 4 | Součet falešně negativních výsledků pro všechny záměry a entity |
Přesnost = #True_Positive / (#True_Positive + #False_Positive) = 6 / (6 + 3) = 0.67
Odvolat = #True_Positive / (#True_Positive + #False_Negatives) = 6 / (6 + 4) = 0.60
F1 – skóre = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.67 * 0.60) / (0.67 + 0.60) = 0.63
Matice zmatku
Konfuzní matice je N x N matice použitá pro vyhodnocení výkonu modelu, kde N je počet entit nebo záměrů. Matice porovnává očekávané popisky s těmi, které model predikoval. Matice poskytuje ucelený pohled na to, jak dobře model funguje a jaké druhy chyb provádí.
Konfuzní matici můžete použít k identifikaci záměrů nebo entit, které jsou příliš blízko sebe, a často se mýlí (nejednoznačnost). V tomto případě zvažte sloučení těchto záměrů nebo entit dohromady. Pokud sloučení není možné, zvažte přidání dalších označených příkladů obou záměrů nebo entit, které modelu pomáhají rozlišovat mezi nimi.
Zvýrazněná diagonála na následujícím obrázku znázorňuje správně predikované entity, kde je předpovězená značka stejná jako skutečná značka.
Metriky vyhodnocení na úrovni záměru nebo entity a na úrovni modelu můžete vypočítat z konfuzní matice:
- Hodnoty v diagonále jsou skutečné kladné hodnoty každého záměru nebo entity.
- Součet hodnot v řádcích záměru nebo entit (s výjimkou diagonály) je falešně pozitivní výsledek modelu.
- Součet hodnot ve sloupcích záměru nebo entit (s výjimkou diagonály) je falešně negativní hodnota modelu.
Podobně:
- Pravdivě pozitivní výsledek modelu je součet pravdivě pozitivních hodnot pro všechny záměry nebo entity.
- Falešně pozitivní výsledek modelu je součet falešně pozitivních výsledků pro všechny záměry nebo entity.
- Falešně negativní hodnota modelu je součet falešně negativních výsledků pro všechny záměry nebo entity.
Pokyny
Po vytrénování modelu se zobrazí některé pokyny a doporučení, jak model vylepšit. Doporučujeme, abyste měli model, který pokrývá každý bod v části s pokyny.
- Trénovací sada obsahuje dostatek dat: Pokud záměr nebo entita obsahuje v trénovacích datech méně než 15 označených instancí, může to vést k nižší přesnosti, protože model není odpovídajícím způsobem natrénovaný na tomto záměru. V tomto případě zvažte přidání dalších označených dat do trénovací sady. Pokud má vaše entita naučenou komponentu, měli byste do entity přidat jenom další označená data. Pokud je vaše entita definována pouze podle komponent seznamu, předem připravených součástí a regulárních výrazů, toto doporučení se nepoužije.
- Všechny záměry nebo entity se nacházejí v testovací sadě: Pokud testovací data nemají označené instance pro záměr nebo entitu, vyhodnocení modelu je méně komplexní z důvodu neotestovaných scénářů. Zvažte testování dat pro každý záměr a entitu ve vašem modelu, abyste zajistili, že se vše testuje.
- Nejasný rozdíl mezi záměry nebo entitami: Pokud jsou data podobná různým záměrům nebo entitám, může to vést k nižší přesnosti, protože se můžou často chybně klasifikovat jako navzájem. Zkontrolujte následující záměry a entity a zvažte jejich sloučení, pokud jsou podobné. V opačném případě přidejte další příklady, abyste je lépe odlišili od sebe. Další pokyny najdete na kartě Konfuzní matice . Pokud se zobrazují dvě entity, které se neustále predikují pro stejné rozsahy, protože sdílejí stejný seznam, předem připravené komponenty nebo komponenty regulárních výrazů, nezapomeňte přidat naučenou komponentu pro každou entitu a nastavit ji jako povinnou. Přečtěte si další informace o komponentách entit.