Rankingový tréning. Moderné problémy vedy a vzdelávania Klasifikačné metriky kvality používané v strojovom učení

V úlohách strojového učenia sa metriky používajú na hodnotenie kvality modelov a porovnávanie rôznych algoritmov a ich výber a analýza je nevyhnutnou súčasťou práce dátového vedca.

V tomto článku sa pozrieme na niektoré kritériá kvality v problémoch s klasifikáciou, rozoberieme, čo je dôležité pri výbere metriky a čo sa môže pokaziť.

Metriky v klasifikačných problémoch

Na ukážku užitočné funkcie sklearn a vizuálnu reprezentáciu metrík, použijeme dátovú sadu zákazníkov nášho telekomunikačného operátora, s ktorou sme sa stretli v prvom článku kurzu.

Stiahnite si potrebné knižnice a pozrite si údaje

Importovať pandy ako pd import matplotlib.pyplot ako plt z matplotlib.pylab import rc, vykresliť import seaborn ako sns zo sklearn.preprocessing import LabelEncoder, OneHotEncoder zo sklearn.model_selection import cross_val_score zo sklearn.linear_model import LogisticRegression importCarningCradingClearn. zo sklearn.metrics import precision_recall_curve, klasifikačný_report zo sklearn.model_selection import train_test_split df = pd.read_csv("../../data/telecom_churn.csv")

Df.head(5)


Predspracovanie údajov

# Zmapujte binárne stĺpce # a fiktívne zakódujte štát (pre jednoduchosť je lepšie to pri drevených modeloch nerobiť) d = ("Áno" : 1, "Nie" : 0) df["Medzinárodný plán"] = df [" Medzinárodný plán"].map(d) df["Plán hlasovej pošty"] = df["Plán hlasovej pošty"].map(d) df["Churn"] = df["Churn"].astype(" int64" ) le = LabelEncoder() df["State"] = le.fit_transform(df["State"]) ohe = OneHotEncoder(sparse=False) encoded_state = ohe.fit_transform(df["State"].values.reshape (- 1, 1)) tmp = pd.DataFrame(zakódovaný_stav, stĺpce=["stav " + str(i) pre i v rozsahu(zakódovaný_stav.tvar)]) df = pd.concat(, os=1)

Presnosť, presnosť a zapamätanie

Predtým, ako prejdeme k samotným metrikám, je potrebné zaviesť dôležitý koncept na opísanie týchto metrík z hľadiska chýb klasifikácie – zmätená matica(matica chýb).
Predpokladajme, že máme dve triedy a algoritmus, ktorý predpovedá, či každý objekt patrí do jednej z tried, potom bude matica chýb klasifikácie vyzerať takto:

Skutočne pozitívne (TP) falošne pozitívny (FP)
falošne negatívny (FN) True Negative (TN)

Tu je odpoveď algoritmu na objekte a je skutočným označením triedy na tomto objekte.
Existujú teda dva typy klasifikačných chýb: falošne negatívne (FN) a falošne pozitívne (FP).

Trénovanie algoritmov a konštrukcia matice chýb

X = df.drop("Churn", axis=1) y = df["Churn"] # Rozdeľte vzorku na vlak a otestujte, všetky metriky sa vyhodnotia na testovacom súbore údajov X_train, X_test, y_train, y_test = train_test_split( X, y , stratify=y, test_size=0,33, random_state=42) # Trénujte natívnu logistickú regresiu lr = LogisticRegression(random_state=42) lr.fit(X_train, y_train) # Pomocou funkcie zostavte maticu chýb z dokumentácie sklearn def plot_confusion_matrix(cm, class , normalize=False, title="(!LANG:Confusion matrix", cmap=plt.cm.Blues): """ This function prints and plots the confusion matrix. Normalization can be applied by setting `normalize=True`. """ plt.imshow(cm, interpolation="nearest", cmap=cmap) plt.title(title) plt.colorbar() tick_marks = np.arange(len(classes)) plt.xticks(tick_marks, classes, rotation=45) plt.yticks(tick_marks, classes) if normalize: cm = cm.astype("float") / cm.sum(axis=1)[:, np.newaxis] print("Normalized confusion matrix") else: print("Confusion matrix, without normalization") print(cm) thresh = cm.max() / 2. for i, j in itertools.product(range(cm.shape), range(cm.shape)): plt.text(j, i, cm, horizontalalignment="center", color="white" if cm > thresh else "black") plt.tight_layout() plt.ylabel("True label") plt.xlabel("Predicted label") font = {"size" : 15} plt.rc("font", **font) cnf_matrix = confusion_matrix(y_test, lr.predict(X_test)) plt.figure(figsize=(10, 8)) plot_confusion_matrix(cnf_matrix, classes=["Non-churned", "Churned"], title="Matica zmätku") plt.savefig("conf_matrix.png") plt.show()!}


Presnosť

Intuitívna, zrejmá a takmer nepoužívaná metrika je presnosť - percento správnych odpovedí algoritmu:

Táto metrika je zbytočná v problémoch s nerovnakými triedami a je ľahké ju ukázať na príklade.

Povedzme, že chceme vyhodnotiť výkon filtra nevyžiadanej pošty. Máme 100 nespamových e-mailov, z ktorých 90 náš klasifikátor určil správne (pravdivý negatívny = 90, falošne pozitívny = 10) a 10 spamových e-mailov, z ktorých 5 bolo klasifikátorom tiež správne (skutočne pozitívny = 5, falošne negatívny = 5).
Potom presnosť:

Ak však predpovedáme, že všetky e-maily nie sú spam, získame vyššiu presnosť:

Náš model zároveň nemá vôbec žiadnu predikčnú schopnosť, keďže sme pôvodne chceli identifikovať spamové e-maily. Toto nám pomôže prekonať prechod od spoločnej metriky pre všetky triedy k individuálnym ukazovateľom kvality triedy.

Presnosť, odvolanie a F-meranie

Na posúdenie kvality algoritmu na každej z tried samostatne uvádzame presnosť metrík (presnosť) a vybavovanie (úplnosť).

Presnosť možno interpretovať ako podiel objektov, ktoré klasifikátor nazýva pozitívne a zároveň sú skutočne pozitívne, a vyvolanie ukazuje, aký podiel objektov pozitívnej triedy zo všetkých objektov pozitívnej triedy algoritmus našiel.

Práve zavedenie presnosti nám neumožňuje zapísať všetky objekty do jednej triedy, keďže v tomto prípade dostaneme zvýšenie úrovne False Positive. Recall demonštruje schopnosť algoritmu vôbec odhaliť danú triedu, zatiaľ čo presnosť demonštruje schopnosť odlíšiť túto triedu od iných tried.

Ako sme už uviedli, existujú dva typy klasifikačných chýb: falošne pozitívne a falošne negatívne. V štatistike sa prvý typ chyby nazýva chyba typu I a druhý typ sa nazýva chyba typu II. V našej úlohe určiť odliv predplatiteľov bude chybou prvého druhu chyba lojálneho predplatiteľa za odchádzajúceho, pretože naša nulová hypotéza je, že žiadny z predplatiteľov neodíde, a túto hypotézu zamietame. V súlade s tým bude chybou druhého druhu "prechod" odchádzajúceho účastníka a chybné prijatie nulovej hypotézy.

Presnosť a vyvolanie nezávisia, na rozdiel od presnosti, od pomeru tried, a preto sú použiteľné v podmienkach nevyvážených vzoriek.
V reálnej praxi je často úlohou nájsť optimálnu (pre zákazníka) rovnováhu medzi týmito dvoma metrikami. Klasickým príkladom je problém určovania odlivu zákazníkov.
Je jasné, že nemôžeme nájsť všetky vírenie zákazníkov a iba ich. Po určení stratégie a zdrojov na udržanie zákazníkov však môžeme vybrať potrebné prahové hodnoty pre presnosť a stiahnutie. Môžeme sa napríklad zamerať na udržanie len zákazníkov s vysokou maržou alebo tých, ktorí s väčšou pravdepodobnosťou odídu, keďže máme obmedzené zdroje call centra.

Zvyčajne pri optimalizácii hyperparametrov algoritmu (napríklad v prípade iterácie cez mriežku GridSearchCV) používa jednu metriku, ktorej zlepšenie očakávame na testovacej vzorke.
Je ich viacero rôznymi spôsobmi skombinovať presnosť a zapamätanie do súhrnného kvalitatívneho kritéria. F-measure (všeobecne) - harmonická stredná presnosť a vyvolanie:

V tomto prípade určuje váhu presnosti v metrike a zároveň harmonický priemer (s faktorom 2, takže v prípade presnosti = 1 a vyvolania = 1 majú )
F-miera dosahuje svoje maximum pri vyvolaní a presnosť rovná jednej a je blízka nule, ak je jeden z argumentov blízky nule.
sklearn má šikovnú funkciu _metrics.classification správa ktorý vráti vyvolanie, presnosť a F-meranie pre každú triedu, ako aj počet výskytov každej triedy.

