Millaista muistamisen ja tarkkuuden pitäisi olla? Universaali lähestymistapa (melkein) kaikkiin koneoppimisongelmiin. Koulutus- ja testisetti

Koneoppimistehtävissä mittareilla arvioidaan mallien laatua ja vertaillaan erilaisia ​​algoritmeja, ja niiden valinta ja analysointi on välttämätön osa datatieteilijän työtä.

Tässä artikkelissa tarkastellaan joitakin luokitteluongelmien laatukriteerejä, keskustellaan siitä, mikä on tärkeää mittaria valittaessa ja mikä voi mennä pieleen.

Mittarit luokitteluongelmissa

Esittelemään hyödyllisiä ominaisuuksia sklearn ja mittareiden visuaalinen esitys, käytämme tietojoukkoamme teleoperaattoreiden asiakkaiden ulosvirtauksesta, jonka tapasimme kurssin ensimmäisessä artikkelissa.

Ladataan tarvittavat kirjastot ja katsotaan tietoja

Tuo pandat pd-muodossa import matplotlib.pyplot-muodossa plt osoitteesta matplotlib.pylab import rc, plot tuonti seaborn-muodossa sns-tiedostosta sklearn.preprocessing import LabelEncoder, OneHotEncoder kohteesta sklearn.model_selection import cross_val_score from sklearn.linear_model from sklearn.linear_model from sklearn.linear_model from sklearn ostingClassifier kohteesta sklearn.metrics import precision_recall_curve, classification_report from sklearn.model_selection tuonti train_test_split df = pd.read_csv("../../data/telecom_churn.csv")

Df.head(5)


Tietojen esikäsittely

# Kartoitetaan binäärisarakkeet # ja koodataan henkilökunta valekoodauksella (yksinkertaisuuden vuoksi on parempi olla tekemättä tätä puumalleille) d = ("Kyllä" : 1, "Ei" : 0) df["Kansainvälinen suunnitelma" ] = df[" Kansainvälinen suunnitelma"].map(d) df["Voice mail plan"] = df["Puhepostisuunnitelma"].map(d) df["Churn"] = df["Churn"]. astype("int64" ) le = LabelEncoder() df["Tila"] = le.fit_transform(df["Tila"]) ohe = OneHotEncoder(sparse=False) encoded_state = ohe.fit_transform(df["Tila"]. arvot.reshape(- 1, 1)) tmp = pd.DataFrame(koodattu_tila, sarakkeet=["tila " + str(i) i:lle alueella(koodattu_tila.muoto)]) df = pd.concat(, axis=1 )

Tarkkuus, tarkkuus ja muistaminen

Ennen kuin siirrytään itse mittareihin, on tarpeen ottaa käyttöön tärkeä käsite näiden mittareiden kuvaamiseksi luokitteluvirheiden kannalta - sekaannusmatriisi(virhematriisi).
Oletetaan, että meillä on kaksi luokkaa ja algoritmi, joka ennustaa jokaisen objektin kuuluvan johonkin luokista, niin luokitteluvirhematriisi näyttää tältä:

Tosi positiivinen (TP) Väärin positiivinen (FP)
Väärä negatiivinen (FN) Todellinen negatiivinen (TN)

Tässä on algoritmin vastaus objektiin, ja se on tämän objektin todellinen luokkatunniste.
Luokitusvirheitä on siis kahta tyyppiä: väärä negatiivinen (FN) ja väärä positiivinen (FP).

Algoritmin koulutus ja virhematriisin rakentaminen

X = df.drop("Churn", axis=1) y = df["Churn"] # Jaa näyte junaan ja testaa, kaikki mittarit arvioidaan testitietojoukossa X_train, X_test, y_train, y_test = train_test_split( X, y , stratify=y, test_size=0.33, random_state=42) # Harjoita natiivi logistinen regressio lr = LogisticRegression(random_state=42) lr.fit(X_train, y_train) # Käytä virhematriisin rakennusfunktiota sklearn-dokumentaatiosta def plot_confusion_confusion_def plot_confusion (cm, classes , normalise=False, title="Sekaannusmatriisi", 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="Sekaannusmatriisi") plt.savefig("conf_matrix.png") plt.show()!}


Tarkkuus

Intuitiivinen, ilmeinen ja lähes käyttämätön mittari on tarkkuus - algoritmin oikeiden vastausten osuus:

Tämä mittari on hyödytön epätasaisten luokkien ongelmissa, ja tämä on helppo osoittaa esimerkillä.

Oletetaan, että haluamme arvioida roskapostisuodattimen tehokkuutta. Meillä on 100 ei-roskapostisähköpostia, joista 90 luokittelijamme tunnisti oikein (tosi negatiivinen = 90, väärä positiivinen = 10) ja 10 roskapostia, joista 5 luokitin tunnisti myös oikein (tosi positiivinen = 5, väärä negatiivinen = 5 ) .
Sitten tarkkuus:

Jos kuitenkin ennustamme kaikki sähköpostit ei-roskapostiksi, saamme paremman tarkkuuden:

Samaan aikaan mallillamme ei ole lainkaan ennustusvoimaa, koska halusimme alun perin tunnistaa roskapostit. Siirtyminen kaikkien luokkien yhteisestä mittarista yksittäisiin luokan laadun indikaattoreihin auttaa meitä voittamaan tämän.

Tarkkuus, palautus ja F-mitta

Algoritmin työn laadun arvioimiseksi kussakin luokassa erikseen otamme käyttöön metriikan tarkkuuden (tarkkuus) ja muistamisen (täydellisyys).

Tarkkuus voidaan tulkita luokittelijan positiivisiksi kutsumien ja todellisuudessa positiivisten kohteiden osuutena, ja palautus osoittaa, kuinka paljon positiivisen luokan kohteita kaikista positiivisen luokan objekteista algoritmi löysi.

Juuri tarkkuuden käyttöönotto ei salli meidän kirjoittaa kaikkia objekteja yhteen luokkaan, koska tässä tapauksessa saamme lisäyksen Väärä positiivinen taso. Recall osoittaa algoritmin kyvyn havaita tietty luokka yleisesti, ja tarkkuus osoittaa kyvyn erottaa tämä luokka muista luokista.

Kuten aiemmin totesimme, luokitusvirheitä on kahdenlaisia: väärä positiivinen ja väärä negatiivinen. Tilastoissa ensimmäistä virhetyyppiä kutsutaan tyypin I virheeksi ja toista tyypin II virheeksi. Tehtävässämme tilaajan vaihtuvuuden määrittämisessä ensimmäisen tyyppinen virhe on se, että uskollinen tilaaja sekoitetaan lähtevään tilaajaan, koska nollahypoteesimme on, että kukaan tilaajista ei poistu, ja hylkäämme tämän hypoteesin. Vastaavasti toisen tyyppinen virhe on lähtevän tilaajan "puuttuminen" ja nollahypoteesin virheellinen hyväksyminen.

Tarkkuus ja muistaminen, toisin kuin tarkkuus, eivät riipu luokkasuhteesta ja ovat siksi sovellettavissa epätasapainoisten näytteiden olosuhteissa.
Usein tosikäytännössä tehtävänä on löytää (asiakkaalle) optimaalinen tasapaino näiden kahden mittarin välillä. Klassinen esimerkki on asiakkaan vaihtuvuuden määrittäminen.
Ilmeisesti emme löydä kaikille asiakkaiden vaihtuvuus ja vain heidän. Mutta kun olemme määrittäneet strategian ja resurssit asiakkaiden säilyttämiseksi, voimme valita tarvittavat kynnykset tarkkuudelle ja takaisinkutsulle. Saatamme esimerkiksi keskittyä säilyttämään vain korkeatuottoiset asiakkaat tai ne, jotka todennäköisemmin vaimentavat, koska puhelinkeskuksemme resurssit ovat rajalliset.

Yleensä algoritmin hyperparametreja optimoitaessa (esimerkiksi ruudukkohaun tapauksessa GridSearchCV) käytetään yhtä mittaria, jonka parannuksen odotamme näkevän testinäytteessä.
On olemassa useita eri tapoja yhdistää tarkkuus ja muistaminen kokonaislaatumittaaksi. F-mitta (yleensä) - harmonisen keskiarvon tarkkuus ja palautus:

Tässä tapauksessa se määrittää tarkkuuden painon metriikassa, ja tämä on harmoninen keskiarvo (kertoimella 2, joten tarkkuus = 1 ja palautus = 1)
F-mitta saavuttaa maksiminsa, kun palautus ja tarkkuus ovat yhtä, ja se on lähellä nollaa, jos jokin argumenteista on lähellä nollaa.
sklearnissä on kätevä funktio nimeltä _metrics.classification raportti palauttaa palautus, tarkkuus ja F-mitta jokaiselle luokalle sekä kunkin luokan esiintymien lukumäärä.

