Metrică de calitate în învățarea automată. Valori în problemele de învățare automată

Pe elementele din fiecare listă. Ordinea parțială este de obicei specificată prin specificarea unui scor pentru fiecare element (de exemplu, „relevant” sau „nerelevant”; sunt posibile mai mult de două note). Scopul modelului de clasare este de a aproxima și generaliza în cel mai bun mod (într-un sens) metoda de clasare în setul de instruire pentru date noi.

Învățarea clasamentului este încă un domeniu de cercetare destul de tânăr, în dezvoltare rapidă, care a apărut în anii 2000, odată cu apariția interesului în domeniul recuperării informațiilor în aplicarea metodelor de învățare automată la problemele de clasificare.

Colegiat YouTube

  • 1 / 5

    În timpul instruirii modelului de clasare și în timpul funcționării sale, fiecare pereche document-interogare este tradusă într-un vector numeric de caracteristici de clasificare (numite și factori de clasificare sau semnale) care caracterizează proprietățile documentului, interogarea și relația acestora. Astfel de semne pot fi împărțite în trei grupe:

    Următoarele sunt câteva exemple de caracteristici de clasificare utilizate în setul de date LETOR bine cunoscut în domeniu:

    • Valorile măsurilor TF, TF-IDF, BM25 și modelul lingvistic de potrivire a cererii diferitelor zone ale documentului (titlu, adresă URL, text corp, text link);
    • Lungimile și sumele IDF ale zonelor documentelor;
    • Clasează documentele obținute prin diferite variante de algoritmi de clasare a legăturilor, cum ar fi PageRank și HITS.

    Clasarea valorilor de calitate

    Există mai multe valori utilizate pentru a evalua și compara performanța algoritmilor de clasificare pe un eșantion cu evaluatorii. Adesea, parametrii unui model de clasare tind să fie reglați în așa fel încât să maximizeze valoarea uneia dintre aceste valori.

    Exemple de valori:

    Clasificarea algoritmului

    În articolul său „Learning to Rank for Information Retrieval” și discursuri la conferințe tematice, Tai-Yang Liu de la Microsoft Research Asia a analizat metodele existente pentru rezolvarea problemei clasamentului didactic și a propus clasificarea acestora în trei abordări, în funcție de reprezentarea de intrare utilizată date și funcții de penalizare:

    Abordare punctuală

    Note (editați)

    1. Tie-Yan Liu (2009), Învățarea clasamentului pentru recuperarea informațiilor, Fundamente și tendințe în regăsirea informațiilor: Vol. 3: nr. 3, p. 225-331, ISBN 978-1-60198-244-5, DOI 10.1561 / 1500000016... Sunt disponibile diapozitive din discursul lui T. Lew la WWW 2009.

    La ieșirea clienților unui operator de telecomunicații.


    Să încărcăm bibliotecile necesare și să privim datele

    import pandas as pd import matplotlib.pyplot as plt from matplotlib.pylab import rc, plot import seaborn as sns from sklearn.preprocessing import LabelmbleEncoder, OneHotEncoder from sklearn.model_selection import cross_val_score from sklearn.linear_modelression skrainnormalization skrain din sklearn.metrics import precision_recall_curve, classification_report din sklearn.model_selection import train_test_split df = pd.read_csv ("../../ data / telecom_churn.csv")


    df.head (5)

    Preprocesarea datelor

    # Să facem o mapare a coloanelor binare # și să codificăm starea cu codare falsă (pentru simplitate, este mai bine să nu faceți acest lucru pentru modelele din lemn) d = ("Da": 1, "Nu": 0) df ["Plan internațional "] = df [" Plan internațional "]. Hartă (d) df [" Plan de mesagerie vocală "] = df [" Plan de mesagerie vocală "]. Hartă (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 (stat_codificat, coloane = ["state" + str (i) pentru i în intervalul (stat_codat.shape)]) df = pd.concat (, axis = 1)

    Precizie, precizie și rechemare

    Înainte de a trece la valorile în sine, este necesar să se introducă un concept important pentru a descrie aceste valori în termeni de erori de clasificare - matrice de confuzie(matrice de erori).
    Să presupunem că avem două clase și un algoritm care prezice apartenența fiecărui obiect la una dintre clase, atunci matricea de erori de clasificare va arăta astfel:


    Adevărat pozitiv (TP) Fals pozitiv (FP)
    Fals negativ (FN) Adevărat negativ (TN)

    Iată răspunsul algoritmului de pe obiect și este adevărata etichetă de clasă pe acel obiect.
    Astfel, există două tipuri de erori de clasificare: False Negative (FN) și False Positive (FP).


    Instruirea algoritmului și construirea matricei de erori

    X = df.drop ("Churn", axis = 1) y = df ["Churn"] # Împarte eșantionul în tren și test, toate valorile vor fi evaluate pe setul de date X_train, X_test, y_train, y_test = train_test_split ( X, y, stratify = y, test_size = 0.33, random_state = 42) # Antrenează regresia logistică nativă lr = LogisticRegression (random_state = 42) lr.fit (X_train, y_train) # Folosește funcția de a construi matricea de erori din sklearn documentație def plot_confusion_matrix (cm, clase, normalize = False, title = "(! LANG: Matrice de confuzie", 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="Matrice de confuzie") plt.savefig("conf_matrix.png") plt.show()!}


    Precizie

    O valoare intuitivă, evidentă și aproape neutilizată este acuratețea - procentul de răspunsuri corecte ale algoritmului:



    Această valoare este inutilă în problemele cu clase inegale și este ușor să o arăți cu un exemplu.


    Să presupunem că vrem să evaluăm performanța unui filtru de e-mail spam. Avem 100 de e-mailuri non-spam, dintre care 90 clasificatorul nostru a fost identificat corect (Adevărat negativ = 90, fals pozitiv = 10) și 10 e-mailuri spam, dintre care 5 identificatorul a fost identificat corect (Adevărat pozitiv = 5, fals negativ = cinci ).
    Apoi acuratețe:



    Cu toate acestea, dacă doar prezicem toate e-mailurile ca fiind non-spam, vom obține o precizie mai mare:



    În același timp, modelul nostru nu are absolut nici o putere predictivă, deoarece inițial am vrut să identificăm mesajele spam. Pentru a depăși acest lucru, vom fi ajutați de tranziția de la o valoare comună pentru toate clasele la indicatori separați ai calității claselor.

    Precizie, rechemare și măsură F.

    Pentru a evalua performanța algoritmului pe fiecare dintre clase separat, introducem valorile de precizie și de rechemare.




    Precizia poate fi interpretată ca proporția de obiecte numite de clasificator ca fiind pozitive și în același timp cu adevărat pozitive și amintirea arată ce proporție de obiecte dintr-o clasă pozitivă din toate obiectele dintr-o clasă pozitivă găsite de algoritm.



    Introducerea preciziei nu ne permite să scriem toate obiectele într-o singură clasă, deoarece în acest caz obținem o creștere a nivelului fals pozitiv. Recall demonstrează capacitatea algoritmului de a detecta o clasă dată în general, iar precizia demonstrează capacitatea de a distinge această clasă de alte clase.


    După cum am menționat anterior, există două tipuri de erori de clasificare: Fals pozitiv și Fals negativ. În statistici, primul tip de eroare se numește eroare de tip I, iar al doilea este denumit eroare de tip II. În problema noastră de a determina abaterea abonaților, greșeala de primul fel va fi acceptarea unui abonat loial pentru unul ieșit, deoarece ipoteza noastră nulă este că niciunul dintre abonați nu pleacă și respingem această ipoteză. În consecință, o eroare de al doilea fel va fi „săritura” abonatului de ieșire și acceptarea eronată a ipotezei nule.


    Precizia și rechemarea nu depind, spre deosebire de precizie, de raportul dintre clase și, prin urmare, sunt aplicabile în condiții de eșantioane dezechilibrate.
    Adesea, în practica reală, sarcina este de a găsi echilibrul optim (pentru client) între aceste două valori. Un exemplu clasic este problema determinării churn-ului clientului.
    Evident, nu putem găsi dintre toate clienții ieșiți și numai lor. Dar, după ce am identificat strategia și resursa pentru păstrarea clienților, putem selecta pragurile necesare pentru precizie și rechemare. De exemplu, vă puteți concentra pe reținerea numai a clienților cu randament ridicat sau a celor care sunt mai predispuși să plece, deoarece avem resurse limitate ale centrului de apeluri.


    De obicei, atunci când optimizați hiperparametrele unui algoritm (de exemplu, în cazul iterației pe o rețea GridSearchCV), se utilizează o singură valoare, a cărei îmbunătățire ne așteptăm să o vedem pe eșantionul de testare.
    Există mai multe moduri diferite de a combina precizia și rechemarea într-o măsură agregată a calității. F-măsură (în general) - precizie armonică medie și rechemare:



    În acest caz, determină greutatea preciziei în metrică și când aceasta este media armonică (cu un factor 2, astfel încât, în cazul preciziei = 1 și amintirii = 1 să aibă)
    Măsura F atinge maximul atunci când completitudinea și precizia sunt egale cu una și este aproape de zero dacă unul dintre argumente este aproape de zero.
    Sklearn are o funcție utilă _metrics.classification raport, care returnează amintirea, precizia și măsura F pentru fiecare dintre clase, precum și numărul de instanțe ale fiecărei clase.


    report = classification_report (y_test, lr.predict (X_test), target_names = ["Non-churned", "Churned"]) print (raport)
    clasă precizie amintesc scor 1 a sustine
    Necombinat 0.88 0.97 0.93 941
    Zdrobit 0.60 0.25 0.35 159
    medie / total 0.84 0.87 0.84 1100

    Trebuie remarcat aici că, în cazul problemelor cu clase dezechilibrate, care prevalează în practica reală, este adesea necesar să se recurgă la tehnicile de modificare artificială a setului de date pentru a egaliza raportul clasei. Există multe dintre ele și nu le vom atinge, puteți analiza unele metode și alegeți cea care se potrivește sarcinii dvs.

    AUC-ROC și AUC-PR

    Când convertim răspunsul real al algoritmului (de regulă, probabilitatea de a aparține unei clase, vezi SVM separat) într-o etichetă binară, trebuie să alegem un anumit prag la care 0 devine 1. Un prag egal cu 0,5 pare natural și aproape , dar nu întotdeauna se dovedește a fi optim, de exemplu, în lipsa de echilibru de clasă menționată anterior.


    Una dintre modalitățile de evaluare a modelului ca întreg, fără a fi legat de un prag specific, este AUC-ROC (sau ROC AUC) - zona ( A rea U nder C urve) sub curba de eroare ( R eceiver O perating C curba haracteristică). Această curbă este o linie de la (0,0) la (1,1) în coordonatele True Positive Rate (TPR) și False Positive Rate (FPR):




    Știm deja TPR, aceasta este completitudine, iar FPR arată ce proporție de obiecte din clasa negativă algoritmul a prezis incorect. În cazul ideal, atunci când clasificatorul nu face greșeli (FPR = 0, TPR = 1), obținem aria de sub curbă egală cu una; în caz contrar, atunci când clasificatorul scoate la întâmplare probabilitățile clasei, AUC-ROC va tinde la 0,5, deoarece clasificatorul va genera același număr de TP și FP.
    Fiecare punct din grafic corespunde alegerii unui anumit prag. Zona de sub curbă în acest caz arată calitatea algoritmului (mai mult este mai bine), în plus, abruptitatea curbei în sine este importantă - vrem să maximizăm TPR prin minimizarea FPR, ceea ce înseamnă că curba noastră ar trebui să aibă tendința ideală de a punctul (0,1).


    Codul desenului curbei ROC

    sns.set (font_scale = 1.5) sns.set_color_codes ("muted") plt.figure (figsize = (10, 8)) fpr, tpr, thresholds = roc_curve (y_test, lr.predict_proba (X_test) [:, 1], pos_label = 1) lw = 2 plt.plot (fpr, tpr, lw = lw, label = "curba ROC") plt.plot (,) plt.xlim () plt.ylim () plt.xlabel ("False Positive Rate ") plt.ylabel (" True Positive Rate ") plt.title (" curba ROC ") plt.savefig (" ROC.png ") plt.show ()



    Criteriul AUC-ROC este rezistent la clasele dezechilibrate (alertă spoiler: vai, nu totul este atât de lipsit de ambiguitate) și poate fi interpretat ca probabilitatea ca un obiect pozitiv selectat aleatoriu să fie clasificat de clasificatorul mai mare (va avea o probabilitate mai mare de a fi pozitiv) decât un obiect negativ selectat aleatoriu ...


    Luați în considerare următoarea problemă: trebuie să selectăm 100 de documente relevante dintr-un milion de documente. Am stăpânit doi algoritmi:

    • Algoritmul 1 returnează 100 de documente, dintre care 90 sunt relevante. Prin urmare,

    • Algoritmul 2 returnează 2000 de documente, dintre care 90 sunt relevante. Prin urmare,


    Cel mai probabil, am alege primul algoritm care produce foarte puține pozitive false în comparație cu concurentul său. Dar diferența de rată pozitivă falsă între acești doi algoritmi extrem mic - doar 0,0019. Acest lucru se datorează faptului că AUC-ROC măsoară proporția fals pozitiv față de adevăratul negativ, iar în problemele în care a doua clasă (mai mare) nu este atât de importantă pentru noi, este posibil să nu ofere o imagine complet adecvată atunci când se compară algoritmi.


    Pentru a corecta situația, să revenim la completitudine și acuratețe:

    • Algoritmul 1

    • Algoritmul 2


    Aici, o diferență semnificativă între cei doi algoritmi este deja vizibilă - 0,855 în precizie!


    Precizia și rechemarea sunt, de asemenea, utilizate pentru a construi curba și, ca AUC-ROC, pentru a găsi zona de sub ea.



    Se poate observa aici că pe seturi de date mici, zona de sub curba PR poate fi prea optimistă, deoarece este calculată utilizând metoda trapezoidală, dar de obicei există suficiente date în astfel de sarcini. Pentru detalii despre relația dintre AUC-ROC și AUC-PR, consultați aici.

    Pierderea logistică

    Funcția de pierdere logistică este separată, definită ca:



    aici este răspunsul algoritmului pe obiectul -th, este adevărata etichetă de clasă pe obiectul -th și dimensiunea eșantionului.


    Detalii despre interpretarea matematică a funcției de pierdere logistică au fost deja scrise în cadrul postului despre modele liniare.
    Această valoare apare rar în cerințele companiei, dar adesea în sarcini pe kaggle.
    Intuitiv, vă puteți imagina reducerea pierderii de loguri ca o sarcină de maximizare a preciziei prin penalizarea predicțiilor incorecte. Cu toate acestea, trebuie remarcat faptul că logloss penalizează extrem de puternic încrederea clasificatorului în răspunsul greșit.


    Să luăm în considerare un exemplu:


    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 cu clasificare incertă% f "% logloss_crutch (1, 0.5)) >> Logloss cu clasificare incertă 0.693147 print (" Logloss cu clasificare sigură și răspuns corect% f "% logloss_crutch (1, 0.9)) >> Logloss cu clasificare sigură și răspuns corect 0.105361 print (" Logloss cu clasificare sigură și răspuns greșit% f "% logloss_crutch (1, 0.1)) >> Logloss cu clasificare sigură și răspuns greșit 2.302585

    Rețineți cum pierderea jurnalului a crescut dramatic cu un răspuns incorect și o clasificare încrezătoare!
    În consecință, o eroare la un obiect poate duce la o degradare semnificativă a erorii generale a eșantionului. Astfel de obiecte sunt adesea valori anormale, care trebuie amintite pentru a fi filtrate sau luate în considerare separat.
    Totul se încadrează în loc dacă desenați un grafic de pierdere a jurnalului:



    Se poate observa că, cu cât răspunsul algoritmului cu adevărul la sol = 1 este mai aproape de zero, cu atât valoarea erorii este mai mare și cu atât curba crește mai abruptă.

    Să rezumăm:

    • În cazul unei clasificări cu mai multe clase, trebuie să monitorizați cu atenție valorile fiecărei clase și să urmați logica deciziei sarcini mai degrabă decât să optimizăm metrica
    • În cazul claselor inegale, este necesar să selectați un echilibru de clase pentru instruire și o valoare care să reflecte corect calitatea clasificării
    • și madrugado pentru ajutor cu acest articol.

    Acest capitol prezintă metode populare de evaluare a calității modelului de clasificare, care, printre altele, sunt utilizate în alte lucrări pe această temă. Sunt date descrierea și justificarea valorilor utilizate pentru această evaluare.

    Măsuri de evaluare a calității

    Precizie deplină

    Această valoare este una dintre cele mai simple și în același timp universale pentru evaluarea performanței algoritmilor de clasificare. Valoarea acestui coeficient este calculată ca proporția obiectelor clasificate corect din numărul total de obiecte din eșantion. Această valoare este populară datorită simplității sale și capacității de a se extinde la orice număr de clase. Principalul dezavantaj al acestei valori este că atribuie aceeași greutate tuturor documentelor, ceea ce poate fi incorect în cazul unei deplasări puternice a documentelor în setul de instruire către una sau mai multe clase. Această valoare poate avea o valoare ridicată, dar un clasificator din aceeași clasă poate prezenta o calitate extrem de scăzută a muncii. În același timp, metrica nu semnalează acest lucru în niciun fel.

    Precizie, completitudine și măsură F.

    Măsuri precum precizia și rechemarea au fost utilizate pentru prima dată pe scară largă în evaluarea performanței sistemelor care rezolvă probleme de recuperare a informațiilor. Acuratețea sistemului din cadrul unei clase este proporția obiectelor care aparțin într-adevăr unei anumite clase față de toate obiectele atribuite de sistem acestei clase. Completitudinea este exprimată ca proporția obiectelor găsite de clasificator aparținând unei clase față de toate obiectele din această clasă. Tabelul 4 este un tabel de contingență al unei clase separate, în care TP (adevărat pozitiv) este o decizie adevărat pozitivă, TN (adevărat negativ) este o decizie negativ adevărat, FP (fals pozitiv) este o decizie fals pozitivă și FN (fals negativ) este unul fals.-decizie negativă.

    Tabelul 1 - Tabelul contingenței unei clase de obiecte

    Astfel, precizia și completitudinea sunt calculate ca:

    Măsura F combină informații despre acuratețea și completitudinea algoritmului evaluat. Se calculează ca medie armonică a indicatorilor de precizie și completitudine:

    Datorită faptului că măsura F este calculată separat pentru fiecare clasă, este convenabil să o utilizați pentru căutarea și analiza erorilor specifice ale algoritmului, pentru evaluarea unei clasificări cu mai multe clase. Mai mult, în cazul unui număr mare de clase, este necesară o caracteristică care să agregeze completitudinea și acuratețea tuturor claselor și să caracterizeze comportamentul general al sistemului. În această lucrare, următoarele valori agregate sunt utilizate în acest scop: precizie macro, care este calculată ca medie aritmetică a acurateței pentru toate clasele, rechemare macro, care este calculată ca medie aritmetică a completitudinii pentru toate clasele, și măsura F macro (scor F macro), care este media armonică dintre ele.

    Validare încrucișată

    Validarea încrucișată este una dintre cele mai comune metode pentru efectuarea testării complete și evaluarea performanței diferiților algoritmi de învățare automată. Pentru un eșantion independent, această metodă permite obținerea unei estimări imparțiale a probabilității de eroare, spre deosebire de eroarea medie a eșantionului antrenat, care poate fi o estimare părtinitoare a probabilității de eroare datorită supra-montării algoritmului. Un alt avantaj al acestei proceduri este capacitatea de a obține o estimare a probabilității unei erori de algoritm, în absența unui eșantion de control special conceput pentru testare.

    Să presupunem că este un set de descrieri de caracteristici ale obiectelor, pe care este specificat un eșantion finit de cazuri de utilizare, unde este un set finit de clase. Se oferă o mapare care atribuie un algoritm unei selecții arbitrare de cazuri de utilizare. Apoi, calitatea algoritmului pentru un eșantion arbitrar de precedente este estimată folosind funcționalitatea calității:

    unde este o funcție non-negativă care returnează valoarea erorii algoritmului cu eticheta corectă a clasei.

    Bună, Habr!

    În sarcinile de învățare automată, metricele sunt utilizate pentru a evalua calitatea modelelor și pentru a compara diferiți algoritmi, iar selecția și analiza acestora sunt o parte indispensabilă a sarcinii unui datatanist.

    În acest articol, vom analiza câteva criterii de calitate în problemele de clasificare, vom discuta despre ceea ce este important atunci când alegeți o valoare și ce poate merge prost.

    Valori în problemele de clasificare

    Pentru a demonstra caracteristici utile sklearnși o reprezentare vizuală a valorilor, vom folosi setul nostru de date cu privire la consumul de clienți al unui operator de telecomunicații, pe care l-am întâlnit în primul articol al cursului.

    Să încărcăm bibliotecile necesare și să privim datele

    Import pandas as pd import matplotlib.pyplot as plt from matplotlib.pylab import rc, plot import seaborn as sns from sklearn.preprocessing import Labelmblencoder, OneHotEncoder from sklearn.model_selection import cross_val_score from sklearn.linear_modelression GrainFormalization skrainnormalization skrainnormal din sklearn.metrics import precision_recall_curve, classification_report din sklearn.model_selection import train_test_split df = pd.read_csv ("../../ data / telecom_churn.csv")

    Df.head (5)

    Preprocesarea datelor

    # Să facem o mapare a coloanelor binare # și să codificăm starea cu codare falsă (pentru simplitate, este mai bine să nu faceți acest lucru pentru modelele din lemn) d = ("Da": 1, "Nu": 0) df ["Plan internațional "] = df [" Plan internațional "]. Hartă (d) df [" Plan de mesagerie vocală "] = df [" Plan de mesagerie vocală "]. Hartă (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 (stat_codificat, coloane = ["state" + str (i) pentru i în intervalul (stat_codat.shape)]) df = pd.concat (, axis = 1)

    Precizie, precizie și rechemare

    Înainte de a trece la valorile în sine, este necesar să se introducă un concept important pentru a descrie aceste valori în termeni de erori de clasificare - matrice de confuzie(matrice de erori).
    Să presupunem că avem două clase și un algoritm care prezice apartenența fiecărui obiect la una dintre clase, atunci matricea de erori de clasificare va arăta astfel:

    Adevărat pozitiv (TP) Fals pozitiv (FP)
    Fals negativ (FN) Adevărat negativ (TN)

    acesta este răspunsul algoritmului asupra obiectului și

    Eticheta adevărată a clasei de pe acest obiect.
    Astfel, există două tipuri de erori de clasificare: False Negative (FN) și False Positive (FP).

    Instruirea algoritmului și construirea matricei de erori

    X = df.drop ("Churn", axis = 1) y = df ["Churn"] # Împarte eșantionul în tren și test, toate valorile vor fi evaluate pe setul de date X_train, X_test, y_train, y_test = train_test_split ( X, y, stratify = y, test_size = 0.33, random_state = 42) # Antrenați regresia logistică nativă lr = LogisticRegression (random_state = 42) lr.fit (X_train, y_train) # Utilizați funcția pentru a construi matricea de erori din sklearn documentație def plot_confusion_matrix (cm, clase, normalize = False, title = "(! LANG: Matrice de confuzie", 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="Matrice de confuzie") plt.savefig("conf_matrix.png") plt.show()!}

    Precizie

    O valoare intuitivă, evidentă și aproape neutilizată este acuratețea - procentul de răspunsuri corecte ale algoritmului:

    Această valoare este inutilă în problemele cu clase inegale și este ușor de arătat cu un exemplu.

    Să presupunem că vrem să evaluăm performanța unui filtru de e-mail spam. Avem 100 de e-mailuri non-spam, dintre care 90 clasificatorul nostru a identificat corect (Adevărat negativ = 90, fals pozitiv = 10) și 10 e-mailuri spam, dintre care 5 identificatorul a fost identificat corect (Adevărat pozitiv = 5, fals negativ = 5) .
    Apoi acuratețe:

    Cu toate acestea, dacă doar prezicem toate e-mailurile ca fiind non-spam, vom obține o precizie mai mare:

    În același timp, modelul nostru nu are deloc o putere predictivă, deoarece am dorit inițial să identificăm mesajele spam. Pentru a depăși acest lucru, vom fi ajutați de tranziția de la o valoare comună pentru toate clasele la indicatori separați ai calității claselor.

    Precizie, rechemare și măsură F.

    Pentru a evalua performanța algoritmului pe fiecare dintre clase separat, introducem valorile de precizie și de rechemare.

    Precizia poate fi interpretată ca proporția de obiecte numite de clasificator ca fiind pozitive și în același timp cu adevărat pozitive și amintirea arată ce proporție de obiecte dintr-o clasă pozitivă din toate obiectele dintr-o clasă pozitivă găsite de algoritm.

    Introducerea preciziei nu ne permite să scriem toate obiectele într-o singură clasă, deoarece în acest caz obținem o creștere a nivelului fals pozitiv. Recall demonstrează capacitatea algoritmului de a detecta o clasă dată în general, iar precizia demonstrează capacitatea de a distinge această clasă de alte clase.

    După cum am menționat anterior, există două tipuri de erori de clasificare: Fals pozitiv și Fals negativ. În statistici, primul tip de eroare se numește eroare de tip I, iar al doilea este denumit eroare de tip II. În problema noastră de determinare a abaterii abonamentului, greșeala de primul fel va fi acceptarea unui abonat loial pentru unul de ieșire, deoarece ipoteza noastră nulă este că niciunul dintre abonați nu curge și respingem această ipoteză. În consecință, o eroare de al doilea fel va fi „săritura” abonatului de ieșire și acceptarea eronată a ipotezei nule.

    Precizia și rechemarea nu depind, spre deosebire de precizie, de raportul dintre clase și, prin urmare, sunt aplicabile în condiții de eșantioane dezechilibrate.
    Adesea, în practica reală, sarcina este de a găsi echilibrul optim (pentru client) între aceste două valori. Un exemplu clasic este problema determinării churn-ului clientului.
    Evident, nu putem găsi dintre toate clienții ieșiți și numai lor. Dar, după ce am identificat strategia și resursa pentru păstrarea clienților, putem selecta pragurile de precizie și de rechemare necesare. De exemplu, vă puteți concentra pe reținerea numai a clienților cu randament ridicat sau a celor care sunt mai predispuși să raporteze, deoarece suntem limitați de resursa centrului de apelare.

    De obicei, atunci când optimizați hiperparametrele unui algoritm (de exemplu, în cazul iterației pe o rețea GridSearchCV), se utilizează o singură valoare, a cărei îmbunătățire ne așteptăm să o vedem pe eșantionul de testare.
    Există mai multe moduri diferite de a combina precizia și rechemarea într-o măsură agregată a calității. F-măsură (în general

    ) - precizie armonică medie și rechemare:

    în acest caz determină greutatea preciziei în metrică și pentru

    aceasta este media armonică (cu un multiplicator de 2, astfel încât în ​​cazul preciziei = 1 și amintirii = 1, avem

    )
    Măsura F atinge maximul atunci când completitudinea și acuratețea sunt egale cu una și este aproape de zero dacă unul dintre argumente este aproape de zero.
    Sklearn are o funcție utilă _metrics.classification raport returnarea amintirii, preciziei și măsurii F pentru fiecare dintre clase, precum și numărul de instanțe ale fiecărei clase.

    Report = classification_report (y_test, lr.predict (X_test), target_names = ["Non-churned", "Churned"]) print (raport)

    clasă precizie amintesc scor 1 a sustine
    Necombinat 0.88 0.97 0.93 941
    Zdrobit 0.60 0.25 0.35 159
    medie / total 0.84 0.87 0.84 1100

    Trebuie remarcat aici că, în cazul problemelor cu clase dezechilibrate, care prevalează în practica reală, este adesea necesar să se recurgă la tehnicile de modificare artificială a setului de date pentru a egaliza raportul clasei. Sunt multe dintre ele și nu le vom atinge, puteți analiza unele metode și alegeți cea care se potrivește sarcinii dvs.

    AUC-ROC și AUC-PR

    Când convertim răspunsul real al algoritmului (de regulă, probabilitatea de a aparține unei clase, vezi SVM separat) într-o etichetă binară, trebuie să alegem un anumit prag la care 0 devine 1. Un prag egal cu 0,5 pare natural și aproape , dar nu întotdeauna se dovedește a fi optim, de exemplu, în lipsa de echilibru de clasă menționată anterior.

    Una dintre modalitățile de evaluare a modelului ca întreg, fără a fi legat de un prag specific, este AUC-ROC (sau ROC AUC) - zona ( A rea U nder C urve) sub curba de eroare ( R eceiver O perating C curba haracteristică). Această curbă este o linie de la (0,0) la (1,1) în coordonatele True Positive Rate (TPR) și False Positive Rate (FPR):

    Știm deja TPR, aceasta este completitudine, iar FPR arată ce proporție de obiecte din clasa negativă algoritmul a prezis incorect. În mod ideal, atunci când clasificatorul nu face greșeli (FPR = 0, TPR = 1), vom obține aria de sub curbă egală cu una, în caz contrar, atunci când clasificatorul redă aleatoriu probabilitățile clasei, AUC-ROC va tinde la 0,5, deoarece clasificatorul va emite aceeași cantitate de TP și FP.
    Fiecare punct din grafic corespunde alegerii unui anumit prag. Zona de sub curbă în acest caz arată calitatea algoritmului (mai mult este mai bine), în plus, abruptitatea curbei în sine este importantă - vrem să maximizăm TPR prin minimizarea FPR, ceea ce înseamnă că curba noastră ar trebui să aibă tendința ideală de a punctul (0,1).

    Codul desenului curbei ROC

    Sns.set (font_scale = 1.5) sns.set_color_codes ("muted") plt.figure (figsize = (10, 8)) fpr, tpr, thresholds = roc_curve (y_test, lr.predict_proba (X_test) [:, 1], pos_label = 1) lw = 2 plt.plot (fpr, tpr, lw = lw, label = "curba ROC") plt.plot (,) plt.xlim () plt.ylim () plt.xlabel ("False Positive Rate ") plt.ylabel (" True Positive Rate ") plt.title (" curba ROC ") plt.savefig (" ROC.png ") plt.show ()

    Criteriul AUC-ROC este rezistent la clasele dezechilibrate (spoiler: vai, dar nu totul este atât de lipsit de ambiguitate) și poate fi interpretat ca probabilitatea ca un obiect pozitiv selectat aleatoriu să fie clasat de clasificatorul mai mare (va avea o probabilitate mai mare de a fi pozitiv) decât un obiect negativ selectat aleatoriu.

    Luați în considerare următoarea problemă: trebuie să selectăm 100 de documente relevante dintr-un milion de documente. Am stăpânit doi algoritmi:

    • Algoritmul 1 returnează 100 de documente, dintre care 90 sunt relevante. Prin urmare,
    • Algoritmul 2 returnează 2000 de documente, dintre care 90 sunt relevante. Prin urmare,

    Cel mai probabil, am alege primul algoritm care produce foarte puține pozitive false în comparație cu concurentul său. Dar diferența de rată pozitivă falsă între acești doi algoritmi extrem mic - doar 0,0019. Acest lucru se datorează faptului că AUC-ROC măsoară proporția fals pozitiv față de adevăratul negativ, iar în problemele în care a doua clasă (mai mare) nu este atât de importantă pentru noi, este posibil să nu ofere o imagine complet adecvată atunci când se compară algoritmi.

    Pentru a corecta situația, să revenim la completitudine și acuratețe:

    • Algoritmul 1
    • Algoritmul 2

    Aici, o diferență semnificativă între cei doi algoritmi este deja vizibilă - 0,855 în precizie!

    Precizia și rechemarea sunt, de asemenea, utilizate pentru a construi curba și, ca AUC-ROC, pentru a găsi zona de sub ea.

    Se poate observa aici că pe seturi de date mici, zona de sub curba PR poate fi prea optimistă, deoarece este calculată utilizând metoda trapezoidală, dar de obicei există suficiente date în astfel de sarcini. Pentru detalii despre relația dintre AUC-ROC și AUC-PR, consultați aici.

    Pierderea logistică

    Funcția de pierdere logistică este separată, definită ca:

    acesta este răspunsul algoritmului la

    Ohm obiect,

    eticheta adevărată a clasei pe

    Obiect Ohm și

    marime de mostra.

    Detalii despre interpretarea matematică a funcției de pierdere logistică au fost deja scrise în cadrul postului despre modele liniare.
    Această valoare apare rar în cerințele companiei, dar adesea în sarcini pe kaggle.
    Intuitiv, minimizarea pierderii de loguri poate fi considerată sarcina de a maximiza acuratețea penalizând predicțiile greșite. Cu toate acestea, trebuie remarcat faptul că logloss penalizează extrem de puternic încrederea clasificatorului în răspunsul greșit.

    Să luăm în considerare un exemplu:

    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 cu clasificare incertă% f "% logloss_crutch (1, 0.5)) >> Logloss cu clasificare incertă 0.693147 print (" Logloss cu clasificare sigură și răspuns corect% f "% logloss_crutch (1, 0.9)) >> Logloss cu clasificare sigură și răspuns corect 0.105361 print (" Logloss cu clasificare sigură și răspuns greșit% f "% logloss_crutch (1, 0.1)) >> Logloss cu clasificare sigură și răspuns greșit 2.302585

    Rețineți cum pierderea jurnalului a crescut dramatic cu un răspuns incorect și o clasificare încrezătoare!
    În consecință, o eroare la un obiect poate duce la o degradare semnificativă a erorii generale a eșantionului. Astfel de obiecte sunt adesea valori anormale, care trebuie amintite pentru a fi filtrate sau luate în considerare separat.
    Totul se încadrează în loc dacă desenați un grafic de pierdere a jurnalului:

    Se poate observa că, cu cât răspunsul algoritmului cu adevărul la sol = 1 este mai aproape de zero, cu atât valoarea erorii este mai mare și cu atât curba crește mai abruptă.

    Rezumând:

    • În cazul unei clasificări cu mai multe clase, trebuie să monitorizați cu atenție valorile fiecărei clase și să urmați logica deciziei sarcini mai degrabă decât să optimizăm metrica
    • În cazul claselor inegale, este necesar să selectați un echilibru de clase pentru instruire și o valoare care să reflecte corect calitatea clasificării
    • Alegerea valorii ar trebui să se facă cu accent pe zona subiectului, preprocesarea datelor și, eventual, segmentarea (ca în cazul împărțirii în clienți bogați și săraci)

    Link-uri utile

    1. Cursul lui Evgeny Sokolov: Seminar despre alegerea modelelor (există informații despre metricele problemelor de regresie)
    2. Probleme cu AUC-ROC de la A.G. Dyakonova
    3. Puteți citi mai multe despre alte valori pe kaggle. La descrierea fiecărei valori a fost adăugat un link către competiția în care a fost utilizată
    4. Prezentare de Bogdan Melnik aka ld86 despre instruirea pe probe dezechilibrate

    UDC 519.816

    S. V. SEMENIKHIN L. A. DENISOVA

    Universitatea Tehnică de Stat din Omsk

    GAMA DE METODE DE ÎNVĂȚARE A MAȘINII

    BAZAT PE UN ALGORITM GENETIC MODIFICAT PENTRU METRICA YRSO

    Sunt luate în considerare problema clasificării documentelor de pe pagina cu rezultatele căutării informațiilor și problemele de învățare automată ale clasificării. Se propune o abordare pentru optimizarea funcției de clasificare utilizând metrica de calitate NOCO bazată pe un algoritm genetic modificat. Cercetarea algoritmilor dezvoltați (pe colecțiile de testare LETO ^ a fost efectuată și a fost demonstrată eficacitatea lor pentru învățarea automată a clasamentului.

    Cuvinte cheie: regăsirea informațiilor, clasarea învățării automate, relevanță, optimizare, algoritmi genetici.

    1. Introducere. În sistemele moderne de recuperare a informațiilor (ISS), volumele de date operate de sistem sunt atât de mari încât sarcina cheie este de a clasifica documentele relevante ca răspuns la interogarea de căutare a unui utilizator. În acest stadiu al dezvoltării ISS, clasamentul machine learning (ML) este de cel mai mare interes. Abordările existente ale ML, bazate pe metode numerice (în special, metode de gradient) sau pe calcule analitice, au o serie de dezavantaje care afectează în mod semnificativ calitatea recuperării informațiilor și timpul necesar pentru clasificarea documentelor relevante.

    La începutul cercetării, au fost luate în considerare abordările de listă pentru clasarea învățării automate, dintre care majoritatea utilizează metoda descendenței gradientului. În lucrările luate în considerare, ML este redus la optimizarea valorilor de calitate a căutării (SEQ), dar sunt utilizate doar valorile reprezentate de funcții continue. Această limitare duce adesea la faptul că, ca rezultat al optimizării, funcția de clasare are scoruri mai mici pentru mulți indicatori importanți acceptați (DCG, nDCG, Grad Reciprocal Mediu Gradat etc.), care sunt funcții discrete. Lucrarea propune utilizarea algoritmilor genetici (GA) în clasamentul de predare pentru a minimiza funcția de pierdere a lui Huber, utilizând evaluări ale experților de relevanță ca valori de referință. De asemenea, a fost propusă o abordare a ML bazată pe optimizarea metricilor discrete ale calității regăsirii informațiilor.

    2. Afirmarea problemei clasamentului învățării automate. În majoritatea sistemelor moderne de recuperare a informațiilor, funcția de clasificare este construită pe baza a n funcții simple de clasificare (PRF) și poate fi scrisă ca:

    unde SRF ¡este a funcția simplă de clasificare pentru documentul d și interogarea q, WCi este coeficientul de greutate al funcției de clasificare simplă, n este numărul de PRF-uri din sistemul de clasare.

    În cursul învățării automate pentru clasare, a fost utilizat un set de documente de căutare B și interogări O din colecția de testare LBTOY. Pentru toate cererile deO, se formează o pereche cu fiecare document deD. Pentru fiecare astfel de pereche, IRS determină valorile de relevanță care sunt utilizate pentru a clasa rezultatele căutării. Pentru a evalua calitatea clasării, sistemul necesită valori de relevanță de referință E pentru fiecare pereche document-interogare ^, e). În aceste scopuri, se utilizează evaluări ale relevanței experților.

    Pentru realizarea studiului, a fost utilizat un ISS, în care clasamentul se face pe baza N = 5 funcții simple de clasificare SRFi (WC) l г = 1, N, care formează un criteriu vector de optimitate:

    unde WCе (WC) este vectorul parametrilor variabili; (ШС), (ЯБ) sunt spațiile parametrilor și, respectiv, ale criteriilor vectoriale.

    Aplicarea algoritmilor genetici pentru clasarea ML face posibilă maximizarea valorilor discrete de calitate, cum ar fi nDCG. Valoarea nDCG pentru clasarea documentelor în motorul de căutare este determinată în conformitate cu expresia:

    DCG @ n = X 2 ---

    RF (q, d) = X WC. ■ SRF., I = 1 1 1

    unde nota (p) este scorul mediu de relevanță acordat de experți documentului situat la poziția p în lista de rezultate, nota; 1 / log2 (2 + p) - coeficient în funcție de poziția documentului (primele documente au mai multă greutate).

    Apoi, versiunea normalizată a NDCG va fi scrisă ca

    N000 @ n = RSD @ n / g,

    unde r este factorul de normalizare, care este egal cu valoarea maximă posibilă 0С [e-mail protejat] n pentru o interogare dată (adică egală cu OOO din clasamentul ideal).

    Astfel, pentru a optimiza (maximiza) metrica OSS, funcția obiectivă (YM) va fi scrisă în următoarea formă

    3. Valori de calitate a clasamentului rezultatelor căutării. La clasarea documentelor în rezultatele căutării, valorile de calitate acționează ca criterii. Din lista valorilor general acceptate pentru evaluarea calității ISS, au fost selectate trei principale care evaluează acuratețea, relevanța și completitudinea recuperării informațiilor.

    1. Criteriul pentru acuratețea recuperării informațiilor

    unde a este numărul de documente relevante găsite, b este numărul de documente confundate cu relevante.

    2. Criteriul Bpref, care evaluează relevanța recuperării informațiilor, este utilizat pentru a procesa un job cu documente relevante R și este calculat prin formula

    Bpref = - ^ (1 - Non Re ¡Before (r) / R). (4)

    Aici, r denotă un document relevant cunoscut și NonRelBefore (r) - numărul de documente irelevante cunoscute clasat mai mare decât r (numai primul R al documentelor irelevante estimate din cursă este luat în calcul în calcul).

    3. Criteriul de completitudine a rezultatelor căutării

    r = a / (a ​​+ c),

    unde a este numărul de documente relevante găsite, c este numărul de documente relevante care nu au fost găsite.

    4. Testează colecțiile. Într-o sarcină de învățare automată, clasarea necesită un set de documente și interogări cu scoruri de relevanță corespunzătoare determinate de experți. Aceste date sunt utilizate pentru învățarea automată a funcției de clasare, precum și pentru evaluarea calității.

    clasarea rezultatelor căutării de către sistem. În procesul ML, colecțiile de testare sunt utilizate ca set de instruire și, prin urmare, au un impact semnificativ asupra rezultatelor. O cercetare a folosit o colecție de documente și solicitări LETOR. Această colecție este utilizată pentru cercetarea de recuperare a informațiilor de către Microsoft Research. Masa 1 prezintă caracteristicile colecțiilor de testare LETOR.

    5. Algoritm genetic modificat. Pentru a utiliza algoritmi genetici în învățarea automată pentru clasificare, problema trebuie formulată în așa fel încât soluția să fie codificată ca vector (genotip), unde fiecare genă poate fi un bit, un număr sau un alt obiect. În acest caz, genotipul este reprezentat de un vector de factori de ponderare pentru factorii de clasificare corespunzători. Condiția pentru oprirea executării algoritmului genetic este găsirea soluției optime, epuizarea numărului de generații sau timpul alocat pentru evoluție.

    Trebuie remarcat faptul că GA sunt cele mai eficiente în căutarea regiunii extremumului global, cu toate acestea, ele pot funcționa încet atunci când este necesar să se găsească un minim local în această regiune. Modul propus de a evita acest dezavantaj este de a crea un algoritm genetic modificat (MGA), care va trece la un algoritm de optimizare local (de mare viteză) după ce a găsit regiunea optimă globală utilizând GA de bază. MGA propus este o metodă hibridă bazată pe GA clasică și metoda Nelder - Mead (algoritmul simplex). Metoda Nelder - Mead, un algoritm de optimizare neliniar utilizat frecvent, este o metodă numerică pentru găsirea minimului unei funcții obiective într-un spațiu multidimensional. Algoritmul hibrid MGA propus în această lucrare trece la metoda Nelder - Mead după ce sunt îndeplinite condițiile pentru oprirea GA. O diagramă bloc a algoritmului MGA este prezentată în Fig. unu.

    La efectuarea cercetării, a fost acceptată o limitare a numărului de calcule ale funcției obiective (Nrf = 16.000) la căutarea regiunii globale extrem și a condiției pentru trecerea la un algoritm local de optimizare bazat pe metoda Nelder - Mead (după algoritmul genetic de bază a efectuat 75% din operațiile Nrf).

    6. Rezultate. Ca urmare a cercetărilor efectuate utilizând algoritmul de învățare automată

    tabelul 1

    Numărul de documente și interogări din colecțiile de testare

    Numele colecției de testare Numele subsistemului Numărul de cereri Numărul de documente

    LETOR 4.0 MQ2007 1692 69623

    LETOR 4.0 MQ2008 784 15211

    LETOR 3.0 SUMAT 106 16140

    LETOR 3.0 Gov03td 50 49058

    LETOR 3.0 Gov03np 150 148657

    LETOR 3.0 Gov03cp 150 147606

    LETOR 3.0 Gov04td 75 74146

    LETOR 3.0 Gov04np 75 73834

    LETOR 3.0 Gov04hp 75 74409

    Orez. 1. Diagrama bloc a algoritmului hibrid MVL bazat pe algoritmi genetici și metoda Nelder-Mead

    Pentru a clasa LTR-MGA, se obține un vector de greutăți WC * pentru funcția de clasare. Mai mult, pe baza datelor din colecția de testare LETOYA, a fost evaluată calitatea clasamentului, pentru care s-au calculat valori de calitate. Metrică discretă a calității clasamentului [e-mail protejat] evaluează calitatea primelor n documente ale răspunsului sistemului. Valorile general acceptate pentru evaluarea calității clasamentului sunt [e-mail protejat], [e-mail protejat]și [e-mail protejat] Cu toate acestea, pentru o analiză mai detaliată a modificărilor valorii în funcție de valori [e-mail protejat] pentru toate n de la 1 la 10. Pentru a compara eficacitatea algoritmului dezvoltat cu soluțiile existente, a fost efectuată o analiză comparativă utilizând algoritmii de clasificare furnizați în colecțiile LETOIA 3.0. Rezultatele rulării algoritmilor pentru colecțiile de teste TB2003 și TB2004 pentru metrica NDCG sunt prezentate în Fig. 2. Rezultatele arată că algoritmul LTR-MGA depășește algoritmii de testare, cele mai mari valori fiind

    sunt pentru [e-mail protejat](la nivelul primului document). Superioritatea algoritmului LTR-MGA se datorează faptului că, spre deosebire de funcțiile de clasare a testelor luate în considerare în experimente, în abordarea propusă pentru optimizarea funcției de clasificare, metrica NDCG este cea utilizată ca funcție obiectivă.

    Pentru a evalua calitatea clasamentului atunci când se utilizează algoritmul LTR-MGA propus, au fost calculate valorile metricilor de calitate pentru clasarea documentelor în rezultatele căutării (Fig. 3). Compararea rezultatelor clasamentului (Tabelul 2) atunci când se utilizează funcția de clasificare de bază, algoritmul de bază LTR-GA și algoritmul LTR-MGA modificat indică avantajul acestuia din urmă.

    În plus, studiul a estimat timpul necesar pentru clasarea MO. Acest lucru este necesar pentru a confirma că metoda LTR-MGA propusă este superioară în acest indicator abordării bazate pe utilizarea tradițională

    Orez. 2. Compararea algoritmilor de învățare automată pentru clasare

    de metrica NDCG pentru colecțiile de teste: în stânga - setul de date Gov03td, în dreapta - setul de date Gov04td

    Orez. 3. Evaluarea măsurătorilor de calitate a clasificării pentru formula de bază a clasamentului și algoritmii de învățare LTR-GA și LTR-MGA

    Clasarea valorilor de calitate pentru diferiți algoritmi de învățare automată a clasamentului

    masa 2

    Clasarea metricii de calitate Funcția de clasare de bază LTR-GA LTR-MGA Creșterea valorii metrice,%

    Precizie 0,201 0,251 0,267 26,81

    [e-mail protejat](primele 5 documente) 0,149 0,31 0,339 90,47

    [e-mail protejat](primele 10 documente) 0,265 0,342 0,362 29,14

    Bpref 0.303 0.316 0.446 51.49

    Completitudine 0,524 0,542 0,732 39,03

    * Cele mai bune valori pentru valoarea corespunzătoare sunt evidențiate în gri

    onnogo algoritm genetic (LTA-OL). Rezultatele comparării timpului petrecut în executarea algoritmilor LТЯ-OL și LТЯ-MOL sunt prezentate în tabel. 3.

    7. Concluzie. Astfel, studiile efectuate au arătat că, atunci când se utilizează abordarea propusă, valorile metricelor de clasificare considerate în ISS cresc (în medie cu 19,55% comparativ cu algoritmul LTS-OL). Acest lucru confirmă faptul că LITA-MOL funcționează corect și îmbunătățește semnificativ funcția de clasare, cu alte cuvinte, rezolvă cu succes problema de optimizare. Folosind un algoritm modificat

    Datorită aplicării metodei de optimizare locală și restricțiilor introduse asupra numărului de calcule ale funcției obiective, timpul de învățare automată a scăzut (în medie cu 17,71% comparativ cu utilizarea algoritmului genetic tradițional LTIAOL).

    Algoritmul de învățare automată dezvoltat pentru clasarea LТY-MOL poate fi utilizat în ISS care utilizează un model de clasificare bazat pe o combinație de funcții simple de clasare. Cu toate acestea, ar trebui luate în considerare unele limitări ale aplicării abordării propuse. Bazat

    Estimarea timpului de execuție a clasamentului de învățare automată în funcție de mărimea eșantionului de antrenament

    Tabelul 3

    Dimensiunea colecției de documente text

    Timp de execuție LTR-GA

    Runtime LTR-MGA

    Reducerea timpului de execuție,%

    Valoarea medie

    * Cele mai bune valori pentru dimensiunea corespunzătoare a colecției de testare sunt evidențiate în gri

    din rezultatele obținute, s-a dezvăluit că după MO, cea mai mare creștere se observă în metrica de calitate a clasamentului, a cărei valoare a fost luată ca funcție obiectivă. În același timp, este posibil ca restul valorilor să nu aibă o îmbunătățire semnificativă și, în unele cazuri, chiar să își înrăutățească valorile. Ca una dintre posibilele abordări pentru eliminarea acestei deficiențe, se propune rezolvarea problemei de optimizare ca fiind una cu mai multe criterii: îmbunătățirea uniformă a mai multor valori principale ale rezultatelor căutării, în loc de optimizarea unuia. În plus, în studiile ulterioare, este planificată dezvoltarea unei metodologii pentru construirea unei funcții obiective bazată pe o convoluție liniară a principalelor metrici de calitate pentru a îmbunătăți procesul de recuperare a informațiilor.

    Lista bibliografică

    1. Tie-Yan Liu. Învățarea clasamentului pentru recuperarea informațiilor // Fundamentele jurnalului și tendințele în recuperarea informațiilor. Vol. 3, numărul 3. Martie 2009. P. 225-331.

    2. Christopher J. C. Burges, Tal Shaked, Erin Renshaw. Learning to Rank using Gradient Descent // Proceeding ICML "05 Proceedings of the 22nd international conference on Machine learning. 2005. P. 89-96.

    3. Semenikhin, S. V. Investigația abordărilor de învățare automată pentru clasarea documentelor printr-un sistem de căutare bazat pe algoritmi genetici / S. V. Semenikhin // Rusia tânără: tehnologii avansate în industrie. - 2013. - Nr. 2. - P. 82 - 85.

    4. Optimizarea multicriteriilor bazată pe algoritmi genetici în sinteza sistemelor de control: monografie. / L. A. Denisova. - Omsk: Editura OmSTU, 2014 .-- 170 p. - ISBN 978-5-8149-1822-2.

    5. Denisova, L. A. Automatizarea sintezei parametrice a sistemului de control folosind un algoritm genetic / L. A. Denisova, V. A. Meshcheryakov // Automation in industry. - 2012. - Nr. 7. - P. 34 - 38.

    6. Huber, Peter J. Robust Estimation of a Location Parameter // Annals of Statistics. - 1964. - Nr. 53. - P. 73-101.

    7. Semenikhin, S. V. Automatizarea recuperării informațiilor bazate pe optimizarea multicriteriilor și algoritmi genetici / S. V. Semenikhin, L. A. Denisova // Dinamica sistemelor, mecanismelor și mașinilor. - 2014. - Nr. 3. - P. 224 - 227.

    8. Tie-Yan Liu, Jun Xu, Tao Qin, Wenying Xiong și Hang Li. LETOR: Benchmark Dataset for Research on Learning to Rank for Information Retrieval // SIGIR 2007 Workshop on Learning to Rank for Information Retrieval. - 2007 .-- S. 3-10.

    9. Ageev, MS Metrici oficiale ale RMIP "2004 / MS Ageev, IE Kuralenok // II seminar rus despre evaluarea metodelor de recuperare a informațiilor (ROMIP 2004), Pushchino, 2004: tr .; Ed. S. Nekrest'yanova. - Sankt Petersburg: Institutul de Cercetare a Chimiei, Universitatea de Stat din Sankt Petersburg - P. 142-150.

    10. J. A. Nelder, R. Mead, A simplex method for function minimization, The Computer Journal 7 (1965). 308-313.

    Svyatoslav Vitalievich SEMENIKHIN, student postuniversitar al Departamentului de Procesare Informațională Automată și Sisteme de Control. Adresa de corespondenta: [e-mail protejat] DENISOVA Lyudmila Albertovna, doctor în științe tehnice, profesor asociat al Departamentului de procesare automată a informațiilor și sisteme de control. Adresa de corespondenta: [e-mail protejat]