Správa = klasifikácia_správa(y_test, lr.predict(X_test), target_names=["Non-churned", "Churned"]) print(report)

trieda presnosť odvolať skóre f1 podpora
Non-churned 0.88 0.97 0.93 941
Zmätený 0.60 0.25 0.35 159
priem./celkom 0.84 0.87 0.84 1100

Tu je potrebné poznamenať, že v prípade problémov s nevyváženými triedami, ktoré prevládajú v reálnej praxi, je často potrebné uchýliť sa k technikám umelých modifikácií datasetov na vyrovnanie pomeru tried. Existuje veľa z nich a nebudeme sa ich dotýkať, môžete sa pozrieť na niektoré metódy a vybrať si ten, ktorý vyhovuje vašej úlohe.

AUC-ROC a AUC-PR

Pri prevode skutočnej odozvy algoritmu (zvyčajne pravdepodobnosti príslušnosti k triede, pozri samostatne SVM) na binárne označenie musíme zvoliť nejaký prah, pri ktorom sa 0 stane 1. Prah 0,5 sa zdá prirodzený a blízky, ale je nie vždy dopadne optimálne, napríklad pri spomínanom nevyváženosti triedy.

Jedným zo spôsobov, ako vyhodnotiť model ako celok, bez toho, aby bol viazaný na konkrétny prah, je AUC-ROC (alebo ROC AUC) - plocha ( A rea U pod C urve) pod chybovou krivkou ( R prijímač O perating C charakteristická krivka). Táto krivka je čiara od (0,0) do (1,1) v súradniciach True Positive Rate (TPR) a False Positive Rate (FPR):

TPR už poznáme, to je úplnosť a FPR ukazuje, aký podiel objektov negatívnej triedy algoritmus predpovedal nesprávne. V ideálnom prípade, keď klasifikátor nerobí žiadne chyby (FPR = 0, TPR = 1), dostaneme plochu pod krivkou rovnú jednej; v opačnom prípade, keď klasifikátor náhodne vypíše pravdepodobnosti tried, AUC-ROC bude mať tendenciu k 0,5, pretože klasifikátor vydá rovnaké množstvo TP a FP.
Každý bod na grafe zodpovedá voľbe nejakého prahu. Oblasť pod krivkou v tomto prípade ukazuje kvalitu algoritmu (čím viac, tým lepšie), okrem toho je dôležitá aj samotná strmosť krivky – chceme maximalizovať TPR a zároveň minimalizovať FPR, čo znamená, že naša krivka by v ideálnom prípade mala smerovať k bod (0,1).

Kód kreslenia ROC krivky

sns.set(font_scale=1.5) sns.set_color_codes("muted") plt.figure(figsize=(10, 8)) fpr, tpr, prahy = roc_curve(y_test, lr.predict_proba(X_test)[:,1], pos_label=1) lw = 2 plt.plot(fpr, tpr, lw=lw, label="ROC krivka ") plt.plot(, ) plt.xlim() plt.ylim() plt.xlabel("Falošná pozitívna miera ") plt.ylabel("True Positive Rate") plt.title("krivka ROC") plt.savefig("ROC.png") plt.show()


Kritérium AUC-ROC je odolné voči nevyváženým triedam (spoiler: bohužiaľ, nie všetko je také jednoduché) a možno ho interpretovať ako pravdepodobnosť, že náhodne vybraný pozitívny objekt bude klasifikátorom klasifikovaný vyššie (bude mať vyššiu pravdepodobnosť, že bude pozitívny ) ako náhodne vybraný negatívny objekt .

Zvážte nasledujúci problém: z 1 milióna dokumentov potrebujeme vybrať 100 relevantných dokumentov. Strojovo sme sa naučili dva algoritmy:

  • Algoritmus 1 vráti 100 dokumentov, z ktorých 90 je relevantných. Touto cestou,
  • Algoritmus 2 vráti 2000 dokumentov, z ktorých 90 je relevantných. Touto cestou,

S najväčšou pravdepodobnosťou by sme si vybrali prvý algoritmus, ktorý produkuje veľmi málo falošných poplachov v porovnaní s jeho konkurentom. Ale rozdiel vo falošnej pozitívnej miere medzi týmito dvoma algoritmami extrémne malý - len 0,0019. Je to dôsledok skutočnosti, že AUC-ROC meria podiel falošne pozitívnych v porovnaní s pravdivo negatívnymi a pri úlohách, kde pre nás druhá (väčšia) trieda nie je taká dôležitá, nemusí pri porovnávaní algoritmov poskytnúť úplne adekvátny obraz. .

Aby sme situáciu napravili, vráťme sa k úplnosti a presnosti:

  • Algoritmus 1
  • Algoritmus 2

Medzi týmito dvoma algoritmami je už významný rozdiel - presnosť 0,855!

Na vykreslenie krivky a podobne ako pri AUC-ROC sa tiež používa presnosť a vyvolanie zobrazenia oblasti pod ňou.


Tu možno poznamenať, že na malých súboroch údajov môže byť plocha pod krivkou PR príliš optimistická, pretože sa počíta pomocou lichobežníkovej metódy, ale zvyčajne je v takýchto úlohách dostatok údajov. Podrobnosti o vzťahu medzi AUC-ROC a AUC-PR nájdete tu.

Logistická strata

Samostatná je funkcia logistických strát, definovaná ako:

tu je odpoveď algoritmu na -tom objekte, skutočné označenie triedy na -tom objekte a veľkosť vzorky.

Podrobnosti o matematickej interpretácii funkcie logistickej straty už boli napísané v príspevku o lineárnych modeloch.
Táto metrika sa často neobjavuje v obchodných požiadavkách, ale často v úlohách kaggle.
Intuitívne možno považovať minimalizáciu logloss za problém maximalizácie presnosti penalizáciou nesprávnych predpovedí. Treba však poznamenať, že logloss vážne penalizuje dôveru klasifikátora v nesprávnu odpoveď.

Zvážte príklad:

Def logloss_crutch(y_true, y_pred, eps=1e-15): return - (y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred)) print("Logloss s neurčitou klasifikáciou %f " % logloss_crutch(1, 0.5)) >> Logloss s neistou klasifikáciou 0.693147 print("Logloss s istou klasifikáciou a správnou odpoveďou %f" % logloss_crutch(1, 0.9)) >> Logloss s istou klasifikáciou a správnou odpoveďou 0.105361 print(" Logloss pre istú klasifikáciu a nesprávna odpoveď %f" % logloss_crutch(1, 0.1)) >> Logloss pre istú klasifikáciu a nesprávna odpoveď 2.302585

Všimnite si, ako dramaticky vzrástol logloss s nesprávnou odpoveďou a sebavedomou klasifikáciou!
Preto chyba na jednom objekte môže viesť k výraznému zhoršeniu bežná chyba na vzorke. Takéto objekty sú často odľahlé hodnoty, ktoré je potrebné filtrovať alebo posudzovať oddelene.
Všetko zapadne na svoje miesto, ak nakreslíte graf straty záznamu:


Je vidieť, že čím bližšie k nule je odpoveď algoritmu pre základnú pravdu = 1, tým vyššia je hodnota chyby a tým strmšie krivka rastie.

Zhrnúť:

  • V prípade viactriednej klasifikácie musíte starostlivo sledovať metriky každej z tried a riadiť sa logikou riešenia úlohy namiesto optimalizácie metriky
  • V prípade nerovnakých tried je potrebné zvoliť vyváženosť tried pre tréning a metriku, ktorá bude správne odrážať kvalitu klasifikácie
  • mephistopheies a madrugado za pomoc pri príprave článku.

Čau Habr!

V úlohách strojového učenia sa metriky používajú na hodnotenie kvality modelov a porovnávanie rôznych algoritmov a ich výber a analýza je nevyhnutnou súčasťou práce dátového vedca.

V tomto článku sa pozrieme na niektoré kritériá kvality v problémoch s klasifikáciou, rozoberieme, čo je dôležité pri výbere metriky a čo sa môže pokaziť.

Metriky v klasifikačných problémoch

Na demonštráciu užitočných funkcií sklearn a vizuálnu reprezentáciu metrík, použijeme dátovú sadu zákazníkov nášho telekomunikačného operátora, s ktorou sme sa stretli v prvom článku kurzu.

Stiahnite si potrebné knižnice a pozrite si údaje