Raportti = classification_report(y_test, lr.predict(X_test), target_names=["Ei-vaihdettu", "Curned"]) tulosta(raportti)

luokkaa tarkkuutta palauttaa mieleen f1-pisteet tuki
Kääntämätön 0.88 0.97 0.93 941
Pyöritetty 0.60 0.25 0.35 159
keskiarvo/yhteensä 0.84 0.87 0.84 1100

Tässä on huomioitava, että epätasapainoisten luokkien ongelmissa, jotka vallitsevat todellisessa käytännössä, on usein tarpeen turvautua keinotekoisiin tietojoukon muokkaustekniikoihin luokkasuhteen tasaamiseksi. Niitä on monia, emmekä käsittele niitä, voit tarkastella joitain menetelmiä ja valita tehtävällesi sopivan.

AUC-ROC ja AUC-PR

Kun algoritmin todellinen vastaus (yleensä luokkajäsenyyden todennäköisyys, katso SVM erikseen) muunnetaan binääritunnisteeksi, on valittava jokin kynnys, jossa 0:sta tulee 1. Kynnys 0,5 näyttää luonnolliselta ja läheltä, mutta se ei aina käy ilmi. olla optimaalinen esimerkiksi edellä mainitussa luokkatasapainon puutteessa.

Yksi tapa arvioida mallia kokonaisuutena ilman, että se on sidottu tiettyyn kynnykseen on AUC-ROC (tai ROC AUC) - alue ( A rea U nder C urve) virhekäyrän alla ( R vastaanotin O perating C ominaiskäyrä). Tämä käyrä on suora (0.0) - (1.1) todellisen positiivisen nopeuden (TPR) ja väärän positiivisen nopeuden (FPR) koordinaateissa:

TPR on meille jo tiedossa, se on täydellisyyttä, ja FPR näyttää kuinka osuuden negatiivisen luokan objekteista algoritmi ennusti väärin. Ihannetapauksessa, kun luokitin ei tee virheitä (FPR = 0, TPR = 1), saamme käyrän alapuolisen alueen yhtä suureksi kuin yksi; muuten, kun luokitin antaa satunnaisesti luokkatodennäköisyyksiä, AUC-ROC pyrkii arvoon 0,5, koska luokitin tulostaa saman määrän TP:itä ja FP:itä.
Jokainen kaavion piste vastaa tietyn kynnyksen valintaa. Käyrän alla oleva pinta-ala näyttää tässä tapauksessa algoritmin laadun (enemmän on parempi), lisäksi itse käyrän jyrkkyys on tärkeä - haluamme maksimoida TPR:n minimoimalla FPR:n, mikä tarkoittaa, että käyrämme tulisi mieluiten pyrkiä piste (0,1).

ROC-käyrän piirustuskoodi

Sns.set(font_scale=1.5) sns.set_color_codes("mykistetty") 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="ROC curve ") plt.plot(, ) plt.xlim() plt.ylim() plt.xlabel("Väärä positiivinen määrä ") plt.ylabel("Todellinen positiivinen korko") plt.title("ROC-käyrä") plt.savefig("ROC.png") plt.show()


AUC-ROC-kriteeri on kestävä epätasapainoisille luokille (spoileri: valitettavasti kaikki ei ole niin yksinkertaista) ja se voidaan tulkita todennäköisyydeksi, että satunnaisesti valittu positiivinen objekti sijoittuu korkeammalle luokittimessa (sillä on suurempi todennäköisyys olla positiivinen ) kuin satunnaisesti valittu negatiivinen objekti.

Harkitse seuraavaa ongelmaa: Meidän on valittava 100 asiaankuuluvaa asiakirjaa 1 miljoonasta asiakirjasta. Kehitimme kaksi algoritmia:

  • Algoritmi 1 palauttaa 100 asiakirjaa, joista 90 on olennaisia. Täten,
  • Algoritmi 2 palauttaa 2000 asiakirjaa, joista 90 on olennaisia. Täten,

Todennäköisimmin valitsisimme ensimmäisen algoritmin, joka tuottaa hyvin vähän vääriä positiivisia verrattuna kilpailijaansa. Mutta ero näiden kahden algoritmin välillä on väärä positiivinen määrä erittäin pieni - vain 0,0019. Tämä johtuu siitä, että AUC-ROC mittaa väärän positiivisen osuutta suhteessa tosi negatiiviseen ja tehtävissä, joissa toinen (isompi) luokka ei ole meille niin tärkeä, se ei välttämättä anna täysin riittävää kuvaa algoritmeja vertailtaessa.

Tilanteen korjaamiseksi palataan täydellisyyteen ja tarkkuuteen:

  • Algoritmi 1
  • Algoritmi 2

Tässä on jo huomattava ero näiden kahden algoritmin välillä - 0,855 täsmälleen!

Tarkkuutta ja palauttamista käytetään myös käyrän piirtämiseen ja AUC-ROC:n tapaan sen alla olevan alueen etsimiseen.


Tässä voidaan todeta, että pienillä aineistoilla PR-käyrän alla oleva pinta-ala voi olla liian optimistinen, koska se lasketaan puolisuunnikkaan menetelmällä, mutta yleensä tällaisissa ongelmissa dataa on riittävästi. Lisätietoja AUC-ROC- ja AUC-PR-suhteesta on täällä.

Logistinen menetys

Logistinen menetysfunktio erottuu toisistaan, ja se määritellään seuraavasti:

tässä on algoritmin vastaus -:nnelle objektille, todellinen luokkatunniste -:nnelle objektille ja otoskoko.

Logistisen häviöfunktion matemaattinen tulkinta on jo kirjoitettu yksityiskohtaisesti lineaarisia malleja käsittelevässä postauksessa.
Tämä mittari näkyy harvoin liiketoimintavaatimuksissa, mutta usein kaggle-tehtävissä.
Intuitiivisesti voidaan ajatella logloss-minimointia tarkkuuden maksimoimisen ongelmana rankaisemalla vääriä ennusteita. On kuitenkin huomattava, että logloss rankaisee voimakkaasti luokittelijan luottamusta väärään vastaukseen.

Katsotaanpa esimerkkiä:

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("Loglossi epävarmassa luokituksessa %f " % logloss_crutch(1, 0.5)) >> Logloss epävarmalla luokittelulla 0.693147 print("Logloss luotettavalla luokittelulla ja oikealla vastauksella %f" % logloss_crutch(1, 0.9)) >> Logloss varma luokittelu ja oikea vastaus 0.105361 print(" Logloss varma luokittelu ja VÄÄRÄ vastaus %f" % logloss_crutch(1, 0.1)) >> Logloss varma luokittelu ja VÄÄRÄ vastaus 2.302585

Huomaa, kuinka dramaattisesti logloss lisääntyi väärän vastauksen ja varman luokituksen myötä!
Tämän seurauksena virhe yhdessä objektissa voi johtaa näytteen kokonaisvirheen merkittävään heikkenemiseen. Tällaiset kohteet ovat usein poikkeavia, jotka on muistettava suodattaa tai tarkastella erikseen.
Kaikki loksahtaa paikoilleen, jos piirrät logloss-kaavion:


Voidaan nähdä, että mitä lähempänä nollaa algoritmin vastaus on pohjatotuus = 1, sitä suurempi on virhearvo ja sitä jyrkemmäksi käyrä kasvaa.

Tehdään yhteenveto:

  • Moniluokkaisen luokituksen tapauksessa sinun on seurattava huolellisesti kunkin luokan mittareita ja noudatettava ratkaisun logiikkaa tehtäviä, ei metrien optimointia
  • Epätasaisten luokkien tapauksessa sinun on valittava koulutuksen luokkien tasapaino ja mittari, joka kuvastaa oikein luokituksen laatua
  • mephistopheies ja madrugado heidän avustaan ​​artikkelin valmistelussa.

Valmistellessamme tehtävää GoTo-kesäkoulun pääsykokeeseen havaitsimme, että venäjän kielellä ei käytännössä ollut laadullista kuvausta tärkeimmistä rankingmittareista (tehtävä koski ranking-ongelman erikoistapausta - suositusalgoritmin rakentamista) . Me E-Contentalla käytämme aktiivisesti erilaisia ​​sijoitusmittareita, joten päätimme korjata tämän väärinkäsityksen kirjoittamalla tämän artikkelin.

