Existuje mnoho způsobů, jak hodnotit výkon klasifikátoru. V tomto článku představujeme křivku Precision-Recall Curve a dále zkoumáme rozdíl mezi dvěma oblíbenými metodami hlášení výkonu: křivkou Precision-Recall (PR) a Provozní charakteristika přijímače (ROC) Křivka. Křivka ROC je již diskutována v článek . Pojďme stručně pochopit, co je to křivka Precision-Recall.
Co je přesnost a vyvolání?
Přesnost
- Poměr správně předpovězených pozitivních pozorování ke všem předpokládaným pozitivním se nazývá přesnost.
- Měří, jak dobře model předpovídá pozitivní výsledky.
- Vzorec přesnosti je:
- Přesnost se týká kvality pozitivních předpovědí. Vysoká přesnost naznačuje, že model má nízkou míru falešně pozitivních výsledků.
Odvolání
- Poměr správně předpovězených pozitivních pozorování k celkovému počtu skutečných pozitivních pozorování se nazývá reminiscence.
- Měří, jak dobře model dokáže zachytit každou relevantní instanci.
- Odvolání se vypočítá pomocí tohoto vzorce:
- Recall se zabývá množstvím relevantních instancí zachycených modelem. Vysoká paměť ukazuje, že model má nízkou míru falešně negativních výsledků.
Pokud jde o empirickou interpretaci, nejužitečnějším nástrojem pro pochopení přesnosti a zapamatování je matoucí matice obsahující čtyři základní pojmy:
- True Positive (TP): Počet instancí pozitivní třídy, které jsou přesně identifikovány
- Falešně pozitivní (FP): Počet negativních instancí třídy, které jsou omylem identifikovány jako pozitivní instance třídy, se nazývá falešně pozitivní (FP).
- True Negative (TN): Počet instancí negativní třídy, které jsou přesně identifikovány
- Falešně negativní (FN): Počet pozitivních instancí třídy, které jsou omylem klasifikovány jako negativní instance třídy (Falešně negativní nebo FN)
Precision-Recall (PR) křivka ve strojovém učení
Přesnost je podíl opravit pozitivní klasifikace (skutečně pozitivní) děleno celkovým počtem předpověděl pozitivní klasifikace, které byly provedeny (skutečně pozitivní + falešně pozitivní). Odvolání je podíl opravit pozitivní klasifikace (skutečně pozitivní) děleno celkovým počtem opravdu pozitivní klasifikace (skutečně pozitivní + falešně negativní).
Křivka PR je jednoduše graf s hodnotami přesnosti na ose y a hodnotami Recall na ose x. Jinými slovy, křivka PR obsahuje
- Je důležité poznamenat, že přesnost se také nazývá pozitivní prediktivní hodnota (PPV).
- Stažení se také nazývá Citlivost, Hit Rate nebo True Positive Rate (TPR).
Obrázek níže ukazuje srovnání vzorových křivek PR a ROC. 
Interpretace křivky Precision-Recall Curve
Je žádoucí, aby algoritmus měl jak vysokou přesnost, tak vysokou vybavitelnost. Většina algoritmů strojového učení však často zahrnuje kompromis mezi těmito dvěma. Dobrá křivka PR má větší AUC (plocha pod křivkou) . Na obrázku výše má klasifikátor odpovídající modré čáře lepší výkon než klasifikátor odpovídající zelené čáře. Je důležité poznamenat, že klasifikátor, který má vyšší AUC na ROC křivka bude mít také vždy vyšší AUC na křivce PR. Zvažte algoritmus, který klasifikuje, zda dokument patří do kategorie Sportovní zprávy. Předpokládejme, že existuje 12 dokumentů s následujícími základními pravdivými (skutečnými) a výstupními třídami klasifikátoru.
| ID dokumentu | Pozemní pravda | Výstup klasifikátoru |
|---|---|---|
| D1 | Sportovní | Sportovní |
| D2 | Sportovní | Sportovní |
| D3 | Ne Sport | Sportovní |
| D4 | Sportovní | Ne Sport |
| D5 | Ne Sport | Ne Sport |
| D6 | Sportovní | Ne Sport |
| D7 | Ne Sport | Sportovní |
| D8 | Ne Sport | Ne Sport |
| D9 | Ne Sport | Ne Sport |
| D10 | Sportovní | Sportovní |
| D11 | Sportovní | Sportovní |
| D12 | Sportovní | Ne Sport |
Nyní najdeme hodnoty TP, TN, FP a FN.
Použijme příklad zahrnující dokumenty klasifikované jako Sport nebo Nesport, abychom lépe vysvětlili definice True Positives (TP), True Negatives (TN), False Positives (FP) a False Negatives (FN) v kontextu klasifikace:
Skutečně pozitivní (TP): Dokumenty, které byly přesně kategorizovány jako Sport a které se ve skutečnosti týkaly sportu. Dokumenty D1, D2, D10 a D11 v tomto scénáři jsou instancemi TP.
Skutečná negativa (TN): Skutečná negativa jsou případy, kdy byl dokument náležitě označen jako Není sport, i když se sportem neměl nic společného. V tomto případě je TN demonstrován dokumenty D5, D8 a D9.
Falešně pozitivní (FP): Dokumenty, které byly omylem zařazeny do kategorie Sport, i když se sportem neměly nic společného. Zde jsou některé příklady FP, dokumenty D3 a D7.
Falešná negativa (FN): Příklady dokumentů, které byly mylně označeny jako Not sports, ale ve skutečnosti se týkaly sportu. Dokumenty D4, D6 a D12 jsou v tomto případě příklady FN.
Vzhledem k těmto počtům: Město =4, TN =3, FP =2, FN =3
Nakonec se přesnost a zapamatovatelnost vypočítá následovně:
Precision = frac{TP}{TP+FP} = frac{4}{6} = frac{2}{3}
Recall = frac{TP}{TP+FN} = frac{4}{7} Z toho vyplývá, že odvolání je 4/7, když je přesnost 2/3. Jinak řečeno, ze všech případů, u kterých se očekávalo, že budou pozitivní, byly dvě třetiny přesně klasifikovány (přesnost) a ze všech případů, které byly skutečně pozitivní, byl model schopen zachytit čtyři sedminy z nich (vyvolání).
Nastavením různých prahů získáme několik takových přesných, vyvolávacích párů. Vynesením více takových párů P-R s každou hodnotou v rozmezí od 0 do 1 získáme křivku PR.
Potřebujete křivku PR, když existuje křivka ROC?
Křivka PR je zvláště užitečná při hlášení výsledků vyhledávání informací.
Vyhledávání informací zahrnuje prohledávání fondu dokumentů za účelem nalezení těch, které jsou relevantní pro konkrétní uživatelský dotaz. Předpokládejme například, že uživatel zadá vyhledávací dotaz Pink Elephants. Vyhledávač prochází miliony dokumentů (pomocí některých optimalizovaných algoritmů), aby našel několik relevantních dokumentů. Můžeme tedy s jistotou předpokládat, že ne. relevantních dokumentů bude mnohem méně ve srovnání s ne. nerelevantních dokumentů.
V tomto scénáři
- TP = Počet nalezených dokumentů, které jsou relevantní (dobré výsledky).
- FP = Počet získaných dokumentů, které nejsou relevantní (falešné výsledky vyhledávání).
- TN = Počet nevyhledaných dokumentů, které nejsou relevantní.
- FN = Počet nevyhledaných dokumentů, které jsou relevantní (dobré dokumenty, které jsme zmeškali).
ROC křivka je graf obsahující Recall = TPR =
FPR nám navíc nepomáhá dobře vyhodnotit vyhledávací systém, protože se chceme více zaměřit na vyhledané dokumenty, a ne na nevyhledané. PR křivka pomáhá tento problém vyřešit. PR křivka má na ose x hodnotu Recall (TPR) a přesnost =
Kdy použít křivky ROC vs. Precision-Recall Curves?
ROC Křivky (Provozní charakteristika přijímače) jsou vhodné, když je rozdělení tříd vyvážené a falešně pozitivní a falešně negativní výsledky mají podobné důsledky. Zobrazují kompromis mezi citlivostí a specifitou. Naproti tomu křivky Precision-Recall jsou vhodnější při práci s nevyváženými datovými sadami, které se zaměřují na výkon pozitivní predikce třídy.
Precision-Recall poskytuje přehled o schopnosti modelu správně klasifikovat pozitivní případy. Volba mezi ROC a Precision-Recall závisí na konkrétních potřebách problému, přičemž je zdůrazněno důležitost pochopení distribuce dat a důsledků různých typů chyb.
Implementace základního kódu pro křivku Precision-Recall Curve
Import nezbytných knihoven
Tyto řádky kódu importují soubor Knihovny Pythonu a moduly potřebné ke generování křivky přesné zpětné vazby sci-kit-learn a vizualizujte výsledky pomocí Matplotlib . Matplotlib je oblíbená knihovna pro vykreslování Pythonu a pyplot poskytuje přímočaré rozhraní pro vytváření různých typů grafů a grafů. Logistická regrese je oblíbený klasifikační algoritmus pro binární a vícetřídní klasifikační úlohy. Křivka přesnosti a AUC jsou oblíbené metriky hodnocení binární klasifikace problémy, zejména při práci s nevyváženými datovými soubory.
Python3 import matplotlib.pyplot as plt from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import precision_recall_curve, auc> Použitá datová sada
Tento kód generuje syntetickou datovou sadu pro problém binární klasifikace pomocí funkce „make_classification“ sci-kit-learn.
Python3 # Generate a synthetic dataset X, y = make_classification( n_samples=1000, n_features=20, n_classes=2, random_state=42)> Trénujte a testujte split
The train_test_split Funkce ve scikit-learn se v tomto fragmentu kódu používá k rozdělení dříve vygenerované syntetické datové sady (X a y) na trénovací a testovací sady. Toto rozdělení je kritickým krokem při hodnocení modelů strojového učení. Model bude trénován na datech X_train a y_train, než bude testován na datech X_test a y_test, aby se zjistilo, jak dobře funguje na neviditelných vzorcích. Funkce train_test_split odděluje trénovací a testovací sady a zajišťuje, že výkon modelu odráží jeho zobecnění na nová, dříve neviděná data.
Python3 # Split the dataset into training and testing sets X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=42)> Vytváření modelu
Zde používáme logistickou regresi k trénování modelu na trénovací datové sadě. Populární algoritmus pro binární klasifikaci, logistická regrese, je implementována třídou sci-kit-learn LogisticRegression.
Python3 # Train a logistic regression model (you can replace this with your own classifier) model = LogisticRegression() model.fit(X_train, y_train)> Predikce modelu
Tyto výpočty obvykle poskytují hodnoty přesnosti a vybavování pro různé prahové hodnoty rozhodování, které můžete použít k nakreslení křivky přesnosti-vybavení nebo ke zkoumání relativní důležitosti přesnosti a vybavování v různých okamžicích. A počítání Oblast pod křivkou (AUC) pro křivku přesnosti vyvolání.
Python3 # Predict probabilities for positive class y_scores = model.predict_proba(X_test)[:, 1] # Calculate precision and recall precision, recall, thresholds = precision_recall_curve(y_test, y_scores) # Calculate Area Under the Curve (AUC) for precision-recall curve auc_score = auc(recall, precision)> Vykreslování PR křivky
Tento blok kódu poskytuje standardní metodu pro vizualizaci křivky přesnosti-vybavení a umožňuje vyhodnotit kompromis mezi přesností a vybavováním při různých rozhodovacích prahových hodnotách. Celkový výkon modelu na křivce přesnosti-vyvolání je shrnut skórem AUC uvedeným v legendě.
Python3 # Plot precision-recall curve plt.figure(figsize=(8, 6)) plt.plot(recall, precision, label=f'Precision-Recall Curve (AUC = {auc_score:.2f})') plt.xlabel('Recall') plt.ylabel('Precision') plt.title('Precision-Recall Curve') plt.legend() plt.show()> Výstup :