Importovať pandy ako pd import matplotlib.pyplot ako plt z matplotlib.pylab import rc, vykresliť import seaborn ako sns zo sklearn.preprocessing import LabelEncoder, OneHotEncoder zo sklearn.model_selection import cross_val_score zo sklearn.linear_model import LogisticRegression importCarningCradingClearn. zo sklearn.metrics import precision_recall_curve, klasifikačný_report zo sklearn.model_selection import train_test_split df = pd.read_csv("../../data/telecom_churn.csv")

Df.head(5)

Predspracovanie údajov

# Zmapujte binárne stĺpce # a fiktívne zakódujte štát (pre jednoduchosť je lepšie to pri drevených modeloch nerobiť) d = ("Áno" : 1, "Nie" : 0) df["Medzinárodný plán"] = df [" Medzinárodný plán"].map(d) df["Plán hlasovej pošty"] = df["Plán hlasovej pošty"].map(d) df["Churn"] = df["Churn"].astype(" int64" ) le = LabelEncoder() df["State"] = le.fit_transform(df["State"]) ohe = OneHotEncoder(sparse=False) encoded_state = ohe.fit_transform(df["State"].values.reshape (- 1, 1)) tmp = pd.DataFrame(zakódovaný_stav, stĺpce=["stav " + str(i) pre i v rozsahu(zakódovaný_stav.tvar)]) df = pd.concat(, os=1)

Presnosť, presnosť a zapamätanie

Predtým, ako prejdeme k samotným metrikám, je potrebné zaviesť dôležitý koncept na opísanie týchto metrík z hľadiska chýb klasifikácie – zmätená matica(matica chýb).
Predpokladajme, že máme dve triedy a algoritmus, ktorý predpovedá, či každý objekt patrí do jednej z tried, potom bude matica chýb klasifikácie vyzerať takto:

Skutočne pozitívne (TP) falošne pozitívny (FP)
falošne negatívny (FN) True Negative (TN)

je odozva algoritmu na objekt a

Skutočné označenie triedy na tomto objekte.
Existujú teda dva typy klasifikačných chýb: falošne negatívne (FN) a falošne pozitívne (FP).

Trénovanie algoritmov a konštrukcia matice chýb

X = df.drop("Churn", axis=1) y = df["Churn"] # Rozdeľte vzorku na vlak a otestujte, všetky metriky sa vyhodnotia na testovacom súbore údajov X_train, X_test, y_train, y_test = train_test_split( X, y , stratify=y, test_size=0,33, random_state=42) # Trénujte natívnu logistickú regresiu lr = LogisticRegression(random_state=42) lr.fit(X_train, y_train) # Pomocou funkcie zostavte maticu chýb z dokumentácie sklearn def plot_confusion_matrix(cm, class , normalize=False, title="(!LANG:Confusion matrix", cmap=plt.cm.Blues): """ This function prints and plots the confusion matrix. Normalization can be applied by setting `normalize=True`. """ plt.imshow(cm, interpolation="nearest", cmap=cmap) plt.title(title) plt.colorbar() tick_marks = np.arange(len(classes)) plt.xticks(tick_marks, classes, rotation=45) plt.yticks(tick_marks, classes) if normalize: cm = cm.astype("float") / cm.sum(axis=1)[:, np.newaxis] print("Normalized confusion matrix") else: print("Confusion matrix, without normalization") print(cm) thresh = cm.max() / 2. for i, j in itertools.product(range(cm.shape), range(cm.shape)): plt.text(j, i, cm, horizontalalignment="center", color="white" if cm > thresh else "black") plt.tight_layout() plt.ylabel("True label") plt.xlabel("Predicted label") font = {"size" : 15} plt.rc("font", **font) cnf_matrix = confusion_matrix(y_test, lr.predict(X_test)) plt.figure(figsize=(10, 8)) plot_confusion_matrix(cnf_matrix, classes=["Non-churned", "Churned"], title="Matica zmätku") plt.savefig("conf_matrix.png") plt.show()!}

Presnosť

Intuitívna, zrejmá a takmer nepoužívaná metrika je presnosť - percento správnych odpovedí algoritmu:

Táto metrika je zbytočná v problémoch s nerovnakými triedami a je ľahké ju ukázať na príklade.

Povedzme, že chceme vyhodnotiť výkon filtra nevyžiadanej pošty. Máme 100 nespamových e-mailov, z ktorých 90 náš klasifikátor určil správne (pravdivý negatívny = 90, falošne pozitívny = 10) a 10 spamových e-mailov, z ktorých 5 bolo klasifikátorom tiež správne (skutočne pozitívny = 5, falošne negatívny = 5).
Potom presnosť:

Ak však predpovedáme, že všetky e-maily nie sú spam, získame vyššiu presnosť:

Náš model zároveň nemá vôbec žiadnu predikčnú schopnosť, keďže sme pôvodne chceli identifikovať spamové e-maily. Toto nám pomôže prekonať prechod od spoločnej metriky pre všetky triedy k individuálnym ukazovateľom kvality triedy.

Presnosť, odvolanie a F-meranie

Na posúdenie kvality algoritmu na každej triede samostatne uvádzame presnosť (presnosť) a vybavovanie (úplnosť) metrík.

Presnosť možno interpretovať ako podiel objektov, ktoré klasifikátor nazýva pozitívne a zároveň sú skutočne pozitívne, a vyvolanie ukazuje, aký podiel objektov pozitívnej triedy zo všetkých objektov pozitívnej triedy algoritmus našiel.

Práve zavedenie presnosti nám neumožňuje zapísať všetky objekty do jednej triedy, keďže v tomto prípade dostaneme zvýšenie úrovne False Positive. Recall demonštruje schopnosť algoritmu vôbec odhaliť danú triedu, zatiaľ čo presnosť demonštruje schopnosť odlíšiť túto triedu od iných tried.

Ako sme už uviedli, existujú dva typy klasifikačných chýb: falošne pozitívne a falošne negatívne. V štatistike sa prvý typ chyby nazýva chyba typu I a druhý typ sa nazýva chyba typu II. V našom probléme určovania odlivu predplatiteľov bude chybou prvého druhu chyba lojálneho predplatiteľa za odchádzajúceho, keďže naša nulová hypotéza je, že žiaden z predplatiteľov neodchádza a túto hypotézu zamietame. V súlade s tým bude chybou druhého druhu "prechod" odchádzajúceho účastníka a chybné prijatie nulovej hypotézy.

Presnosť a vyvolanie nezávisia, na rozdiel od presnosti, od pomeru tried, a preto sú použiteľné v podmienkach nevyvážených vzoriek.
V reálnej praxi je často úlohou nájsť optimálnu (pre zákazníka) rovnováhu medzi týmito dvoma metrikami. Klasickým príkladom je problém určovania odlivu zákazníkov.
Je jasné, že nemôžeme nájsť všetky vírenie zákazníkov a iba ich. Po určení stratégie a zdrojov na udržanie zákazníkov však môžeme vybrať potrebné prahové hodnoty pre presnosť a stiahnutie. Môžeme sa napríklad zamerať na udržanie len zákazníkov s vysokou maržou alebo tých, ktorí s väčšou pravdepodobnosťou odchádzajú, keďže sme limitovaní zdrojmi call centra.

Zvyčajne pri optimalizácii hyperparametrov algoritmu (napríklad v prípade iterácie cez mriežku GridSearchCV) používa jednu metriku, ktorej zlepšenie očakávame na testovacej vzorke.
Existuje niekoľko rôznych spôsobov, ako skombinovať presnosť a zapamätanie do súhrnnej miery kvality. F-miera (všeobecne

) - priemerná harmonická presnosť a vybavovanie:

v tomto prípade určuje váhu presnosti v metrike a kedy

toto je harmonický priemer (s faktorom 2, takže v prípade presnosti = 1 a vyvolania = 1 máme

)
F-miera dosahuje svoje maximum pri vyvolaní a presnosť rovná jednej a je blízka nule, ak je jeden z argumentov blízky nule.
sklearn má šikovnú funkciu _metrics.classification správa ktorý vráti vyvolanie, presnosť a F-meranie pre každú triedu, ako aj počet výskytov každej triedy.

Správa = klasifikácia_správa(y_test, lr.predict(X_test), target_names=["Non-churned", "Churned"]) print(report)

trieda presnosť odvolať skóre f1 podpora
Non-churned 0.88 0.97 0.93 941
Zmätený 0.60 0.25 0.35 159
priem./celkom 0.84 0.87 0.84 1100

Tu je potrebné poznamenať, že v prípade problémov s nevyváženými triedami, ktoré prevládajú v reálnej praxi, je často potrebné uchýliť sa k technikám umelých modifikácií datasetov na vyrovnanie pomeru tried. Je ich veľa a nebudeme sa ich dotýkať, môžete sa pozrieť na niektoré metódy a vybrať si tú, ktorá vyhovuje vašej úlohe.

AUC-ROC a AUC-PR