Ranking-tehtävä syntyy nyt kaikkialla: verkkosivujen lajittelu tietyn hakukyselyn mukaan, uutissyötteen personointi, videoiden, tuotteiden, musiikin suositteleminen... Sanalla sanoen aihe on kuuma. Koneoppimisessa on jopa erityinen suunta, joka tutkii itseoppimiseen kykeneviä rankingalgoritmeja - oppia luokittelemaan. Jotta voit valita parhaan algoritmien ja lähestymistapojen joukosta, sinun on pystyttävä arvioimaan niiden laatu kvantitatiivisesti. Yleisimmät sijoituksen laatumittaukset käsitellään tarkemmin.

Lyhyesti ranking-tehtävästä

Järjestys on joukon lajittelun ongelma elementtejä heidän syistään merkityksellisyys. Useimmiten merkityksellisyys ymmärretään suhteessa johonkin esine. Esimerkiksi tiedonhakutehtävässä kohde on pyyntö, elementit ovat kaikenlaisia ​​dokumentteja (linkkejä niihin), ja relevanssi on dokumentin vastaavuus suositustehtävässä olevaan pyyntöön, objekti on käyttäjä , elementit ovat tämä tai tuo suositeltu sisältö (tuotteet, videot, musiikki ), ja osuvuus on todennäköisyys, että käyttäjä käyttää (ostaa/tykkää/katso) annettua sisältöä.

Tarkastellaan muodollisesti N objektia ja M elementtiä. Objektin elementtien järjestysalgoritmin toiminnan tulos on kartoitus, joka liittää jokaisen elementin painoon, joka kuvaa elementin relevanssia objektiin (mitä suurempi paino, sitä merkityksellisempi objekti). Tässä tapauksessa painojen joukko määrittää elementtijoukolle permutaatiota (oletetaan, että elementtijoukko on järjestetty) perustuen niiden lajitteluun laskevassa painossa.

Luokituksen laadun arvioimiseksi tarvitaan jokin "standardi", johon algoritmin tuloksia voidaan verrata. Tarkastellaan - referenssirelevanssifunktiota, joka kuvaa elementtien "todellista" relevanssia tietylle objektille ( - elementti on ihanteellinen, - täysin epäolennainen), sekä vastaava permutaatio (laskevassa järjestyksessä).

On kaksi päätapaa vastaanottaa:
1. Perustuu historiallisiin tietoihin. Esimerkiksi sisältösuosituksissa voit ottaa käyttäjän katselukerrat (tykkäykset, ostokset) ja määrittää katseltujen kohteiden painot arvoon 1 () ja kaikkien muiden - 0.
2. Perustuu asiantuntija-arvioon. Esimerkiksi hakutehtävässä jokaiseen pyyntöön voit ottaa mukaan arvioijaryhmän, joka arvioi manuaalisesti asiakirjojen merkityksen pyynnön kannalta.

On syytä huomata, että kun se ottaa vain ääriarvot: 0 ja 1, järjestelyä ei yleensä oteta huomioon, vaan vain se joukko asiaankuuluvia elementtejä otetaan huomioon.

Luokittelun laatumittarin tarkoitus- selvittää, missä määrin algoritmin ja vastaavan permutoinnin saamat relevanssipisteet vastaavat totta relevanssiarvot. Katsotaanpa tärkeimpiä mittareita.

Keskimääräinen keskimääräinen tarkkuus

Keskimääräinen keskimääräinen tarkkuus kohdassa K (map@K) on yksi yleisimmin käytetyistä ranking-laatumittareista. Ymmärtääksemme, miten se toimii, aloitetaan "perusasioista".

Huomautus: "*tarkkuus"-metriikkaa käytetään binääritehtävissä, joissa se ottaa vain kaksi arvoa: 0 ja 1.

Tarkkuus K

Tarkkuus K (p@K)- tarkkuus K-elementeissä - perusmittari yhden objektin laadun luokitteluun. Oletetaan, että sijoitusalgoritmimme tuottaa osuvuuspisteet jokaiselle tuotteelle. Valitsemalla ensimmäiset elementit, joista suurin on, voit laskea osuvien osuuden. Juuri näin K:n tarkkuus tekee:

Huomaa: tarkoitamme elementtiä, joka uudelleenjärjestelyn seurauksena päätyi -:nteen asemaan. Joten, - suurin elementti, - toiseksi suurin elementti ja niin edelleen.

Keskimääräinen tarkkuus K

Tarkkuus K:ssä on mittari, joka on helppo ymmärtää ja toteuttaa, mutta jolla on tärkeä haittapuoli - se ei ota huomioon elementtien järjestystä "ylhäällä". Joten jos kymmenestä elementistä arvasimme vain yhden, ei ole väliä missä paikassa se oli: ensimmäisessä vai viimeisessä, joka tapauksessa. On selvää, että ensimmäinen vaihtoehto on paljon parempi.

Tätä haittaa lieventää sijoitusmittari keskimääräinen tarkkuus K (ap@K), joka on yhtä suuri kuin summa p@k indeksien k välillä 1 - K vain asiaankuuluville elementeille, jaettuna K:lla:

Joten jos kolmesta elementistä vain viimeisellä sijalla oleva osoittautui merkitykselliseksi, niin , jos arvasimme vain ensimmäisen, niin , ja jos arvasimme ne kaikki, niin .

Nyt voimme hoitaa myös map@K:n.

Keskimääräinen keskimääräinen tarkkuus kohdassa K

Keskimääräinen keskimääräinen tarkkuus K (kartta@K)- yksi yleisimmin käytetyistä ranking-laatumittareista. P@K:ssa ja ap@K:ssa sijoituksen laatu arvioidaan yhdelle objektille (käyttäjä, hakukysely). Käytännössä objekteja on monia: käsittelemme satoja tuhansia käyttäjiä, miljoonia hakukyselyitä jne. map@K:n ideana on laskea ap@K jokaiselle kohteelle ja keskiarvolle:

Huomaa: tämä ajatus on varsin looginen, jos oletetaan, että kaikki käyttäjät ovat yhtä tärkeitä ja yhtä tärkeitä. Jos näin ei ole, yksinkertaisen keskiarvon sijaan voit käyttää painotettua keskiarvoa, joka kertoo kunkin kohteen ap@K sen "tärkeyttä" vastaavalla painolla.

Normalisoitu diskontattu kumulatiivinen voitto

Normalisoitu diskontattu kumulatiivinen voitto (nDCG) on toinen yleinen sijoituksen laatumittari. Kuten map@K:n kanssa, aloitetaan perusasioista.

Kumulatiivinen voitto K

Katsotaanpa uudelleen yhtä objektia ja elementtejä, joilla on suurin . Kumulatiivinen voitto K (CG@K)- perussijoitusmittari, joka käyttää yksinkertaista ideaa: mitä osuvampia tämän topin elementit ovat, sitä parempi:

Tällä mittarilla on ilmeisiä haittoja: sitä ei ole normalisoitu eikä se ota huomioon asiaankuuluvien elementtien sijaintia.

Huomaa, että toisin kuin p@K, CG@K:ta voidaan käyttää myös ei-binäärirelevanssin viitearvojen tapauksessa.

Alennettu kumulatiivinen voitto K

Diskontoitu kumulatiivinen voitto K:ssa (DCG@K)- kumulatiivisen vahvistuksen muutos kohdassa K, ottaen huomioon luettelon elementtien järjestys kertomalla elementin relevanssi painolla, joka on yhtä suuri kuin paikkanumeron käänteinen logaritmi:

Huomaa: jos se ottaa vain arvot 0 ja 1, niin , ja kaava on yksinkertaisempi:

Logaritmin käyttö diskonttausfunktiona voidaan selittää seuraavilla intuitiivisilla näkökohdilla: sijoituksen kannalta listan alussa olevat paikat eroavat paljon enemmän kuin listan lopussa olevat paikat. Joten hakukoneen kohdalla on kokonainen kuilu paikkojen 1 ja 11 välillä (vain muutamassa tapauksessa sadasta käyttäjä menee pidemmälle kuin hakutulosten ensimmäinen sivu) ja paikkojen 101 ja 11 välillä. 111 ei ole paljon eroa - harvat ihmiset tavoittavat heidät. Nämä subjektiiviset huomiot ilmaistaan ​​hienosti logaritmilla:

Diskontoitu kumulatiivinen voitto ratkaisee asiaankuuluvien elementtien sijainnin huomioon ottamista koskevan ongelman, mutta vain pahentaa ongelmaa normalisoinnin puutteella: jos se vaihtelee sisällä, se ottaa jo arvoja segmentiltä, ​​joka ei ole täysin selvä. Seuraava mittari on suunniteltu ratkaisemaan tämä ongelma

Normalisoitu diskontattu kumulatiivinen voitto K

Kuten nimestä voi päätellä, normalisoitu diskontattu kumulatiivinen voitto K:ssa (nDCG@K)- ei muuta kuin normalisoitu versio DCG@K:sta:

missä on suurin (I - ihanteellinen) arvo. Koska sovimme, että se ottaa arvot sisään, niin .

Siten se perii ottamalla huomioon elementtien sijainnin luettelossa ja ottaa samalla arvot välillä 0-1.

Huomaa: analogisesti map@K:n kanssa voit laskea :n, joka lasketaan kaikkien kohteiden keskiarvosta.

Keskimääräinen vastavuoroinen arvo

Keskimääräinen vastavuoroinen sijoitus (MRR) on toinen usein käytetty sijoituksen laatumittari. Se annetaan seuraavalla kaavalla:

Missä - vastavuoroinen arvo th-objektille - pohjimmiltaan hyvin yksinkertainen arvo, joka on yhtä suuri kuin ensimmäisen oikein arvatun elementin käänteinen järjestys.

Keskimääräinen vastavuoroinen sijoitus vaihtelee vaihteluvälillä ja ottaa huomioon elementtien sijainnin. Valitettavasti hän tekee tämän vain yhdelle elementille - ensimmäiselle oikein ennustetulle, kiinnittämättä huomiota kaikkiin seuraaviin.

Sijoituskorrelaatioon perustuvat mittarit

Erikseen kannattaa korostaa yhden kertoimen perusteella järjestettävää laatumittaria rankkorrelaatio. Tilastoissa rankkorrelaatiokerroin on korrelaatiokerroin, joka ei ota huomioon itse arvoja, vaan vain niiden arvoa (järjestystä). Tarkastellaan kahta yleisintä rankkorrelaatiokerrointa: Spearmanin ja Kendallin kertoimet.

Kendallin rankkorrelaatiokerroin

Ensimmäinen näistä on Kendallin korrelaatiokerroin, joka perustuu johdonmukaiseen laskemiseen
(ja epäjohdonmukaiset) permutaatioparit - elementiparit, joille permutaatiot määrittivät saman (erilaisen) järjestyksen:

Spearmanin rankkorrelaatiokerroin

Toinen - Spearmanin rankkorrelaatiokerroin - ei ole pohjimmiltaan mitään muuta kuin Pearsonin korrelaatio, joka lasketaan sijoitusarvoista. On melko kätevä kaava, joka ilmaisee sen suoraan riveistä:

missä on Pearsonin korrelaatiokerroin.

Rankkorrelaatioon perustuvilla mittareilla on meille jo tiedossa oleva haittapuoli: ne eivät ota huomioon elementtien sijaintia (jopa huonompi kuin p@K, koska korrelaatio lasketaan kaikkien elementtien osalta, ei K-elementtien yli korkein arvo). Siksi niitä käytetään käytännössä erittäin harvoin.

Mittarit perustuvat peräkkäiseen käyttäytymismalliin

Tähän mennessä emme ole perehtyneet siihen, kuinka käyttäjä (myöhemmin tarkastelemme kohteen erikoistapausta - käyttäjää) tutkii hänelle tarjottuja elementtejä. Itse asiassa olemme implisiittisesti tehneet oletuksen, että kunkin elementin tarkastelu riippumaton muiden elementtien katselemisesta - eräänlainen "naiivius". Käytännössä käyttäjä katselee elementtejä usein yksitellen, ja se, näkeekö käyttäjä seuraavan elementin, riippuu hänen tyytyväisyydestään edellisiin. Harkitse esimerkkiä: vastauksena hakukyselyyn sijoitusalgoritmi tarjosi käyttäjälle useita asiakirjoja. Jos paikoissa 1 ja 2 olevat asiakirjat osoittautuivat erittäin merkityksellisiksi, niin todennäköisyys, että käyttäjä näkee asiakirjan kohdassa 3, on pieni, koska hän on varsin tyytyväinen kahteen ensimmäiseen.

Samanlaisia ​​käyttäjän käyttäytymismalleja, joissa hänelle tarjottujen elementtien tutkiminen tapahtuu peräkkäin ja elementin katselutodennäköisyys riippuu edellisten relevanssista, kutsutaan nimellä peräkkäin.

Odotettu vastavuoroinen sijoitus

Odotettu vastavuoroinen sijoitus (ERR)- esimerkki kaskadimalliin perustuvasta ranking-laatumittarista. Se annetaan seuraavalla kaavalla:

jossa sijoitus ymmärretään laskevassa järjestyksessä. Mielenkiintoisin asia tässä mittarissa on todennäköisyydet. Niitä laskettaessa käytetään kaskadimallin oletuksia:

missä on todennäköisyys, että käyttäjä on tyytyväinen objektiin, jonka sijoitus on . Nämä todennäköisyydet on laskettu arvojen perusteella. Koska meidän tapauksessamme voimme harkita yksinkertaista vaihtoehtoa:

joka voidaan lukea seuraavasti: elementin todellinen merkitys asemassa Lopuksi tässä muutamia hyödyllisiä linkkejä:

Jokaisen luettelon sisällä olevista elementeistä. Osittainen järjestys määritetään yleensä määrittämällä jokaiselle elementille luokitus (esimerkiksi "olennainen" tai "ei relevantti"; enemmän kuin kaksi astetta on mahdollista). Ranking-mallin tavoitteena on parhaiten (jossain mielessä) likimääräinen ja yleistää uusille tiedoille tapa, jolla sijoitus harjoitussarjassa tehtiin.

Luokittelun oppiminen on vielä melko nuori, nopeasti kehittyvä tutkimusala, joka syntyi 2000-luvulla, kun kiinnostus tiedonhaun alaa kohtaan ilmaantui koneoppimismenetelmien soveltamiseen rankingongelmiin.