Precision-Recall Curve
Často kladené otázky (FAQ)
Otázka: Co je přesnost?
Poměr přesně předpovězených pozitivních pozorování k celkovému počtu předpokládaných pozitivních se nazývá přesnost. Měří, jak dobře model předpovídá pozitivní výsledky. Následující vzorec je přesný:
Precision = frac{True Positives}{True Positives + False Positives}
Otázka: Co je to Recall?
Vyvolání je poměr správně předpovězených pozitivních pozorování k celkovému počtu skutečných pozitivních. Označuje se také jako citlivost nebo skutečně pozitivní míra. Posuzuje, jak dobře model dokáže zachytit každou relevantní instanci. Stažení se vypočítá pomocí následujícího vzorce:
Precision = frac{True Positives}{True Positives + False Negatives}
Otázka: Proč potřebujeme přesnost a zapamatování?
K posouzení výkonu klasifikátoru v problémech binární a vícetřídní klasifikace se používají dvě hodnotící metriky: přesnost a zapamatovatelnost. Přesnost pozitivní predikce se měří přesností a úplnost pozitivní predikce se měří pomocí vyvolání.
Otázka: Jaký je kompromis mezi stažením a přesností?
Odvolání a přesnost jsou často kompromisy. Vyvolání může utrpět se zvyšující se přesností a naopak. Změnou lišty pro identifikaci pozitivní instance lze tento kompromis zvládnout. Naopak nižší práh má za následek nižší zapamatovatelnost, ale vyšší přesnost. Rozhodnutí mezi odvoláním a přesností je založeno na zvláštnostech daného problému.
Java kolekce framework
Otázka: Co je skóre F1 a jak souvisí s přesností a zapamatováním?
Harmonický průměr vyvolání a přesnosti je známý jako skóre F1. Nabízí spravedlivé měření, které bere v úvahu falešně pozitivní i falešně negativní výsledky. Skóre F1 se vypočítá pomocí následujícího vzorce:
F1-Score = frac{2 imes Precision imes Recall}{Precision + Recall} Skóre F1 je zvláště užitečné, když přesnost a vyvolání nejsou v rovnováze a je požadována rovnováha mezi nimi.