Pri prevode skutočnej odozvy algoritmu (zvyčajne pravdepodobnosti príslušnosti k triede, pozri samostatne SVM) na binárne označenie musíme zvoliť nejaký prah, pri ktorom sa 0 stane 1. Prah 0,5 sa zdá prirodzený a blízky, ale je nie vždy dopadne optimálne, napríklad pri spomínanom nevyváženosti triedy.

Jedným zo spôsobov, ako vyhodnotiť model ako celok, bez toho, aby bol viazaný na konkrétny prah, je AUC-ROC (alebo ROC AUC) - plocha ( A rea U pod C urve) pod chybovou krivkou ( R prijímač O perating C charakteristická krivka). Táto krivka je čiara od (0,0) do (1,1) v súradniciach True Positive Rate (TPR) a False Positive Rate (FPR):

TPR už poznáme, to je úplnosť a FPR ukazuje, aký podiel objektov negatívnej triedy algoritmus predpovedal nesprávne. V ideálnom prípade, keď klasifikátor nerobí žiadne chyby (FPR = 0, TPR = 1), dostaneme plochu pod krivkou rovnú jednej, inak, keď klasifikátor náhodne vytvorí pravdepodobnosti tried, AUC-ROC bude mať tendenciu 0,5, keďže klasifikátor vydá rovnaké množstvo TP a FP.
Každý bod na grafe zodpovedá voľbe nejakého prahu. Oblasť pod krivkou v tomto prípade ukazuje kvalitu algoritmu (čím viac, tým lepšie), okrem toho je dôležitá aj samotná strmosť krivky – chceme maximalizovať TPR a zároveň minimalizovať FPR, čo znamená, že naša krivka by v ideálnom prípade mala smerovať k bod (0,1).

Kód kreslenia ROC krivky

sns.set(font_scale=1.5) sns.set_color_codes("muted") plt.figure(figsize=(10, 8)) fpr, tpr, prahy = roc_curve(y_test, lr.predict_proba(X_test)[:,1], pos_label=1) lw = 2 plt.plot(fpr, tpr, lw=lw, label="ROC krivka ") plt.plot(, ) plt.xlim() plt.ylim() plt.xlabel("Falošná pozitívna miera ") plt.ylabel("True Positive Rate") plt.title("krivka ROC") plt.savefig("ROC.png") plt.show()

Kritérium AUC-ROC je odolné voči nevyváženým triedam (spoiler: bohužiaľ, nie všetko je také jednoduché) a možno ho interpretovať ako pravdepodobnosť, že náhodne vybraný pozitívny objekt bude klasifikátorom zaradený vyššie (bude mať vyššiu pravdepodobnosť, že bude pozitívny) než náhodne vybraný negatív objekt.

Zvážte nasledujúci problém: z 1 milióna dokumentov potrebujeme vybrať 100 relevantných dokumentov. Strojovo sme sa naučili dva algoritmy:

  • Algoritmus 1 vráti 100 dokumentov, z ktorých 90 je relevantných. Touto cestou,
  • Algoritmus 2 vráti 2000 dokumentov, z ktorých 90 je relevantných. Touto cestou,

S najväčšou pravdepodobnosťou by sme si vybrali prvý algoritmus, ktorý produkuje veľmi málo falošných poplachov v porovnaní s jeho konkurentom. Ale rozdiel vo falošnej pozitívnej miere medzi týmito dvoma algoritmami extrémne malý - len 0,0019. Je to dôsledok skutočnosti, že AUC-ROC meria podiel falošne pozitívnych v porovnaní s pravdivo negatívnymi a pri úlohách, kde pre nás druhá (väčšia) trieda nie je taká dôležitá, nemusí pri porovnávaní algoritmov poskytnúť úplne adekvátny obraz. .

Aby sme situáciu napravili, vráťme sa k úplnosti a presnosti:

  • Algoritmus 1
  • Algoritmus 2

Medzi týmito dvoma algoritmami je už významný rozdiel - presnosť 0,855!

Na vykreslenie krivky a podobne ako pri AUC-ROC sa tiež používa presnosť a vyvolanie zobrazenia oblasti pod ňou.

Tu možno poznamenať, že na malých súboroch údajov môže byť plocha pod krivkou PR príliš optimistická, pretože sa počíta pomocou lichobežníkovej metódy, ale zvyčajne je v takýchto úlohách dostatok údajov. Podrobnosti o vzťahu medzi AUC-ROC a AUC-PR nájdete tu.

Logistická strata

Samostatná je funkcia logistických strát, definovaná ako:

je odpoveďou algoritmu

ohm objekt,

skutočný štítok triedy na

ohm objekt a

veľkosť vzorky.

Podrobnosti o matematickej interpretácii funkcie logistickej straty už boli napísané v príspevku o lineárnych modeloch.
Táto metrika sa často neobjavuje v obchodných požiadavkách, ale často v úlohách kaggle.
Intuitívne možno považovať minimalizáciu logloss za problém maximalizácie presnosti penalizáciou nesprávnych predpovedí. Treba však poznamenať, že logloss vážne penalizuje dôveru klasifikátora v nesprávnu odpoveď.

Zvážte príklad:

Def logloss_crutch(y_true, y_pred, eps=1e-15): return - (y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred)) print("Logloss s neurčitou klasifikáciou %f " % logloss_crutch(1, 0.5)) >> Logloss s neistou klasifikáciou 0.693147 print("Logloss s istou klasifikáciou a správnou odpoveďou %f" % logloss_crutch(1, 0.9)) >> Logloss s istou klasifikáciou a správnou odpoveďou 0.105361 print(" Logloss pre istú klasifikáciu a nesprávna odpoveď %f" % logloss_crutch(1, 0.1)) >> Logloss pre istú klasifikáciu a nesprávna odpoveď 2.302585

Všimnite si, ako dramaticky vzrástol logloss s nesprávnou odpoveďou a sebavedomou klasifikáciou!
Preto chyba na jednom objekte môže spôsobiť výrazné zhoršenie celkovej chyby na vzorke. Takéto objekty sú často odľahlé hodnoty, ktoré je potrebné filtrovať alebo posudzovať oddelene.
Všetko zapadne na svoje miesto, ak nakreslíte graf straty záznamu:

Je vidieť, že čím bližšie k nule je odpoveď algoritmu pre základnú pravdu = 1, tým vyššia je hodnota chyby a tým strmšie krivka rastie.

Zhrnutie:

  • V prípade viactriednej klasifikácie musíte starostlivo sledovať metriky každej z tried a riadiť sa logikou riešenia úlohy namiesto optimalizácie metriky
  • V prípade nerovnakých tried je potrebné zvoliť vyváženosť tried pre tréning a metriku, ktorá bude správne odrážať kvalitu klasifikácie
  • Výber metriky by sa mal robiť so zameraním na predmet, predbežné spracovanie údajov a prípadne segmentáciu (ako v prípade rozdelenia na bohatých a chudobných zákazníkov)

užitočné odkazy

  1. Kurz Evgeny Sokolov: Seminár o výbere modelov (sú informácie o metrikách regresných problémov)
  2. Problémy pre AUC-ROC od A.G. Dyakonova
  3. Viac o ďalších metrikách si môžete prečítať na kaggle. Do popisu každej metriky bol pridaný odkaz na súťaž, kde bola použitá
  4. Prezentácia Bogdana Melnyka aka ld86 o učení sa na nevyvážených vzorkách
1

V posledných rokoch sa rekonštrukcii obrazu venuje veľká pozornosť, preto je hodnotenie kvality dôležitou úlohou pri porovnávaní. rôzne metódy obnovenie obrazu. V mnohých prípadoch rekonštrukčné techniky vedú k rozmazaniu textúry a štruktúry pri rekonštrukcii veľkých plôch so skreslenými hodnotami pixelov. V súčasnosti neexistuje objektívne kvantitatívne hodnotenie výsledkov reštaurovania, a preto sa v mnohých prístupoch používa odborné posúdenie. Tento článok pojednáva nový prístup posudzovanie kvality obnovy obrazu na základe strojového učenia pomocou modelu ľudského videnia, ktoré spočíva v tom, že lokálne oblasti obrazov môžu byť reprezentované deskriptormi vo forme nejakých parametrických rozdelení. Ďalej, regresný podporný vektorový stroj umožňuje predpovedať vnímanú kvalitu rekonštruovaných obrazov podľa odborného posúdenia. Článok demonštruje, že skóre kvality získané použitím vyššie uvedeného prístupu koreluje so subjektívnym skóre kvality.

strojové učenie

vizuálna kvalita

rekonštrukcia

spracovanie obrazu

1. Gastaldo P. Riešenia strojového učenia pre objektívne hodnotenie vizuálnej kvality / 6. medzinárodný workshop o spracovaní videa a metrikách kvality pre spotrebnú elektroniku, VPQM. - Vol. 12. - 2012.