Tietosanakirja YouTube

  • 1 / 5

    Luokitusmallin koulutuksen ja sen toiminnan aikana jokainen dokumentti-kysely-pari muunnetaan numeeriseksi vektoriksi ranking-ominaisuuksista (kutsutaan myös rankingtekijöiksi tai -signaaleiksi), jotka kuvaavat dokumentin, kyselyn ominaisuuksia ja niiden suhdetta. Tällaiset merkit voidaan jakaa kolmeen ryhmään:

    Alla on esimerkkejä LETOR-tietojoukossa käytetyistä ranking-ominaisuuksista, joka tunnetaan laajasti tutkimusalalla:

    • Mittausarvot TF, TF-IDF, BM25 ja kielimalli asiakirjan eri alueiden pyyntöjen (otsikko, URL, leipäteksti, linkkiteksti) yhteensovittamiseksi;
    • Asiakirjavyöhykkeiden pituudet ja IDF-summat;
    • Asiakirjojen sijoitukset, jotka on saatu linkkien luokittelualgoritmien eri muunnelmilla, kuten PageRank ja HITS.

    Laatumittarien luokittelu

    On olemassa useita mittareita, joilla otokseen perustuvien rankingalgoritmien työn laatua arvioidaan ja verrataan arvioijan arvioihin. Usein sijoitusmallin parametreja pyritään säätämään yhden näistä mittareista arvon maksimoimiseksi.

    Esimerkkejä mittareista:

    Algoritmien luokittelu

    Artikkelissaan "Learning to Rank for Information Retrieval" ja esitelmissään temaattisissa konferensseissa Tai-Yan Liu Microsoft Research Asiasta analysoi tuolloin olemassa olevia menetelmiä järjestyksen oppimisen ongelman ratkaisemiseksi ja ehdotti niiden luokittelua kolmeen lähestymistapaan syötteen mukaan. esitys käytetyt tiedot ja sakkofunktiot:

    Kohta kohdalta lähestymistapa

    Huomautuksia

    1. Tie-Yan Liu (2009), Tiedonhaun sijoittelun oppiminen, Funds and Trends in Information Retrieval: Voi. 3: nro 3, s. 225-331, ISBN 978-1-60198-244-5, DOI 10.1561/1500000016. Diat T. Liun puheesta WWW 2009 -konferenssissa ovat saatavilla.
    1

    Viime vuosina kuvan rekonstruktioon on kiinnitetty paljon huomiota, ja siksi laadun arviointi on tärkeä tehtävä erilaisten kuvien restaurointimenetelmien vertailussa. Monissa tapauksissa rekonstruktiomenetelmät johtavat epätarkkuuteen ja rakenteeseen, kun rekonstruoidaan suuria alueita vääristyneillä pikseliarvoilla. Objektiivista kvantitatiivista arviointia restaurointituloksista ei tällä hetkellä ole, ja siksi monet lähestymistavat perustuvat asiantuntija-arvioon. Tässä artikkelissa käsitellään uutta lähestymistapaa kuvien palauttamisen laadun arvioimiseen koneoppimiseen perustuvan ihmisen näkömallin avulla, joka koostuu siitä, että kuvien paikalliset alueet voidaan esittää kuvailijoilla tiettyjen parametristen jakaumien muodossa. Tukivektorikoneen regressio ennustaa sitten rekonstruoitujen kuvien koetun laadun asiantuntija-arvion mukaan. Työ osoittaa, että yllä olevalla lähestymistavalla saatu laatuarvio korreloi subjektiivisen laatuarvioinnin kanssa.

    koneoppiminen

    visuaalinen laatu

    jälleenrakennus

    kuvankäsittely

    1. Gastaldo P. Koneoppimisratkaisuja objektiiviseen visuaalisen laadun arviointiin / 6. kansainvälinen työpaja videonkäsittelystä ja kulutuselektroniikan laatumittareista, VPQM. - Voi. 12. - 2012.

    2. Bertalmio M., Bertozzi A., Sapiro G. Navier-Stokes, nestedynamiikka sekä kuva- ja videomaalaus/ Hawaii: Proc. IEEE Computer Vision and Pattern Recognition (CVPR). - 2001.–PP. 213–226.

    3. Criminisi A., Perez P., Toyama K. Alueen täyttö ja esineiden poisto esimerkkipohjaisella kuvamaalauksella / IEEE Trans. Kuvaprosessi. - 13(9) . - 2004. - PP. 28–34.

    4. Vijay M., Cheung, S.S. Silmänseurantaan perustuva havaintokuvamaalauksen laatuanalyysi/ Image Processing (ICIP), 17. IEEE:n kansainvälinen IEEE-konferenssi. - 2010. - PP. 1109-1112.

    5. Ardis P.A., Singhal A. Visual salienence metrics for image inpainting / SPIE Electronic Imaging. International Society for Optics and Photonics. - 2009.

    6. Cheung S.S., Zhao J., Venkatesh V. Tehokas objektipohjainen videomaalaus / Image Processing, 2006 IEEE International Conference on. - 2006. - PP. 705-708.

    7. Peretyagin G.I. Kuvien esitys Gaussin satunnaiskentillä / Autometria. – nro 6. – 1984. – s. 42 – 48.

    8. Frantc V.A., Voroni V.V., Marchuk V.I., Sherstobitov A.I., Agaian S., Egiazarian K. Koneoppimisen lähestymistapa objektiiviseen maalauslaadun arviointiin/ Proc. SPIE 9120, mobiili multimedia/kuvankäsittely, suojaus ja sovellukset. – Voi. 91200S. – 2014.

    9. Paul A., Singhal A. ja. Brown C. Maalauksen laadun arviointi / Journal of Electronic Imaging. – Voi. 19. – 2010. – PP. 011002-011002.

    Objektiiviset kuvanlaatumittarit ovat tärkeä osa kuvankäsittelyjärjestelmiä. Eräs tärkeä objektiivisten mittareiden sovellus kuvanlaadun arvioinnissa on arvioida kuvankäsittelyalgoritmien ja -järjestelmien tehokkuutta. Huolimatta tätä aihetta koskevien julkaisujen suuresta määrästä, rekonstruoitujen kuvien laadun arvioinnin ongelmaa käsitellään vain harvoissa. Samaan aikaan kadonneiden kuva-alueiden entisöintitehtävä on saanut viime aikoina paljon huomiota.

    Kuvien laadun arviointiin on kaksi mahdollista lähestymistapaa: kvantitatiivinen arviointi matemaattisilla menetelmillä (keskineliövirhe, Lp-normi, ihmisen näköjärjestelmän kuvanhavainnoinnin erityispiirteet huomioon ottavat mittaukset) ja asiantuntija-arvioihin perustuva subjektiivinen arviointi.

    Olemassa olevilla lähestymistavoilla saadut laatuarviot voivat poiketa merkittävästi ihmisasiantuntijoiden avulla saaduista laatuarvioista. Useimmat olemassa olevat laadunarviointimenetelmät käyttävät viitekuvaa. Mutta valitettavasti monissa tapauksissa viitekuvaa ei ole saatavilla. Tällaisia ​​ongelmia ovat myös kadonneiden pikselien rekonstruointiongelma. Siten tehtävä kvantitatiivisen metriikan kehittäminen rekonstruoitujen kuvien laadun arvioimiseksi on olennainen.

    Kuvanlaadun kvantitatiivisten arvioiden kehittämisessä on edistytty merkittävästi. Esitetyt kriteerit eivät kuitenkaan ole riittävän täydellisiä. Useimmat yritykset löytää hyväksyttäviä arvioita kuvan laadusta liittyvät erikoistapauksiin. Ehdotetaan tiettyä arviota, joka perustuu joihinkin fysiologisiin edellytyksiin ja useammin yksinkertaisesti kätevä analysointiin ja laskelmiin, ja sitten arvioidaan sen ominaisuuksia. Kehittyneempien kuvanlaadun arvioiden luominen liittyy ihmisen näköjärjestelmän ominaisuuksien syvempään tutkimukseen.

    Tämän työn tarkoitus on kehittää mittari kuvanlaadun arvioimiseksi koneoppimiseen perustuvilla rekonstruktiomenetelmillä käsiteltynä.

    Matemaattinen malli

    Artikkelissa käytetään samanlaisia ​​merkintöjä kuin työssä. Koko kuva koostuu kahdesta erillisestä alueesta: rekonstruoidusta alueesta ja tunnetusta alueesta. Kuvassa 1 on esimerkki näiden alueiden sijainnista.

    Kuva 1. Kuvamalli

    Kuva ja sen sisällä oleva alue Ω tunnetaan. Rekonstruktiotehtävänä on muokata kuvan pikseliarvoja alueella Ω siten, että alue ei erotu ympäröivän kuvan taustasta. Rekonstruoinnin tarkoituksena voi olla kuvan vahingoittuneiden osien (kuten vanhojen valokuvien naarmujen ja halkeamien) palauttaminen tai ei-toivottujen kohteiden poistaminen kuvasta. Kuvassa 1 esitetty alue Ω on aina käyttäjän määrittämä, ts. alueen Ω määrittäminen ei ole osa rekonstruktio-ongelmaa.

    Algoritmi kuvan palauttamisen laadun arvioimiseksi

    Yleisesti ottaen koneoppimiseen perustuvan kuvanlaatumittarin rakentaminen onnistuneesti edellyttää seuraavat kolme tehtävää:

    1. Tulosignaalien kuvauksena toimivien ominaisuuksien tilan määrittely.

    2. Kartoitusfunktion valinta piirreavaruudesta laadunarviointitilaan.

    3. Järjestelmän harjoittelu ja sen vakauden tarkistaminen (yliharjoittelun tarkastus jne.).

    Valitun lähestymistavan lohkokaavio on esitetty kuvassa 2 ja se sisältää seuraavat vaiheet:

    1. Kiinnostavan alueen valitseminen (käyttäen huomiokarttaa);

    2. Matalan tason kuvan ominaisuuksien laskeminen;

    3. Kunnostetun alueen kuvaajan rakentaminen matalan tason ominaisuuksien perusteella;

    4. Regressiotehtävän ratkaiseminen numeerisen laatuarvioinnin saamiseksi tuloksena olevaan kuvaajavektoriin perustuen.

    Riisi. 2. Algoritmin vuokaavio

    Työ osoittaa, että visuaalisella huomiolla on tärkeä rooli ihmisen visuaalisen havainnon kannalta. Kullekin hetkellä ihmissilmä näkee vain pienen osan kohtauksesta selvästi, kun taas paljon suurempi alue kohtauksesta koetaan "sumeana". Tämä "sumea tieto" riittää arvioimaan kohtauksen eri alueiden tärkeyden ja ohjaamaan huomion tärkeisiin näkökentän alueisiin. Useimmat menetelmät tuottavat huomiokartan - kaksiulotteisen kuvan, jossa kunkin pikselin arvo liittyy vastaavan alueen tärkeyteen.

    Huomiokarttojen hankkimiseen käytämme työssä kuvattua Saliency Toolboxia. Tämä työkalupakki käyttää mallia ihmisen näköjärjestelmästä. On tärkeää huomata, että alkuperäisen ja rekonstruoidun kuvan rekonstruoitua aluetta ei kannata verrata, koska kokonaissisältö voi muuttua merkittävästi. Kiinnostuksen kohteiden valitsemiseksi on suositeltavaa käyttää seuraavaa lauseketta:

    .

    Tässä on rekonstruoidun kuvan huomiokartta, ja pikseliä vastaavan huomiokartan arvo on . Yllä olevassa lausekkeessa katseen tiheys lasketaan rekonstruoidun kuva-alueen sisällä ja ulkopuolella. Arvoa käytetään kynnyksenä päätettäessä, mitä kuvan osia käytetään arvioinnissa ja mitä ei. Vain ne alueet, joille .

    Spektriesityksiä käytetään paikallisten alueiden matalan tason piirteinä. Seuraavaksi ehdotamme analyysiä seuraavista Fourier-, Walsh- ja Haar-emäksistä käyttämällä tehokkuusvektoria. Järjestelmän tehokkuuskriteerin komponenttien oikea laskeminen häiriöiden ja vääristymien esiintyessä edellyttää tilastollisen keskiarvon laskemista.

    Signaalinkäsittelyalgoritmeja ja -järjestelmiä syntetisoitaessa käytetään useimmiten minimikeskimääräisen riskin kriteeriä, jonka avulla voidaan ottaa huomioon häiriö- ja signaalitilastot. Taajuusmuunnoksia toteutettaessa ja laskennallisia kustannuksia arvioitaessa spektrihajotusperusteen valinta on olennaista. Signaalin hajoamisperusteen valinnan optimoimiseksi on suositeltavaa käyttää minimikeskimääräisen riskin kriteeriä. Tätä varten on tarpeen määrittää käytettyjen signaalien ja prosessien luokka ja tiedossa niiden todennäköisyysominaisuudet.

    Tietylle kaksiulotteisten prosessien luokalle kunkin alaluokan todennäköisyyden oletetaan olevan tiedossa, missä indeksi on alaluokan numero, jolla on joitain yhteisiä ominaisuuksia, ja on th:n prosessin toteutuksen numero. alaluokka. Vertaamme tiettyjä perusjärjestelmiä Laajennuksella yleistetyksi Fourier-sarjaksi ,. kantajärjestelmässä yleisessä muodossa on muoto: .

    Fourier-sarjan äärelliselle määrälle termejä voidaan luonnehtia virheellä: , missä on etäisyys jossakin metriikassa, on Fourier-sarjan termien osasumma.

    Fourier-sarjan kertoimien laitteistomääritykseen tai niiden laskemiseen liittyy tiettyjä laskentakustannuksia. Otetaan käyttöön häviöfunktio, joka ottaa huomioon sekä Fourier-sarjan katkaisuvirheeseen liittyvät häviöt että laitteisto- ja laskentaresurssien kustannukset:

    .

    Ehdollisen riskin arvo riippuu sekä signaalin alaluokasta että perusteesta ja lasketaan laskemalla tappiofunktion keskiarvo toteutuksille:

    missä on analysoitujen signaalien ja häiriön todennäköisyystiheys; ja kulmasulut osoittavat tilastollisen keskiarvon laskemisen.

    Keskimääräinen riski määritetään laskemalla ehdollisen riskin keskiarvo signaalialaluokkien välillä:

    ,

    missä on signaalien :nnen alaluokan todennäköisyys.

    Vähimmäiskeskimääräisen riskin kriteerin mukaisesti perusteista valitaan se, jonka keskimääräinen riski on minimaalinen.

    Kuvankäsittelyn laadun järjestelmäkriteerin tehokkuuden arvioimiseksi testikuvia tarkastellaan kuvioiden muodossa, jotka on saatu Gaussin kenttien mallintamisen perusteella annetuilla korrelaatiofunktioilla. Homogeenisten normaalisatunnaiskenttien, samoin kuin paikallaan olevien normaalien satunnaisprosessien, generointi suoritetaan yksinkertaisimmin muotoilusuodatinmenetelmällä.

    Esimerkkinä artikkelissa tarkastellaan satunnaisten realisaatioiden esittämistä erilaisilla korrelaatiofunktioilla trigonometristen funktioiden (Fourier), Walshin ja Haarin kannassa. Suoritetaan analyysi valituilla perusteilla luoduille 256 x 256 pikselin kokoisille kuvamalleille. Määritellään myös kolme alaluokkien todennäköisyysjakaumaa: 1) yhtenäinen: ; 2) laskeva: ;
    3) kasvaa: . Valitsemme kustannusfunktio muodossa: .

    Keskimääräinen riski määritetään laskemalla ehdollisen riskin keskiarvo signaalialaluokkien välillä käyttämällä signaalialaluokkien hyväksyttyjä a priori todennäköisyyksiä, lasketut arvot on esitetty taulukossa 1.

    pöytä 1

    Keskimääräiset riskiarvot

    Todennäköisyysjakaumien tyypit

    Taulukossa esitetyt laskentatulokset osoittavat, että hyväksytyille kaksiulotteisten signaalien ja niiden todennäköisyysjakaumien malleille Haar-pohjalla on pienin keskimääräinen riski ja Fourier-pohjalla suurin.

    Analyysin perusteella valitsemme Haar-pohjan edustamaan paikallisia kuva-alueita. On huomattava, että rekonstruoidun alueen koko vaihtelee eri kuvien mukaan. Tässä suhteessa matalan tason ominaisuuksien perusteella tulisi muodostaa korkean tason esitys kiinteästä koosta. Sanapussi-lähestymistapaa käytetään korkean tason esityksenä. Rekonstruoidun alueen kuvaajan (allekirjoituksen) muodostamismenettely koostuu kahdesta vaiheesta. Ensimmäinen askel on rakentaa sanakirja. Tämä tehdään käyttämällä matalan tason ominaisuuksia, jotka on poimittu kaikista harjoituskuvasarjan kuvista. Sanakirjan rakentamiseksi poimitut ominaisuudet jaetaan 100 luokkaan k-means-klusterointialgoritmilla. Jokainen sanakirjan elementti edustaa sen keskipistettä yhdelle klusterointiproseduurilla löydetyistä luokista. Jokainen sana sanakirjassa edustaa Haar-muunnoksia 8x8-kuvalohkossa. Tuloksena olevaa sanakirjaa käytetään toisessa vaiheessa rakennettaessa taajuushistogrammeja sanakirjasta oleville sanoille piirrevektorina - rekonstruoidun alueen kuvaajana (kuva 3). Saatua kuvaajajoukkoa käytetään regressiokoneen kouluttamiseen (Support Vector Regression). Sanataajuuksien histogrammin saamiseksi tietyn kuvan kaikki visuaalisesti näkyvät alueet (ilmeys määritetään huomiokarttojen avulla) poimitaan sanakirjasta. Haar-muunnos sovelletaan sitten jokaiseen erotettuun lohkoon ja luokitus suoritetaan tuloksena olevan sanakirjan mukaan euklidisen etäisyyden perusteella.

    Jokainen tuloksena olevan histogrammin laatikko sisältää tietyn luokan matalan tason piirteiden määrän tietyllä rekonstruoidulla alueella. Histogrammin normalisoinnin jälkeen kuvasta saadaan "allekirjoitus" - korkean tason esitys rekonstruoidusta alueesta.

    Kuva 3. Histogrammin rakentaminen

    Algoritmin tehokkuuden arviointi kuvien palauttamisen laadun arvioimiseksi

    Kehitetyn mittarin tehokkuuden arvioimiseksi käytettiin sarjaa testikuvia. Sarja koostuu 300 kuvasta. Restaurointimenetelmiksi valittiin seuraavat lähestymistavat: itsekaltaisten alueiden etsintään perustuva menetelmä, spektrimuunnoksiin perustuva menetelmä, osittaisten derivaattojen laskentaan perustuva menetelmä. Jokaisesta kuvasta tehtiin asiantuntija-arvio, johon osallistui 30 henkilöä. Tulokset jaettiin kahteen ei-päällekkäiseen joukkoon. Ensimmäinen käytettiin harjoitteluun ja toisella testattiin tulos.

    Asiantuntijat arvioivat laadun asteikolla, jossa 5 vastaa "erinomainen" ja 1 vastaa "erittäin huonoa". Tuloksena olevan metriikan tehokkuuden arvioimiseksi käytetään objektiivisen metriikan ja asiantuntijamenetelmän laadunarvioinnin avulla saatujen vektorien välistä korrelaatiokerrointa. Saatujen tulosten analyysi taulukosta 2 osoittaa, että ehdotettu lähestymistapa ylittää tunnetut laatumittarit valitulla testidatajoukolla.

    taulukko 2

    Korrelaatiokerroin erilaisille tavoitteen laskentamenetelmille
    kuvanlaatumittarit

    Ehdotettu lähestymistapa

    Johtopäätös

    Artikkelissa esitetään objektiivinen mittari kuvanlaadun arvioimiseksi koneoppimisen perusteella. Kuvanlaadun kvantitatiiviset mittaukset ovat olennaisia ​​kuvantoistojärjestelmien suunnittelussa ja arvioinnissa. Näillä toimenpiteillä päästään pitkälle työvaltaisen ja epätarkan nykyisen kuvanarviointimenetelmän poistamisessa subjektiivisen tarkastelun kautta. Lisäksi voidaan kehittää kvantitatiivisten mittareiden pohjalta menetelmiä kuvankäsittelyjärjestelmien optimointiin. On osoitettu, että yllä olevalla lähestymistavalla saatu laatuarvio korreloi subjektiivisen laadunarvioinnin kanssa.

    Työtä tuki Venäjän opetus- ja tiedeministeriö liittovaltion kohdeohjelman "Tutkimus ja kehittäminen Venäjän tieteellisen ja teknologisen kompleksin kehittämisen painopistealueilla vuosille 2014-2020" (sopimus nro 14.586.21.0013) puitteissa. ).

    Arvostelijat:

    Fedosov V.P., teknisten tieteiden tohtori, professori, Rostov-on-Donin eteläisen liittovaltion yliopiston edistyneen kehityksen, tekniikan ja teknologian akatemian osaston johtaja;

    Marchuk V.I., teknisten tieteiden tohtori, professori, ISOiP:n radioelektronisten ja sähköjärjestelmien ja kompleksien osaston johtaja (DSTU:n sivuliike), Shakhty.

    Bibliografinen linkki

    Voronin V.V. Koneoppimiseen PERUSTUVAAN KUVAAN PALAUTTAMISEN LAADUN ARVIOINTI // Tieteen ja koulutuksen nykyaikaiset ongelmat. – 2014. – Nro 6.;
    URL-osoite: http://science-education.ru/ru/article/view?id=16294 (käyttöpäivä: 01.2.2020). Tuomme huomionne "Luonnontieteiden Akatemian" kustantajan julkaisemat lehdet

    Perustuu teleoperaattoriasiakkaiden ulosvirtaukseen.


    Ladataan tarvittavat kirjastot ja katsotaan tietoja

    tuo pandat pd:nä tuonti matplotlib.pyplot as plt from matplotlib.pylab import rc, plot tuonti seaborn as sns from sklearn.preprocessing import LabelEncoder, OneHotEncoder from sklearn.model_selection import cross_val_score from sklearn.linear_model from sklearn.linear_model from sklearn.linear_model from sklearn.linear_model from sklearn ostingClassifier kohteesta sklearn.metrics import precision_recall_curve, classification_report from sklearn.model_selection tuonti train_test_split df = pd.read_csv("../../data/telecom_churn.csv")


    df.head(5)

    Tietojen esikäsittely

    # Kartoitetaan binäärisarakkeet # ja koodataan henkilökunta valekoodauksella (yksinkertaisuuden vuoksi on parempi olla tekemättä tätä puumalleille) d = ("Kyllä" : 1, "Ei" : 0) df["Kansainvälinen suunnitelma" ] = df[" Kansainvälinen suunnitelma"].map(d) df["Voice mail plan"] = df["Puhepostisuunnitelma"].map(d) df["Churn"] = df["Churn"]. astype("int64" ) le = LabelEncoder() df["Tila"] = le.fit_transform(df["Tila"]) ohe = OneHotEncoder(sparse=False) encoded_state = ohe.fit_transform(df["Tila"]. arvot.reshape(- 1, 1)) tmp = pd.DataFrame(koodattu_tila, sarakkeet=["tila " + str(i) i:lle alueella(koodattu_tila.muoto)]) df = pd.concat(, axis=1 )

    Tarkkuus, tarkkuus ja muistaminen

    Ennen kuin siirrytään itse mittareihin, on tarpeen ottaa käyttöön tärkeä käsite näiden mittareiden kuvaamiseksi luokitteluvirheiden kannalta - sekaannusmatriisi(virhematriisi).
    Oletetaan, että meillä on kaksi luokkaa ja algoritmi, joka ennustaa jokaisen objektin kuuluvan johonkin luokista, niin luokitteluvirhematriisi näyttää tältä:


    Tosi positiivinen (TP) Väärin positiivinen (FP)
    Väärä negatiivinen (FN) Todellinen negatiivinen (TN)

    Tässä on algoritmin vastaus objektiin, ja se on tämän objektin todellinen luokkatunniste.
    Luokitusvirheitä on siis kahta tyyppiä: väärä negatiivinen (FN) ja väärä positiivinen (FP).


    Algoritmin koulutus ja virhematriisin rakentaminen

    X = df.drop("Churn", axis=1) y = df["Churn"] # Jaa näyte junaan ja testaa, kaikki mittarit arvioidaan testitietojoukossa X_train, X_test, y_train, y_test = train_test_split( X, y , stratify=y, test_size=0.33, random_state=42) # Harjoita natiivi logistinen regressio lr = LogisticRegression(random_state=42) lr.fit(X_train, y_train) # Käytä virhematriisin rakennusfunktiota sklearn-dokumentaatiosta def plot_confusion_confusion_def plot_confusion (cm, classes , normalise=False, title="Sekaannusmatriisi", 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="Sekaannusmatriisi") plt.savefig("conf_matrix.png") plt.show()!}


    Tarkkuus

    Intuitiivinen, ilmeinen ja lähes käyttämätön mittari on tarkkuus - algoritmin oikeiden vastausten osuus:



    Tämä mittari on hyödytön epätasaisten luokkien ongelmissa, ja tämä on helppo osoittaa esimerkillä.


    Oletetaan, että haluamme arvioida roskapostisuodattimen tehokkuutta. Meillä on 100 ei-roskapostisähköpostia, joista 90 luokittelijamme tunnisti oikein (tosi negatiivinen = 90, väärä positiivinen = 10) ja 10 roskapostia, joista 5 luokitin tunnisti myös oikein (tosi positiivinen = 5, väärä negatiivinen = 5 ).
    Sitten tarkkuus:



    Jos kuitenkin ennustamme kaikki sähköpostit ei-roskapostiksi, saamme paremman tarkkuuden:



    Samaan aikaan mallillamme ei ole lainkaan ennustusvoimaa, koska alun perin halusimme tunnistaa roskapostit. Siirtyminen kaikkien luokkien yhteisestä mittarista yksittäisiin luokan laadun indikaattoreihin auttaa meitä voittamaan tämän.

    Tarkkuus, palautus ja F-mitta

    Algoritmin työn laadun arvioimiseksi kussakin luokassa erikseen otamme käyttöön metriikan tarkkuuden (tarkkuus) ja muistamisen (täydellisyys).




    Tarkkuus voidaan tulkita luokittelijan positiivisiksi kutsumien ja todellisuudessa positiivisten kohteiden osuutena, ja palautus osoittaa, kuinka paljon positiivisen luokan kohteita kaikista positiivisen luokan objekteista algoritmi löysi.



    Juuri tarkkuuden käyttöönotto ei salli meidän kirjoittaa kaikkia objekteja yhteen luokkaan, koska tässä tapauksessa saamme lisäyksen Väärä positiivinen taso. Recall osoittaa algoritmin kyvyn havaita tietty luokka yleisesti, ja tarkkuus osoittaa kyvyn erottaa tämä luokka muista luokista.


    Kuten aiemmin totesimme, luokitusvirheitä on kahdenlaisia: väärä positiivinen ja väärä negatiivinen. Tilastoissa ensimmäistä virhetyyppiä kutsutaan tyypin I virheeksi ja toista tyypin II virheeksi. Tehtävässämme tilaajan vaihtuvuuden määrittämisessä ensimmäisen tyyppinen virhe on se, että uskollinen tilaaja sekoitetaan lähtevään tilaajaan, koska nollahypoteesimme on, että kukaan tilaajista ei poistu, ja hylkäämme tämän hypoteesin. Vastaavasti toisen tyyppinen virhe on lähtevän tilaajan "puuttuminen" ja nollahypoteesin virheellinen hyväksyminen.


    Tarkkuus ja muistaminen, toisin kuin tarkkuus, eivät riipu luokkasuhteesta ja ovat siksi sovellettavissa epätasapainoisten näytteiden olosuhteissa.
    Usein tosikäytännössä tehtävänä on löytää (asiakkaalle) optimaalinen tasapaino näiden kahden mittarin välillä. Klassinen esimerkki on asiakkaan vaihtuvuuden määrittäminen.
    Ilmeisesti emme löydä kaikille asiakkaiden vaihtuvuus ja vain heidän. Mutta kun olemme määrittäneet strategian ja resurssin asiakkaiden säilyttämiseksi, voimme valita tarvittavat kynnykset tarkkuudelle ja takaisinkutsulle. Saatamme esimerkiksi keskittyä säilyttämään vain korkeatuottoiset asiakkaat tai ne, jotka todennäköisemmin vaimentavat, koska puhelinkeskuksemme resurssit ovat rajalliset.


    Yleensä algoritmin hyperparametreja optimoitaessa (esimerkiksi ruudukkohaun tapauksessa GridSearchCV) käytetään yhtä mittaria, jonka parannuksen odotamme näkevän testinäytteessä.
    On olemassa useita eri tapoja yhdistää tarkkuus ja muistaminen kokonaislaatumittaaksi. F-mitta (yleensä) - harmonisen keskiarvon tarkkuus ja palautus:



    Tässä tapauksessa se määrittää tarkkuuden painon metriikassa, ja tämä on harmoninen keskiarvo (kertoimella 2, joten tarkkuus = 1 ja palautus = 1)
    F-mitta saavuttaa maksiminsa, kun palautus ja tarkkuus ovat yhtä, ja se on lähellä nollaa, jos jokin argumenteista on lähellä nollaa.
    sklearnissä on kätevä funktio nimeltä _metrics.classification raportti, joka palauttaa kunkin luokan palautuksen, tarkkuuden ja F-mitan sekä kunkin luokan esiintymien lukumäärän.


    raportti = classification_report(y_test, lr.predict(X_test), target_names=["Ei-vaihdettu", "Curned"]) tulosta(raportti)
    luokkaa tarkkuutta palauttaa mieleen f1-pisteet tuki
    Kääntämätön 0.88 0.97 0.93 941
    Pyöritetty 0.60 0.25 0.35 159
    keskiarvo/yhteensä 0.84 0.87 0.84 1100

    Tässä on huomioitava, että epätasapainoisten luokkien ongelmissa, jotka vallitsevat todellisessa käytännössä, on usein tarpeen turvautua keinotekoisiin tietojoukon muokkaustekniikoihin luokkasuhteen tasaamiseksi. Niitä on monia, emmekä käsittele niitä, voit tarkastella joitain menetelmiä ja valita tehtävällesi sopivan.

    AUC-ROC ja AUC-PR

    Kun algoritmin todellinen vastaus (yleensä luokkajäsenyyden todennäköisyys, katso SVM erikseen) muunnetaan binääritunnisteeksi, on valittava jokin kynnys, jossa 0:sta tulee 1. Kynnys 0,5 näyttää luonnolliselta ja läheltä, mutta se ei aina käy ilmi. olla optimaalinen esimerkiksi edellä mainitussa luokkatasapainon puutteessa.


    Yksi tapa arvioida mallia kokonaisuutena ilman, että se on sidottu tiettyyn kynnykseen on AUC-ROC (tai ROC AUC) - alue ( A rea U nder C urve) virhekäyrän alla ( R vastaanotin O perating C ominaiskäyrä). Tämä käyrä on suora (0.0) - (1.1) todellisen positiivisen nopeuden (TPR) ja väärän positiivisen nopeuden (FPR) koordinaateissa:




    TPR on meille jo tiedossa, se on täydellisyyttä, ja FPR näyttää kuinka osuuden negatiivisen luokan objekteista algoritmi ennusti väärin. Ihannetapauksessa, kun luokitin ei tee virheitä (FPR = 0, TPR = 1), saamme käyrän alapuolisen alueen yhtä suureksi kuin yksi; muuten, kun luokitin antaa satunnaisesti luokkatodennäköisyyksiä, AUC-ROC pyrkii arvoon 0,5, koska luokitin tulostaa saman määrän TP:itä ja FP:itä.
    Jokainen kaavion piste vastaa tietyn kynnyksen valintaa. Käyrän alla oleva pinta-ala näyttää tässä tapauksessa algoritmin laadun (enemmän on parempi), lisäksi itse käyrän jyrkkyys on tärkeä - haluamme maksimoida TPR:n minimoimalla FPR:n, mikä tarkoittaa, että käyrämme tulisi mieluiten pyrkiä piste (0,1).


    ROC-käyrän piirustuskoodi

    sns.set(font_scale=1.5) sns.set_color_codes("mykistetty") 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="ROC curve ") plt.plot(, ) plt.xlim() plt.ylim() plt.xlabel("Väärä positiivinen määrä ") plt.ylabel("Todellinen positiivinen korko") plt.title("ROC-käyrä") plt.savefig("ROC.png") plt.show()



    AUC-ROC-kriteeri on kestävä epätasapainoisille luokille (spoileri: valitettavasti kaikki ei ole niin yksinkertaista) ja se voidaan tulkita todennäköisyydeksi, että satunnaisesti valittu positiivinen objekti sijoittuu korkeammalle luokittimessa (sillä on suurempi todennäköisyys olla positiivinen ) kuin satunnaisesti valittu negatiivinen objekti.


    Harkitse seuraavaa ongelmaa: Meidän on valittava 100 asiaankuuluvaa asiakirjaa 1 miljoonasta asiakirjasta. Kehitimme kaksi algoritmia:

    • Algoritmi 1 palauttaa 100 asiakirjaa, joista 90 on olennaisia. Täten,

    • Algoritmi 2 palauttaa 2000 asiakirjaa, joista 90 on olennaisia. Täten,


    Todennäköisimmin valitsisimme ensimmäisen algoritmin, joka tuottaa hyvin vähän vääriä positiivisia verrattuna kilpailijaansa. Mutta ero näiden kahden algoritmin välillä on väärä positiivinen määrä erittäin pieni - vain 0,0019. Tämä johtuu siitä, että AUC-ROC mittaa väärän positiivisen osuutta suhteessa tosi negatiiviseen ja tehtävissä, joissa toinen (isompi) luokka ei ole meille niin tärkeä, se ei välttämättä anna täysin riittävää kuvaa algoritmeja vertailtaessa.


    Tilanteen korjaamiseksi palataan täydellisyyteen ja tarkkuuteen:

    • Algoritmi 1

    • Algoritmi 2


    Tässä on jo huomattava ero näiden kahden algoritmin välillä - 0,855 täsmälleen!


    Tarkkuutta ja palauttamista käytetään myös käyrän piirtämiseen ja AUC-ROC:n tapaan sen alla olevan alueen etsimiseen.



    Tässä voidaan todeta, että pienillä aineistoilla PR-käyrän alla oleva pinta-ala voi olla liian optimistinen, koska se lasketaan puolisuunnikkaan menetelmällä, mutta yleensä tällaisissa ongelmissa dataa on riittävästi. Lisätietoja AUC-ROC- ja AUC-PR-suhteesta on täällä.

    Logistinen menetys

    Logistinen menetysfunktio erottuu toisistaan, ja se määritellään seuraavasti:



    tässä on algoritmin vastaus -:nnelle objektille, todellinen luokkatunniste -:nnelle objektille ja otoksen koko.


    Logistisen häviöfunktion matemaattinen tulkinta on jo kirjoitettu yksityiskohtaisesti lineaarisia malleja käsittelevässä postauksessa.
    Tämä mittari näkyy harvoin liiketoimintavaatimuksissa, mutta usein kaggle-tehtävissä.
    Intuitiivisesti voidaan ajatella logloss-minimointia tarkkuuden maksimoimisen ongelmana rankaisemalla vääriä ennusteita. On kuitenkin huomattava, että logloss rankaisee voimakkaasti luokittelijan luottamusta väärään vastaukseen.


    Katsotaanpa esimerkkiä:


    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("Loglossi epävarmassa luokituksessa %f " % logloss_crutch(1, 0.5)) >> Logloss epävarmalla luokittelulla 0.693147 print("Logloss luotettavalla luokittelulla ja oikealla vastauksella %f" % logloss_crutch(1, 0.9)) >> Logloss varma luokittelu ja oikea vastaus 0.105361 print(" Logloss varma luokittelu ja VÄÄRÄ vastaus %f" % logloss_crutch(1, 0.1)) >> Logloss varma luokittelu ja VÄÄRÄ vastaus 2.302585

    Huomaa, kuinka dramaattisesti logloss lisääntyi väärän vastauksen ja varman luokituksen myötä!
    Tämän seurauksena virhe yhdessä objektissa voi johtaa näytteen kokonaisvirheen merkittävään heikkenemiseen. Tällaiset kohteet ovat usein poikkeavia, jotka on muistettava suodattaa tai tarkastella erikseen.
    Kaikki loksahtaa paikoilleen, jos piirrät logloss-kaavion:



    Voidaan nähdä, että mitä lähempänä nollaa algoritmin vastaus on pohjatotuus = 1, sitä suurempi on virhearvo ja sitä jyrkemmäksi käyrä kasvaa.

    Tehdään yhteenveto:

    • Moniluokkaisen luokituksen tapauksessa sinun on seurattava huolellisesti kunkin luokan mittareita ja noudatettava ratkaisun logiikkaa tehtäviä, ei metrien optimointia
    • Epätasaisten luokkien tapauksessa sinun on valittava koulutuksen luokkien tasapaino ja mittari, joka kuvastaa oikein luokituksen laatua
    • ja madrugado avusta artikkelin valmistelussa.