2. Bertalmio M., Bertozzi A., Sapiro G. Navier-Stokes, Fluid dynamics, and image and video inpainting/ Hawaii: Proc. IEEE počítačové videnie a rozpoznávanie vzorov (CVPR). - 2001.-PP. 213–226.

3. Criminisi A., Perez P., Toyama K. Vyplňovanie oblasti a odstraňovanie objektov pomocou vzorového maľovania obrazu / IEEE Trans. spracovanie obrazu. - 13(9) . - 2004. - PP. 28-34.

4. Vijay M., Cheung, S.S. Analýza kvality percepčného obrazového inpaintingu založená na sledovaní očí/spracovanie obrazu (ICIP), 17. medzinárodná konferencia IEEE o IEEE. - 2010. - PP. 1109 - 1112.

5. Ardis P.A., Singhal A. Visual salience metrics for image inpainting / SPIE Electronic Imaging. Medzinárodná spoločnosť pre optiku a fotoniku. - 2009.

6. Cheung S.S., Zhao J., Venkatesh V. Efficient object-based video inpainting / Image Processing, 2006 IEEE International Conference on. - 2006. - PP. 705-708.

7. Peretyagin G.I. Reprezentácia obrázkov pomocou Gaussových náhodných polí / Autometria. - Číslo 6. - 1984. - S. 42 - 48.

8. Frantc V.A., Voroni V.V., Marchuk V.I., Sherstobitov A.I., Agaian S., Egiazarian K. Prístup strojového učenia pre objektívne hodnotenie kvality inpaintingu/ Proc. SPIE 9120, mobilné multimédiá/spracovanie obrazu, bezpečnosť a aplikácie. – sv. 91200S. – 2014.

9. Paul A., Singhal A. a. Brown C. Hodnotenie kvality maľby / Journal of Electronic Imaging. – sv. 19. - 2010. - PP. 011002-011002.

Objektívna metrika kvality obrazu je dôležitou súčasťou systémov spracovania obrazu. Jednou z dôležitých aplikácií objektívnych metrík hodnotenia kvality obrazu je hodnotenie výkonnosti algoritmov a systémov spracovania obrazu. Napriek veľkému počtu publikácií na túto tému sa problémom hodnotenia kvality rekonštruovaných snímok zaoberá len málokto. Zároveň sa v poslednej dobe venuje značná pozornosť problému obnovy stratených oblastí obrazu.

Existujú dva prístupy k hodnoteniu kvality obrazu: kvantifikácia pomocou matematické metódy(stredná štvorcová chyba, Lp-norma, opatrenia, ktoré zohľadňujú charakteristiky vnímania obrazu ľudským zrakovým systémom) a subjektívne hodnotenie na základe odborných posudkov.

Hodnotenie kvality získané pomocou existujúcich prístupov sa môže výrazne líšiť od hodnotenia získaného pomocou ľudských expertov. Väčšina existujúcich prístupov na hodnotenie kvality používa referenčný obrázok. Ale, bohužiaľ, v mnohých prípadoch referenčný obrázok nie je k dispozícii. Tieto úlohy zahŕňajú problém rekonštrukcie stratených pixelov. Preto je dôležitá úloha vyvinúť kvantitatívnu metriku na hodnotenie kvality rekonštruovaných obrazov.

Významný pokrok sa dosiahol vo vývoji kvantitatívnych hodnotení kvality obrazu. Zavedené kritériá však nie sú dostatočne dokonalé. Väčšina pokusov nájsť prijateľné odhady kvality obrazu sa týka špeciálnych prípadov. Navrhuje sa určité posúdenie na základe niektorých fyziologických predpokladov a častejšie len vhodné na analýzu a výpočty a potom sa vyhodnotia jeho vlastnosti. Vytváranie lepších hodnotení kvality obrazu je spojené s hlbším štúdiom vlastností ľudského zrakového systému.

Účel tejto práce je vývoj metriky na hodnotenie kvality obrázkov pri spracovaní rekonštrukčnými metódami založenými na strojovom učení.

Matematický model

V článku sa používa notácia podobná notácii prijatej v práci. Celý obraz pozostáva z dvoch neprekrývajúcich sa oblastí: rekonštruovanej oblasti a známej oblasti. Obrázok 1 ukazuje príklad umiestnenia týchto oblastí.

Obr. 1. Obrazový model

Obraz a oblasť Ω v ňom sú známe. Úlohou rekonštrukcie je upraviť hodnoty pixelov obrázka vo vnútri oblasti Ω tak, aby oblasť nevyčnievala na pozadí okolitého obrázka. Účelom rekonštrukcie môže byť oprava poškodených častí obrazu (ako sú škrabance a praskliny na starých fotografiách) alebo odstránenie nežiaducich predmetov na obrázku. Oblasť Ω znázornená na obrázku 1 je vždy definovaná používateľom, t.j. definícia domény Ω nie je súčasťou problému rekonštrukcie.

Algoritmus na hodnotenie kvality obnovy obrazu

Vo všeobecnosti sú na úspešné vytvorenie metriky kvality obrazu založené na strojovom učení potrebné tieto tri úlohy:

1. Určenie priestoru znakov, ktoré slúžia ako popis vstupných signálov.

2. Výber funkcie mapovania z priestoru znakov do priestoru hodnotenia kvality.

3. Školenie systému a kontrola jeho stability (kontrola preškolenia a pod.).

Bloková schéma zvoleného prístupu je znázornená na obrázku 2 a obsahuje nasledujúce kroky:

1. Výber oblasti záujmu (pomocou mapy pozornosti);

2. Výpočet nízkoúrovňových vlastností obrazu;

3. Vytvorenie deskriptora obnovenej oblasti na základe prvkov nízkej úrovne;

4. Riešenie regresnej úlohy s cieľom získať numerický odhad kvality na základe získaného vektora deskriptora.

Ryža. 2. Bloková schéma algoritmu

Práca ukazuje, že vizuálna pozornosť hrá dôležitú úlohu v ľudskom vizuálnom vnímaní. V každom okamihu ľudské oko jasne vidí iba malú časť scény, zatiaľ čo oveľa väčšia oblasť scény je vnímaná ako „rozmazaná“. Tieto „fuzzy informácie“ stačia na posúdenie dôležitosti rôznych oblastí scény a upriamenie pozornosti na dôležité oblasti zorného poľa. Väčšina metód vám umožňuje získať mapu pozornosti - dvojrozmerný obrázok, v ktorom je hodnota každého pixelu spojená s dôležitosťou zodpovedajúcej oblasti.

Na získanie máp pozornosti sa používa Saliency Toolbox, popísaný v . Táto sada nástrojov využíva model ľudského zrakového systému. Je dôležité poznamenať, že nemá zmysel porovnávať obnovenú oblasť na pôvodnom a obnovenom obrázku, pretože celkový obsah sa môže výrazne zmeniť. Na výber oblastí záujmu sa navrhuje použiť tento výraz:

.

Tu je mapa pozornosti pre rekonštruovaný obrázok a hodnota mapy pozornosti zodpovedajúca pixelu . Vo vyššie uvedenom výraze je hustota pohľadu vypočítaná vo vnútri a mimo rekonštruovanej oblasti obrazu. Hodnota sa používa ako prahová hodnota pri rozhodovaní o tom, ktoré časti obrázka sa použijú pri hodnotení a ktoré nie. Iba oblasti, pre ktoré .

Spektrálne zobrazenia sa používajú ako nízkoúrovňové vlastnosti miestnych oblastí. Ďalej navrhujeme analýzu nasledujúcich Fourierových, Walshových a Haarových báz pomocou vektora účinnosti. Pre správny výpočet komponentov kritéria účinnosti systému v prítomnosti rušenia a skreslenia je potrebné štatistické spriemerovanie.

Pri syntéze algoritmov a systémov spracovania signálov sa najčastejšie používa kritérium minimálneho priemerného rizika, čo umožňuje zohľadniť štatistiku rušenia a signálov. Pri realizácii frekvenčných transformácií a odhadovaní výpočtových nákladov je zásadný výber základu spektrálneho rozkladu. Na optimalizáciu výberu základu rozkladu signálu sa odporúča použiť kritérium minimálneho priemerného rizika. Na to je potrebné, aby bola uvedená trieda použitých signálov a procesov a boli známe ich pravdepodobnostné charakteristiky.

Pre danú triedu dvojrozmerných procesov sa predpokladá, že pravdepodobnosť každej z podtried je známa, pričom index je číslo podtriedy s niektorými spoločnými vlastnosťami a je číslo implementácie procesu i-tej podtriedy. Porovnáme určitý súbor základných systémov Rozšírenie do zovšeobecneného Fourierovho radu vzhľadom na i-tý základný systém v všeobecný pohľad vyzerá ako: .

Pri konečnom počte členov Fourierovho radu ho možno charakterizovať chybou: , kde je vzdialenosť v nejakej metrike, je čiastočný súčet členov Fourierovho radu.

Hardvérové ​​určenie koeficientov Fourierovho radu alebo ich výpočet je spojený s určitými výpočtovými nákladmi. Predstavujeme stratovú funkciu, ktorá zohľadňuje straty spojené s chybou skrátenia Fourierovho radu a náklady na hardvér a výpočtové zdroje:

.

Hodnota podmieneného rizika závisí od podtriedy signálu aj od základu a vypočítava sa spriemerovaním stratovej funkcie počas implementácií:

kde je hustota pravdepodobnosti analyzovaných signálov a šumu; a lomené zátvorky označujú operáciu štatistického spriemerovania.

Priemerné riziko sa určuje spriemerovaním podmieneného rizika pre podtriedy signálov:

,

kde je pravdepodobnosť tej podtriedy signálov.

V súlade s kritériom minimálneho priemerného rizika sa z báz vyberie základ, pre ktorý je priemerné riziko minimálne.

Pre vyhodnotenie efektívnosti systémového kritéria kvality spracovania obrazu uvažujeme testovacie snímky vo forme textúr získaných na základe modelovania gaussovských polí s danými korelačnými funkciami. Generovanie homogénnych normálnych náhodných polí, ako aj stacionárnych normálnych náhodných procesov, sa najjednoduchšie vykonáva metódou tvarovacieho filtra.

Ako príklad článok uvažuje o reprezentácii náhodných realizácií s rôznymi korelačnými funkciami v bázach goniometrických funkcií (Fourier), Walsh a Haar. Urobme analýzu vo vybraných základoch pre vytvorené obrazové modely s veľkosťou 256 x 256 pixelov. Tiež sme si stanovili tri typy rozdelenia pravdepodobnosti podtried: 1) rovnomerné: ; 2) znižovanie: ;
3) zvýšenie: . Vyberáme nákladovú funkciu v tvare: .

Priemerné riziko sa určuje spriemerovaním podmieneného rizika pre podtriedy signálov pomocou akceptovaných a priori pravdepodobností podtried signálov, vypočítané hodnoty sú uvedené v tabuľke 1.

stôl 1

Priemerné rizikové hodnoty

Typy rozdelenia pravdepodobnosti

Výsledky výpočtu uvedené v tabuľke ukazujú, že pre akceptované modely dvojrozmerných signálov a ich rozdelenia pravdepodobnosti má Haarova báza najnižšie priemerné riziko a Fourierova báza najvyššie.

Na základe vykonanej analýzy vyberáme Haarov základ pre reprezentáciu miestnych oblastí obrázkov. Treba si uvedomiť, že veľkosť rekonštruovanej plochy je pri rôznych obrázkoch rôzna. V tomto ohľade by sa na základe nízkoúrovňových funkcií mala vytvoriť reprezentácia na vysokej úrovni s pevnou veľkosťou. Ako reprezentácia na vysokej úrovni sa používa prístup „vrecka slov“. Postup konštrukcie deskriptora (podpisu) rekonštruovaného územia pozostáva z dvoch krokov. Prvým krokom je vytvorenie slovníka. Na tento účel sa používajú nízkoúrovňové funkcie extrahované zo všetkých obrázkov trénovacej sady obrázkov. Na vytvorenie slovníka sú extrahované funkcie rozdelené do 100 tried pomocou k-means zhlukového algoritmu. Každý prvok slovníka je ťažiskom pre jednu z tried nájdených postupom zhlukovania. Každé slovo v slovníku predstavuje Haarovu transformáciu v bloku obrázka 8x8. Výsledný slovník sa použije v druhej fáze pri konštrukcii frekvenčných histogramov pre slová zo slovníka ako znakový vektor - deskriptor rekonštruovanej oblasti (obr. 3). Výsledný súbor deskriptorov sa používa na trénovanie regresného stroja (Support Vector Regression). Na získanie histogramu frekvencií slov sa zo slovníka extrahujú všetky vizuálne viditeľné oblasti (viditeľnosť sa určuje pomocou máp pozornosti) konkrétneho obrázka. Potom sa na každý z extrahovaných blokov aplikuje Haarova transformácia a vykoná sa klasifikácia podľa výsledného slovníka na základe euklidovskej vzdialenosti.

Každý zásobník výsledného histogramu obsahuje počet nízkoúrovňových prvkov konkrétnej triedy v danej rekonštruovanej oblasti. Po normalizácii histogramu sa získa „podpis“ snímky – reprezentácia rekonštruovanej oblasti na vysokej úrovni.

Obr.3. Vytvorenie histogramu

Odhad účinnosti algoritmu na hodnotenie kvality obnovy obrazu

Na vyhodnotenie účinnosti vyvinutej metriky sa použil súbor testovacích obrázkov. Sada obsahuje 300 obrázkov. Ako metódy obnovy boli zvolené tieto prístupy: metóda založená na hľadaní sebepodobných oblastí, metóda založená na spektrálnych transformáciách, metóda založená na výpočte parciálnych derivácií. Pre každý obrázok bol získaný odborný posudok, na ktorom sa podieľalo 30 ľudí. Výsledky boli rozdelené do dvoch neprekrývajúcich sa súborov. Prvý bol použitý na tréning a druhý na kontrolu výsledku.

Odborníci hodnotili kvalitu na škále, v ktorej 5 zodpovedá „výborne“ a 1 zodpovedá „veľmi zle“. Na vyhodnotenie efektívnosti získaných metrík sa používa korelačný koeficient medzi vektormi získanými pomocou objektívnych metrík a expertnou metódou hodnotenia kvality. Analýza výsledkov v tabuľke 2 ukazuje, že navrhovaný prístup prevyšuje známe ukazovatele kvality na vybranom súbore testovacích údajov.

tabuľka 2

Korelačný koeficient pre rôzne metódy výpočtu cieľa
metriky kvality obrazu

Navrhovaný prístup

Záver

Článok predstavuje objektívnu metriku na hodnotenie kvality obrazu na základe strojového učenia. Kvantitatívne merania kvality obrazu sú nevyhnutné pre návrh a hodnotenie systémov reprodukcie obrazu. Tieto opatrenia do značnej miery pomôžu zbaviť sa pracných a nepresných moderných metód hodnotenia snímok prostredníctvom subjektívneho vyšetrenia. Okrem toho je možné na základe kvantitatívnych opatrení vyvinúť metódy na optimalizáciu systémov spracovania obrazu. Ukazuje sa, že skóre kvality získané pomocou vyššie uvedeného prístupu koreluje so subjektívnym skóre kvality.

Práca bola podporená Ministerstvom školstva a vedy Ruska v rámci Federálneho cieľového programu „Výskum a vývoj v prioritných oblastiach rozvoja vedecko-technického komplexu Ruska na roky 2014-2020“ (dohoda č. 14.586.21.0013 ).

Recenzenti:

Fedosov V.P., doktor technických vied, profesor, vedúci katedry TOP Technickej a technologickej akadémie Južnej federálnej univerzity v Rostove na Done;

Marchuk V.I., doktor technických vied, profesor, vedúci Katedry rádioelektronických a elektrických systémov a komplexov, ISOiP (pobočka DSTU), Shakhty.

Bibliografický odkaz

Voronin V.V. HODNOTENIE KVALITY OBNOVY OBRAZU NA ZÁKLADE STROJOVÉHO UČENIA // Súčasné problémy veda a vzdelanie. - 2014. - č. 6.;
URL: http://science-education.ru/ru/article/view?id=16294 (dátum prístupu: 01.02.2020). Dávame do pozornosti časopisy vydávané vydavateľstvom "Academy of Natural History"

V praxi systémového analytika, ktorý zostavuje FRD, sa často vyskytujú veci, ktoré nie sú formalizované. Príkladom môžu byť požiadavky ako:

  • Aplikácia musí byť rýchla
  • Aplikácia by mala spotrebovať malú návštevnosť
  • Video materiál musí byť vysokej kvality.

Takéto požiadavky, napísané „tak, ako sú“ vo FRD, sú neskôr obrovským zdrojom problémov. Formalizácia takýchto požiadaviek je pre analytika neustála bolesť hlavy. Analytik zvyčajne rieši problém v dvoch fázach: najprv sa predloží „ekvivalentná“ formálna požiadavka, potom sa v procese komunikácie (so zákazníkom, doménovým expertom atď.) preukáže, že takáto formálna požiadavka môže nahradiť pôvodnú požiadavku. Všeobecne povedané, požiadavka, ktorú sme dostali, nie je funkčná; nepopisuje „čo“ by mal systém dokázať, ale „ako to urobiť“. Zároveň by malo byť „ako robiť“ formulované so špecifickou kvalitatívnou charakteristikou.

Toto bola preambula tézy, že Analytik systémov musí dobre ovládať matematický aparát a zároveň vedieť „matematiku“ zákazníkovi vysvetliť. Teraz sa pozrime na príklad.

O probléme klasifikácie

Povedzme, že píšeme FRD pre systém kontextovej reklamy podobný Amazon Omakase. Jedným z modulov nášho budúceho systému bude kontextový analyzátor:

Analyzátor vezme text webovej stránky ako vstup a vykoná jej kontextovú analýzu. Spôsob, akým to robí, nás málo zaujíma; dôležité je, aby sme na výstupe dostali množinu kategórií produktov (ktorých množina je vopred určená). Ďalej na základe týchto kategórií môžeme zobrazovať bannery, odkazy na produkty (ako Amazon) atď. Analyzátor je pre nás stále čierna skrinka, na ktorú môžeme položiť otázku (vo forme textu dokumentu) a dostať odpoveď.

Zákazník chce, aby analyzátor „dobre určil kontext“. Musíme formulovať, čo táto požiadavka znamená. Najprv si povedzme o kontexte ako takom, t.j. o samotnom súbore kategórií, ktoré vracia analyzátor. Dá sa to definovať ako problém klasifikácie, kde sa dokument (webová stránka) mapuje na množinu tried z vopred určeného počtu; v našom prípade sú triedy kategórie produktov. Úloha klasifikácie je pomerne bežná pri spracovaní textu (napr. filtre nevyžiadanej pošty).

Metriky hodnotenia

Zvážte metriky hodnotenia použiteľné na problém klasifikácie. Povedzme, že vieme správne kategórie pre určitý počet dokumentov. Zoskupme odpovede nášho hypotetického analyzátora takto:

  • Skutočne pozitívne ( skutočné pozitíva) - tie kategórie, ktoré sme očakávali, že ich uvidíme a dostali ich na výstupe
  • Falošné pozitíva ( falošne pozitívne) — kategórie, ktoré by nemali byť na výstupe a analyzátor ich chybne vrátil do výstupu
  • Falošné negatívy ( falošné negatívy) — kategórie, ktoré sme očakávali, ale analyzátor ich neurčil
  • Skutočné negatíva ( skutočné negatíva) sú kategórie, ktoré by nemali byť vo výstupe a tiež celkom správne chýbajú vo výstupe analyzátora.

Testovacím súborom nazvime súbor dokumentov (webových stránok), na ktoré poznáme správne odpovede. Ak počítame počet zásahov pre každú kategóriu (počítame zásahy podľa páry dokument - kategória), dostaneme kánonickú tabuľku rozdelenia odpovedí:

V ľavom stĺpci tabuľky sú „správne“ kombinácie dokumentov a kategórií (ktorých prítomnosť vo výstupe očakávame), pravý stĺpec je nesprávny. Horný riadok tabuľky sú kladné (kladné) odpovede klasifikátora, spodný riadok je negatívny (v našom prípade absencia kategórie v odpovedi). Ak počet všetkých párov dokument - kategória rovná sa N, je ľahké to vidieť

Vo všeobecnosti teraz môžete do formulára napísať požiadavku zákazníka (počet nesprávnych odpovedí je nula) a zastaviť sa tam. Takéto systémy však v praxi neexistujú a analyzátor bude samozrejme pracovať s chybami vzhľadom na testovanú vzorku. Metrika presnosti nám pomôže pochopiť percento chýb:

V čitateli vidíme uhlopriečku matice – celkový počet správnych odpovedí, ktorý sa vydelí celkovým počtom otázok. Napríklad analyzátor, ktorý dal 9 správnych odpovedí z 10 možných, má presnosť 90 %.

Metrika F 1

Jednoduchým príkladom nepoužiteľnosti metriky presnosti je úloha identifikovať značku obuvi. Povedzme, že chceme spočítať počet zmienok o značkách obuvi v texte. Uvažujme o klasifikačnom probléme, ktorého cieľom je určiť, či je daný subjekt značkou obuvi (Timberland, Columbia, Ted Baker, Ralph Lauren atď.). Inými slovami, entity v texte rozdelíme do dvoch tried: A – Značka obuvi, B – Všetko ostatné.

Teraz zvážte degenerovaný klasifikátor, ktorý jednoducho vráti triedu B (Všetko ostatné). akýkoľvek subjektov. Pre tento klasifikátor bude počet pravdivo-kladných odpovedí 0. Vo všeobecnosti sa zamyslime nad témou, ale ako často sa pri čítaní textu na internete stretávame so značkami topánok? Napodiv sa ukazuje, že vo všeobecnom prípade 99,9999 % slov textu nie sú značky obuvi. Zostavme maticu distribúcie odozvy pre vzorku 100 000:

Vypočítajme jej presnosť, ktorá sa bude rovnať 99990 / 100000 = 99,99 %! Ľahko sme teda vytvorili klasifikátor, ktorý v podstate nič nerobí, ale má obrovské percento správnych odpovedí. Zároveň je jasné, že sme nevyriešili problém definovania značky obuvi. Faktom je, že správne entity v našom texte sú silne „preriedené“ inými slovami, ktoré nemajú pre klasifikáciu žiadny význam. Vzhľadom na tento príklad je pochopiteľné chcieť použiť iné metriky. Napríklad hodnota tn je jednoznačne "smetí" - zdá sa, že to znamená správnu odpoveď, ale rast tn v dôsledku toho silne „potláča“ príspevok tp(čo je pre nás dôležité) do vzorca presnosti.

Definujte mieru presnosti (P, presnosť) ako:

Ako je ľahké vidieť, miera presnosti charakterizuje, koľko kladných odpovedí prijatých od klasifikátora je správnych. Čím väčšia presnosť, tým nižší počet falošných zásahov.

Miera presnosti však nedáva predstavu o tom, či klasifikátor vrátil všetky správne odpovede. Na tento účel existuje takzvaná miera úplnosti (R, reminiscencia):

Miera úplnosti charakterizuje schopnosť klasifikátora „uhádnuť“ čo najviac kladných odpovedí z očakávaných. Všimnite si, že falošné pozitíva neovplyvňujú túto metriku žiadnym spôsobom.

Precision a Recall poskytujú pomerne vyčerpávajúci popis klasifikátora a „z rôznych uhlov pohľadu“. Zvyčajne pri budovaní takýchto systémov musíte neustále balansovať medzi týmito dvoma metrikami. Ak sa pokúsite zvýšiť Recall tým, že urobíte klasifikátor „optimistickejším“, výsledkom bude pokles presnosti v dôsledku zvýšenia počtu falošných poplachov. Ak svoj klasifikátor upravíte tak, aby bol „pesimistickejší“, napríklad prísnejšie filtrujete výsledky, potom so zvýšením presnosti to spôsobí súčasný pokles funkcie Recall v dôsledku odmietnutia určitého počtu správnych odpovedí. Preto je vhodné použiť na charakterizáciu klasifikátora jednu hodnotu, takzvanú metriku F 1:

V skutočnosti je to jednoducho harmonický priemer P a R. Metrika F 1 dosiahne svoje maximum 1 (100 %), ak P = R = 100 %.
(je ľahké odhadnúť, že pre náš degenerovaný klasifikátor F 1 = 0). Hodnota F 1 je jednou z najbežnejších metrík pre takéto systémy. Je to F 1, ktorú použijeme na formulovanie prahovej kvality nášho analyzátora v FRD.

Existujú dva hlavné prístupy k výpočtu F 1 pre klasifikačný problém.

  • Celkom F 1: výsledky pre všetky triedy sú zhrnuté v jednej jedinej tabuľke, podľa ktorej sa potom vypočíta metrika F 1.
  • Stredná F 1: pre každú triedu vytvoríme vlastnú kontingenčnú maticu a vlastnú hodnotu F 1, potom zoberieme jednoduchý aritmetický priemer pre všetky triedy.

Prečo je potrebný druhý spôsob? Faktom je, že veľkosti vzoriek pre rôzne triedy sa môžu značne líšiť. Pre niektoré triedy môžeme mať veľmi málo príkladov a pre niektoré - veľa. Výsledkom je, že metriky jednej „veľkej“ triedy, ktoré sú zhrnuté v jednej spoločnej tabuľke, „upchajú“ všetky ostatné. V situácii, keď chceme kvalitu systému hodnotiť viac-menej rovnomerne pre všetky triedy, je lepšia druhá možnosť.

Tréningový a testovací set

Vyššie sme uvažovali o klasifikácii na jednej vzorke, na ktorú poznáme všetky odpovede. Ak to aplikujeme na kontextový analyzátor, ktorý sa snažíme opísať, veci sa trochu skomplikujú.

V prvom rade musíme opraviť kategórie produktov. Situácia, keď garantujeme nejakú hodnotu F 1 a množina tried sa môže donekonečna rozširovať, je prakticky slepá ulička. Preto je dodatočne stanovené, že súbor kategórií je pevný.

Vypočítame hodnotu F 1 pre danú vzorku, ktorá je vopred známa. Táto vzorka sa zvyčajne nazýva vyučovanie. Nevieme však, ako sa bude klasifikátor správať na údajoch, ktoré nepoznáme. Na tieto účely sa používa tzv testovacia sada, niekedy tzv zlatá súprava. Rozdiel medzi tréningovou a testovacou súpravou je čisto špekulatívny: koniec koncov, keď máme určitú sadu príkladov, môžeme to rozsekať na tréning a testovacia sada ako chceme. Ale pre samoučiace sa systémy je vytvorenie správnej tréningovej vzorky veľmi dôležité. Nesprávne zvolené príklady môžu výrazne ovplyvniť kvalitu systému.

Typická situácia je, keď sa klasifikátor zobrazí dobrý výsledok na tréningovej súprave a úplne prepadol na testovacej súprave. Ak je náš klasifikačný algoritmus založený na strojovom učení (t. j. závisí od trénovacej množiny), môžeme jeho kvalitu vyhodnotiť pomocou zložitejšej „plávajúcej“ schémy. Aby sme to urobili, rozdelíme všetky príklady, ktoré máme, povedzme na 10 častí. Odstránime prvú časť a použijeme ju na trénovanie algoritmu; zvyšných 90 % príkladov sa použije ako skúšobná vzorka a vypočíta sa hodnota F1. Potom odstránime druhú časť a použijeme ju ako cvičnú; dostaneme ďalšiu hodnotu F 1 a tak ďalej. V dôsledku toho sme dostali 10 hodnôt F 1, teraz vezmeme ich aritmetický priemer, ktorý sa stane konečným výsledkom. Toto je opäť spôsob (nazývaný aj krížová validácia) má zmysel len pre algoritmy založené na strojovom učení.

Keď sa vrátime k písaniu FRD, všimneme si, že naša situácia je oveľa horšia. Máme potenciálne neobmedzenú množinu vstupov (všetky webové stránky na internete) a neexistuje spôsob, ako vyhodnotiť kontext stránky inak ako ľudská účasť. Náš výber teda môže byť tvorený iba manuálne a je veľmi závislý od rozmarov kompilátora (a rozhodnutie o zaradení stránky do kategórie robí človek). Mieru F 1 vieme odhadnúť na nám známych príkladoch, ale F 1 nevieme nijako zistiť. pre všetky webové stránky. Preto sa pre potenciálne neobmedzené súbory údajov (ako sú webové stránky, ktorých je nespočetné množstvo) niekedy používa „metóda poke“ (bez dozoru). Na tento účel sa náhodne vyberie určitý počet príkladov (stránok) a podľa nich operátor (osoba) vytvorí správnu sadu kategórií (tried). Na týchto vybraných príkladoch potom môžeme klasifikátor otestovať. Ďalej, za predpokladu, že príklady, ktoré sme vybrali, sú typický, môžeme aproximovať presnosť algoritmu (Precision). Zároveň nemôžeme vyhodnotiť Recall (nie je známe, koľko správnych odpovedí je mimo príkladov, ktoré sme vybrali), preto nemôžeme vypočítať ani F 1.

Ak teda chceme vedieť, ako sa algoritmus správa na všetkých možných vstupoch, najlepšie, čo môžeme v tejto situácii odhadnúť, je približná hodnota presnosti. Ak každý súhlasí s použitím vopred určenej pevnej vzorky, potom môžeme vypočítať priemernú hodnotu F 1 pre túto vzorku.

Nakoniec?

A nakoniec musíme urobiť nasledovné:

  1. Opravte tréningovú súpravu. Vzorka školenia bude postavená na základe predstáv zákazníka o „správnom“ kontexte.
  2. Opravte skupinu kategórií pre náš analyzátor. Nemôžeme vypočítať F 1 cez neurčitú množinu tried?
  3. Opíšte požiadavku ako: Analyzátor musí určiť kontext s priemernou hodnotou F 1 najmenej 80 %.(napríklad)
  4. Vysvetlite to zákazníkovi.

Ako vidíte, nie je ľahké napísať FRD pre takýto systém (najmä posledný bod), ale je to možné. Pokiaľ ide o prahovú hodnotu F 1 , v takýchto prípadoch je možné stavať na hodnotách F 1 pre podobné klasifikačné problémy.

Táto kapitola predstavuje populárne metódy hodnotenia kvality klasifikačného modelu, ktoré sa používajú aj v iných prácach na túto tému. Uvádza sa ich opis a zdôvodnenie metrík použitých na toto hodnotenie.

Metriky hodnotenia kvality

Úplná presnosť (presnosť)

Táto metrika je jednou z najjednoduchších a zároveň univerzálnych metrík na hodnotenie kvality klasifikačných algoritmov. Hodnota tohto koeficientu sa vypočíta ako podiel správne zaradených objektov z celkový počet objekty vo vzorke. Táto metrika je populárna vďaka svojej jednoduchosti a možnosti rozšírenia na ľubovoľný počet tried. Hlavnou nevýhodou tejto metriky je, že priraďuje rovnakú váhu všetkým dokumentom, čo nemusí byť správne v prípade silnej zaujatosti dokumentov v trénovacej vzorke voči jednej alebo viacerým triedam. Táto metrika môže mať vysokú hodnotu, ale klasifikátor v rámci rovnakej triedy môže vykazovať extrémne nízku kvalitu práce. Metrika to zároveň nijako nesignalizuje.

Presnosť, odvolanie a F-meranie

Pri hodnotení kvality práce systémov, ktoré riešia problém získavania informácií, sa po prvýkrát začali široko používať metriky ako presnosť (precision) a vybavovanie (recall). Presnosť systému v rámci jednej triedy je pomer objektov, ktoré skutočne patria do určitej triedy, vzhľadom na všetky objekty priradené systémom do tejto triedy. Úplnosť je vyjadrená ako podiel objektov nájdených klasifikátorom patriacich do triedy vzhľadom na všetky objekty tejto triedy. Tabuľka 4 je kontingenčnou tabuľkou samostatnej triedy, kde TP (skutočne pozitívne) je skutočne pozitívne riešenie, TN (skutočne negatívne) je skutočne negatívne riešenie, FP (falošne pozitívne) je falošne pozitívne riešenie a FN (falošne negatívne) je falošné - negatívne rozhodnutie.

Tabuľka 1 – Kontingenčná tabuľka triedy objektov

Takže presnosť a pamätanie sa vypočítajú takto:

F-measure kombinuje informácie o presnosti a úplnosti vyhodnocovaného algoritmu. Vypočítava sa ako harmonický priemer ukazovateľov presnosti a vybavovania:

Vzhľadom na to, že F-measure sa počíta samostatne pre každú triedu, je vhodné ju použiť na vyhľadávanie a analýzu špecifických chýb algoritmu, na vyhodnotenie klasifikácie s viacerými triedami. Zároveň je v prípade veľkého počtu tried potrebná charakteristika, ktorá by agregovala úplnosť a presnosť nad všetkými triedami a charakterizovala všeobecné správanie systému. V tejto práci sa na tento účel používajú tieto agregované hodnoty: presnosť makra, ktorá sa počíta ako aritmetický priemer presnosti pre všetky triedy, vyvolanie makra, ktoré sa počíta ako aritmetický priemer stiahnutia pre všetky triedy, a makro F- miera (Macro F-score), čo je harmonický priemer medzi nimi.

Krížová validácia

Jednou z najbežnejších metód na vykonávanie plnohodnotného testovania a hodnotenia výkonnosti rôznych algoritmov strojového učenia je krížová validácia. Pre nezávislú vzorku túto metódu umožňuje získať nezaujatý odhad pravdepodobnosti chyby, na rozdiel od priemernej chyby na trénovacej vzorke, čo môže byť skreslený odhad pravdepodobnosti chyby v dôsledku prepracovania algoritmu. Ďalšou výhodou tohto postupu je možnosť získať odhad pravdepodobnosti chyby algoritmu pri absencii kontrolnej vzorky špeciálne navrhnutej na testovanie.

Predpokladajme, že ide o množinu popisov vlastností objektov, na ktorých je špecifikovaná konečná vzorka precedensov, kde je konečná množina tried. Je dané mapovanie, ktoré spája ľubovoľnú vzorku precedensov s algoritmom. Potom sa výkon algoritmu pre ľubovoľnú vzorku precedensov odhadne pomocou funkcionálu kvality:

kde je nejaká nezáporná funkcia, ktorá vracia chybovú hodnotu algoritmu so správnym označením triedy.