Hva betyr kvalitetsmåling i maskinlæring? En universell tilnærming til (nesten) alle maskinlæringsproblemer. Kort om oppgaven med rangering

UDC 519.816

S. V. SEMENIKHIN L. A. DENISOVA

Omsk statlige tekniske universitet

REKKE MASKIN LÆRINGSMETODEN

BASERT PÅ EN MODIFISERT GENETISK ALGORITMME FOR YRSO-METRIKKEN

Problemet med å rangere dokumenter på informasjonssøkeresultatsiden og maskinlæringsproblemer med rangering vurderes. En tilnærming er foreslått for å optimalisere rangeringsfunksjonen ved å bruke NOCO-kvalitetsmetrikken basert på en modifisert genetisk algoritme. Forskningen av de utviklede algoritmene ble utført (på testsamlinger LETO ^ og deres effektivitet for maskinlæring av rangering ble vist.

Stikkord: informasjonsinnhenting, maskinlæringsrangering, relevans, optimalisering, genetiske algoritmer.

1. Introduksjon. I moderne informasjonsinnhentingssystemer (ISS) er datavolumene som drives av systemet så store at nøkkeloppgaven er å rangere relevante dokumenter som svar på en brukers søk. På dette stadiet av utviklingen av ISS er rangering av maskinlæring (ML) av størst interesse. De eksisterende tilnærmingene til ML, basert på numeriske metoder (spesielt gradientmetoder) eller på analytiske beregninger, har en rekke ulemper som i betydelig grad påvirker kvaliteten på informasjonsinnhentingen og tiden som kreves for å rangere relevante dokumenter.

I begynnelsen av forskningen ble listetilnærminger til rangering av maskinlæring vurdert, hvorav de fleste bruker gradient descent-metoden. I de betraktede verkene er ML redusert til optimalisering av søkekvalitetsmålinger (SEQ), men kun beregninger representert av kontinuerlige funksjoner brukes. Denne begrensningen fører ofte til at rangeringsfunksjonen som et resultat av optimalisering har lavere skår for mange viktige aksepterte indikatorer (DCG, nDCG, Graded Mean Reciprocal Rank, etc.), som er diskrete funksjoner. Artikkelen foreslår bruk av genetiske algoritmer (GA) i undervisningsrangering for å minimere Hubers tapsfunksjon ved å bruke ekspertvurderinger av relevans som referanseverdier. En tilnærming til ML basert på optimalisering av diskrete beregninger for kvalitet på informasjonsinnhenting ble også foreslått.

2. Uttalelse av problemet med maskinlæringsrangering. I de fleste moderne informasjonsinnhentingssystemer er rangeringsfunksjonen bygget på grunnlag av n enkle rangeringsfunksjoner (PRF) og kan skrives som:

der SRF¡ er den ¡te enkle rangeringsfunksjonen for dokument d og spørring q, WCi er vektkoeffisienten til den ¡te enkle rangeringsfunksjonen, n er antall PRF-er i rangeringssystemet.

I løpet av maskinlæring for rangering ble et sett med søkedokumenter B og spørringer O fra testsamlingen LBTOY brukt. For alle deO-forespørsler dannes et par med hvert deD-dokument. For hvert slikt par bestemmer IRS relevansverdiene som brukes til å rangere søkeresultater. For å vurdere kvaliteten på rangeringen krever systemet referanserelevansverdier E for hvert dokument-spørringspar (^, e). Til disse formål brukes sakkyndige vurderinger av relevans.

For å gjennomføre studien ble det brukt en ISS, der rangeringen er gjort på grunnlag av N = 5 enkle rangeringsfunksjoner SRFi (WC) l г = 1, N, som danner et vektorkriterium for optimalitet:

hvor WCе (WC) er vektoren av variable parametere; (ШС), (ЯБ) er mellomrommene til henholdsvis parametere og vektorkriterier.

Anvendelse av genetiske algoritmer for ML-rangering gjør det mulig å maksimere diskrete kvalitetsmålinger som nDCG. nDCG-beregningen for rangering av dokumenter i søkemotoren bestemmes i samsvar med uttrykket:

DCG @ n = X 2 ---

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

hvor karakter (p) er den gjennomsnittlige relevanspoengsummen gitt av eksperter til dokumentet plassert på posisjon p i resultatlisten, karakter; 1 / log2 (2 + p) - koeffisient avhengig av dokumentets posisjon (de første dokumentene har mer vekt).

Da vil den normaliserte versjonen av NDCG skrives som

N000 @ n = RSD @ n/g,

hvor r er normaliseringsfaktoren, som er lik den maksimalt mulige verdien 0С [e-postbeskyttet] n for et gitt søk (dvs. lik OOO for den ideelle rangeringen).

For å optimalisere (maksimere) metrikken til OSS, vil objektivfunksjonen (YM) bli skrevet i følgende form

3. Målinger for kvaliteten på rangeringen av søkeresultatene. Ved rangering av dokumenter i søkeresultater fungerer kvalitetsmålinger som kriterier. Fra listen over allment aksepterte beregninger for å vurdere kvaliteten på ISS, ble det valgt ut tre hovedmål som vurderer nøyaktigheten, relevansen og fullstendigheten av informasjonsinnhenting.

1. Kriteriet for nøyaktigheten av informasjonsinnhenting

hvor a er antall relevante dokumenter funnet, b er antall dokumenter som feilaktig er relevante.

2. Bpref-kriteriet, som evaluerer relevansen av informasjonsinnhenting, brukes til å behandle en jobb med R relevante dokumenter og beregnes med formelen

Bpref = - ^ (1 - Ikke Re ¡Før (r) / R). (4)

Her betegner r et kjent relevant dokument, og NonRelBefore (r) - antall kjente irrelevante dokumenter rangert høyere enn r (kun den første R av de estimerte irrelevante dokumentene fra kjøringen er tatt med i beregningen).

3. Kriterium for fullstendighet av søkeresultater

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

hvor a er antall funnet relevante dokumenter, c er antall ikke funnet relevante dokumenter.

4. Testsamlinger. I et maskinlæringsproblem krever rangering et sett med dokumenter og forespørsler med tilsvarende relevansscore fastsatt av eksperter. Disse dataene brukes til maskinlæring av rangeringsfunksjonen samt for kvalitetsvurdering.

rangering av søkeresultater av systemet. I ML-prosessen brukes testsamlinger som et treningssett og har derfor en betydelig innvirkning på resultatene. En testsamling av dokumenter og forespørsler LETOR ble brukt til forskning. Denne samlingen brukes til informasjonsinnhenting av Microsoft Research. Bord 1 viser egenskapene til LETOR-testsamlingene.

5. Modifisert genetisk algoritme. For å bruke genetiske algoritmer i maskinlæring for rangering, må problemet formuleres på en slik måte at løsningen er kodet som en vektor (genotype), der hvert gen kan være en bit, tall eller annet objekt. I dette tilfellet er genotypen representert av en vektor av vektingsfaktorer for de tilsvarende rangeringsfaktorene. Betingelsen for å stoppe utførelsen av den genetiske algoritmen er å finne den optimale løsningen, utmattelsen av antall generasjoner eller tiden som er tildelt for evolusjon.

Det skal bemerkes at GA-er er mest effektive når det gjelder å søke etter et område av et globalt ekstremum, men de kan jobbe sakte når det er nødvendig å finne et lokalt minimum i dette området. Den foreslåtte måten å unngå denne ulempen på er å lage en modifisert genetisk algoritme (MGA), som vil bytte til en lokal (høyhastighets) optimaliseringsalgoritme etter å ha funnet den globale optimale regionen ved å bruke den grunnleggende GA. Den foreslåtte MGA er en hybridmetode basert på den klassiske GA og Nelder - Mead-metoden (simpleks algoritme). Nelder - Mead-metoden, en ofte brukt ikke-lineær optimaliseringsalgoritme, er en numerisk metode for å finne minimum av en objektiv funksjon i et flerdimensjonalt rom. Den hybride MGA-algoritmen som er foreslått i denne artikkelen bytter til Nelder - Mead-metoden etter at betingelsene for å stoppe GA er oppfylt. Et blokkskjema over MGA-algoritmen er vist i fig. 1.

Ved utførelse av forskningen ble en begrensning på antall beregninger av objektivfunksjonen (Nrf = 16 000) akseptert ved søk etter den globale ekstremumregionen og betingelsen for å bytte til en lokal optimaliseringsalgoritme basert på Nelder - Mead-metoden (etter grunnleggende genetisk algoritme har utført 75 % av Nrf-operasjoner).

6. Resultater. Som et resultat av forskningen utført ved hjelp av maskinlæringsalgoritmen

Tabell 1

Antall dokumenter og forespørsler i testsamlinger

Navn på testsamling Subsystemnavn Antall forespørsler Antall dokumenter

LETOR 4.0 MQ2007 1692 69623

LETOR 4.0 MQ2008 784 15211

LETOR 3.0 OHSUMED 106 16140

LETOR 3.0 Gov03td 50 49058

LETOR 3.0 Gov03np 150 148657

LETOR 3.0 Gov03hp 150 147606

LETOR 3.0 Gov04td 75 74146

LETOR 3.0 Gov04np 75 73834

LETOR 3.0 Gov04hp 75 74409

Ris. 1. Blokkdiagram av hybrid MVL-algoritmen basert på genetiske algoritmer og Nelder-Mead-metoden

For å rangere LTR-MGA, oppnås en vektor med WC *-vekter for rangeringsfunksjonen. Videre, basert på data fra testsamlingen LETOYA, ble rangeringskvaliteten vurdert, for hvilke kvalitetsmålinger ble beregnet. Diskret beregning av rangeringskvalitet [e-postbeskyttet] evaluerer kvaliteten på de første n dokumentene i systemresponsen. De generelt aksepterte beregningene for å vurdere kvaliteten på rangeringen er [e-postbeskyttet], [e-postbeskyttet] og [e-postbeskyttet] Men for en mer detaljert vurdering av endringer i metrikken avhengig av verdiene [e-postbeskyttet] for alle n fra 1 til 10. For å sammenligne effektiviteten til den utviklede algoritmen med eksisterende løsninger, ble det utført en komparativ analyse ved å bruke rangeringsalgoritmene gitt i LETOIA 3.0-samlingene. Resultatene av å kjøre algoritmene for testsamlingene TB2003 og TB2004 for NDCG-metrikken er vist i fig. 2. Resultatene viser at LTR-MGA-algoritmen overgår testalgoritmene, med de høyeste verdiene

er for [e-postbeskyttet](på nivået til det første dokumentet). Overlegenheten til LTR-MGA-algoritmen skyldes det faktum at, i motsetning til testrangeringsfunksjonene som ble vurdert i eksperimentene, i den foreslåtte tilnærmingen for å optimalisere rangeringsfunksjonen, er det NDCG-metrikken som brukes som objektivfunksjon.

For å vurdere rangeringskvaliteten ved bruk av den foreslåtte LTR-MGA-algoritmen, ble verdiene til kvalitetsmålingene for rangering av dokumenter i søkeresultatene beregnet (fig. 3). Sammenligning av rangeringsresultatene (tabell 2) ved bruk av den grunnleggende rangeringsfunksjonen, den grunnleggende LTR-GA-algoritmen og den modifiserte LTR-MGA-algoritmen indikerer fordelen med sistnevnte.

I tillegg estimerte studien tiden som kreves for MO-rangering. Dette er nødvendig for å bekrefte at den foreslåtte LTR-MGA-metoden er overlegen i denne indikatoren til tilnærmingen basert på bruk av tradisjonelle

Ris. 2. Sammenligning av maskinlæringsalgoritmer for rangering

i henhold til NDCG-metrikken for testsamlinger: til venstre - Gov03td-datasettet, til høyre - Gov04td-datasettet

Ris. 3. Evaluering av rangeringskvalitetsmålinger for den grunnleggende rangeringsformelen og læringsalgoritmene LTR-GA og LTR-MGA

Rangeringskvalitetsmålinger for forskjellige rangeringsalgoritmer for maskinlæring

tabell 2

Rangeringskvalitetsmåling Grunnleggende rangeringsfunksjon LTR-GA LTR-MGA Øker den metriske verdien, %

Nøyaktighet 0,201 0,251 0,267 26,81

[e-postbeskyttet](første 5 dokumenter) 0,149 0,31 0,339 90,47

[e-postbeskyttet](første 10 dokumenter) 0,265 0,342 0,362 29,14

Bpref 0,303 0,316 0,446 51,49

Fullstendighet 0,524 0,542 0,732 39,03

* De beste verdiene for den tilsvarende beregningen er uthevet i grått

onnogo genetisk algoritme (LTA-OL). Resultatene av å sammenligne tiden brukt på utførelse av algoritmene LТЯ-OL og LТЯ-MOL er vist i tabellen. 3.

7. Konklusjon. Dermed har studiene som er utført vist at når du bruker den foreslåtte tilnærmingen, øker verdiene til de vurderte rangeringsberegningene i ISS (i gjennomsnitt med 19,55% sammenlignet med LTS-OL-algoritmen). Dette bekrefter at LITA-MOL fungerer korrekt og forbedrer rangeringsfunksjonen betydelig, med andre ord, den løser optimaliseringsproblemet. Bruker en modifisert algoritme

På grunn av bruken av den lokale optimaliseringsmetoden og de introduserte restriksjonene på antall beregninger av målfunksjonen, har tiden for maskinlæring gått ned (i gjennomsnitt med 17,71 % sammenlignet med bruken av den tradisjonelle genetiske algoritmen LTIAOL).

Den utviklede maskinlæringsalgoritmen for rangering av LTL-MOL kan brukes i ISS som bruker en rangeringsmodell basert på en kombinasjon av enkle rangeringsfunksjoner. Noen begrensninger for anvendelsen av den foreslåtte tilnærmingen bør imidlertid tas i betraktning. Basert

Estimerer utførelsestiden for maskinlæringsrangering avhengig av størrelsen på opplæringsutvalget

Tabell 3

Størrelsen på tekstdokumentsamlingen

LTR-GA utførelsestid

LTR-MGA kjøretid

Reduksjon av utførelsestid, %

Mener

* De beste verdiene for den tilsvarende testsamlingsstørrelsen er uthevet i grått

av de oppnådde resultatene, ble det avslørt at etter MO, er den høyeste økningen observert i rangeringskvalitetsmålingen, hvis verdi ble tatt som den objektive funksjonen. Samtidig kan det hende at andre beregninger ikke har en betydelig forbedring, og i noen tilfeller til og med forverrer verdiene deres. Som en av de mulige tilnærmingene for å eliminere denne mangelen, foreslås det å løse optimaliseringsproblemet som et multikriterium: å jevnt forbedre flere hovedrangeringsberegninger for søkeresultater, i stedet for å optimalisere en. I tillegg, i videre studier, er det planlagt å utvikle en metodikk for å konstruere en objektiv funksjon basert på en lineær konvolusjon av de viktigste rangeringskvalitetsmålingene for å forbedre.

Bibliografisk liste

1. Tie-Yan Liu. Lære å rangere for informasjonsinnhenting // Journalgrunnlag og trender innen informasjonsinnhenting. Vol. 3, utgave 3. mars 2009. S. 225-331.

2. Christopher J. C. Burges, Tal Shaked, Erin Renshaw. Lære å rangere ved å bruke Gradient Descent // Proceeding ICML "05 Proceedings of the 22nd international conference on Machine learning. 2005. S. 89-96.

3. Semenikhin, S. V. Undersøkelse av tilnærminger til maskinlæring for rangering av dokumenter ved et søkesystem basert på genetiske algoritmer / S. V. Semenikhin // Ungt Russland: avanserte teknologier i industrien. - 2013. - Nr. 2. - S. 82 - 85.

4. Multikriterieoptimalisering basert på genetiske algoritmer i syntese av kontrollsystemer: monografi. / L. A. Denisova. - Omsk: Forlag til OmSTU, 2014 .-- 170 s. - ISBN 978-5-8149-1822-2.

5. Denisova, L. A. Automatisering av parametrisk syntese av kontrollsystemet ved hjelp av en genetisk algoritme / L. A. Denisova, V. A. Meshcheryakov // Automatisering i industrien. - 2012. - Nr. 7. - S. 34 - 38.

6. Huber, Peter J. Robust estimering av en plasseringsparameter // Annals of Statistics. - 1964. - Nr. 53. - S. 73-101.

7. Semenikhin, S. V. Automatisering av informasjonsinnhenting basert på multikriteria-optimalisering og genetiske algoritmer / S. V. Semenikhin, L. A. Denisova // Dynamics of systems, mechanisms and machines. - 2014. - Nr. 3. - S. 224 - 227.

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

9. Ageev, MS Offisielle beregninger av RMIP "2004 / MS Ageev, IE Kuralenok // II russisk seminar om vurdering av metoder for informasjonsinnhenting (ROMIP 2004), Pushchino, 2004: tr.; Ed. S. Nekrestyanova. - St. Petersburg: Research Institute of Chemistry, St. Petersburg State University - S. 142-150.

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

Svyatoslav Vitalievich SEMENIKHIN, doktorgradsstudent ved Institutt for automatisert informasjonsbehandling og kontrollsystemer. Korrespondanseadresse: [e-postbeskyttet] DENISOVA Lyudmila Albertovna, doktor i tekniske vitenskaper, førsteamanuensis ved Institutt for automatisert informasjonsbehandling og kontrollsystemer. Korrespondanseadresse: [e-postbeskyttet]

Ofte i praksisen til systemanalytikeren som utgjør FRD, er det ting som ikke er formalisert. Et eksempel kan være krav som:

  • Appen skal kjøre raskt
  • Applikasjonen bør forbruke lite trafikk
  • Videomaterialet skal være av høy kvalitet.

Slike krav, når de er skrevet som de er i FRD, er en monstrøs kilde til problemer i etterkant. Å formalisere slike krav er en konstant hodepine for analytikeren. Vanligvis løser en analytiker et problem i to trinn: Først fremsettes et "tilsvarende" formkrav, deretter bevises det i kommunikasjonsprosessen (med en kunde, fagekspert osv.) at et slikt formkrav kan erstatte det opprinnelige kravet. Generelt sett er ikke kravet vi mottok funksjonelt; den beskriver ikke "hva" systemet skal kunne gjøre, men "hvordan det skal gjøres". Dessuten bør "hvordan gjøre det" formuleres med en spesifikk kvalitativ egenskap.

Det var en ingress til oppgaven at en systemanalytiker skulle være flytende i det matematiske apparatet og samtidig kunne forklare «matematikk» for kunden. La oss nå se på et eksempel.

Om klassifiseringsproblemet

La oss si at vi skriver FRD for et kontekstuelt annonseringssystem som ligner på Amazon Omakase. En av modulene i vårt fremtidige system vil være en kontekstanalysator:

Analysatoren tar teksten til en nettside som input og utfører sin kontekstuelle analyse. Hvordan han gjør dette er av liten interesse for oss; det er viktig at vi ved utgangen får et sett med produktkategorier (hvis settet er forhåndsbestemt). Videre, basert på disse kategoriene, kan vi vise bannere, produktlenker (som Amazon), etc. Analysatoren er fortsatt en svart boks for oss, som vi kan stille et spørsmål til (i form av en dokumenttekst) og få svar.

Kunden ønsker at analysatoren skal være "flink til å kontekstualisere". Vi må artikulere hva dette kravet betyr. La oss først snakke om konteksten som sådan, dvs. omtrent det samme settet med kategorier som returneres av analysatoren. Du kan definere dette som en klassifiseringsoppgave når et dokument (webside) er tilordnet mange klasser fra et forhåndsbestemt antall; i vårt tilfelle er klasser produktkategorier. Klassifiseringsoppgaven er ganske vanlig i tekstbehandling (for eksempel spamfiltre).

Vurderingsberegninger

Vurder evalueringsberegningene som gjelder for klassifiseringsproblemet. La oss si at vi vet riktig kategorier for en rekke dokumenter. La oss gruppere svarene fra vår hypotetiske analysator som følger:

  • Virkelig positiv ( ekte positive) - de kategoriene som vi forventet å se og mottatt ved utgangen
  • Falsk positiv ( falske positiver) - kategorier som ikke skal være i utgangen og analysatoren returnerte dem feilaktig ved utgangen
  • Falsk negativ ( falske negativer) - kategorier som vi forventet å se, men analysatoren oppdaget dem ikke
  • Ekte negativ ( ekte negativer) - kategorier som ikke skal være i utgangen, og de er også helt fraværende fra analysatorutgangen.

La oss kalle et testsett for et sett med dokumenter (websider) som vi vet de riktige svarene på. Hvis vi teller antall treff for hver kategori (teller vi treff etter par dokument - kategori), får vi den kanoniske tabellen over distribusjon av svar:

Den venstre kolonnen i tabellen er de "riktige" kombinasjonene av dokumenter og kategorier (som vi forventer å være tilstede i utgangen), den høyre er feil. Den øverste raden i tabellen er klassifisererens positive svar, den nederste raden er negativ (i vårt tilfelle, fraværet av en kategori i svaret). Hvis antallet av alle parene dokument - kategori er lik N, da er det lett å se det

Generelt kan du nå skrive ned kundens krav i skjemaet (antall feil svar er null) og stoppe der. Men i praksis eksisterer ikke slike systemer og analysatoren vil selvfølgelig jobbe med feil i forhold til testprøven. Nøyaktighetsberegningen vil hjelpe oss å forstå prosentandelen av feil:

I telleren ser vi diagonalen til matrisen - det totale antallet riktige svar, som er delt på det totale antallet spørsmål. For eksempel har en analysator som gir 9 riktige svar av 10 mulige en nøyaktighet på 90 %.

Metrikk F 1

Et enkelt eksempel på at nøyaktighetsmålingen ikke er anvendelig, er problemet med å definere et skomerke. La oss si at vi ønsker å telle antall omtaler av skomerker i teksten. Vurder et klassifiseringsproblem som tar sikte på å avgjøre om en spesifisert enhet er et skomerke (Timberland, Columbia, Ted Baker, Ralph Lauren, etc.). Med andre ord deler vi enhetene i teksten inn i to klasser: A - Skomerke, B - Alt annet.

Tenk nå på en degenerert klassifisering som ganske enkelt returnerer klasse B (alt annet) for noen enheter. For denne klassifikatoren vil antallet sanne positive svar være 0. Generelt sett, la oss tenke på temaet, men hvor ofte møter vi skomerker når vi leser tekst på Internett? Det viser seg merkelig nok at i det generelle tilfellet 99,9999 % av ordene i teksten er ikke skomerker... La oss konstruere en distribusjonsmatrise med svar for et utvalg på 100 000:

La oss beregne nøyaktigheten, som vil være lik 99990/100000 = 99,99%! Så vi bygde enkelt en klassifisering som i hovedsak ikke gjør noe, men som har en stor prosentandel av riktige svar. Samtidig er det helt klart at vi ikke løste problemet med å definere et skomerke. Faktum er at de riktige enhetene i vår tekst er sterkt "utvannet" med andre ord som ikke har noen betydning for klassifisering. Gitt dette eksemplet er det forståelig å ønske å bruke andre beregninger. For eksempel verdien tn er tydelig "søppel" - det ser ut til å bety riktig svar, men overvekst tn som et resultat, "undertrykker" bidraget sterkt tp(som er viktig for oss) inn i nøyaktigheten.

La oss definere et mål på presisjon (P, presisjon) som:

Som det er lett å se, karakteriserer nøyaktighetsmålet hvor mange positive svar mottatt fra klassifikatoren som er riktige. Jo høyere nøyaktighet, jo lavere antall falske treff.

Presisjonsmålet gir imidlertid ikke en ide om hvorvidt klassifisereren returnerte alle riktige svar. For dette er det et såkalt tilbakekallingstiltak (R, tilbakekalling):

Fullstendighetsmålet kjennetegner klassifisererens evne til å "gjette" så mange positive svar som mulig fra de forventede. Vær oppmerksom på at falske positive ikke påvirker denne beregningen på noen måte.

Precision og Recall gir en ganske omfattende karakterisering av klassifisereren, og fra forskjellige vinkler. Vanligvis, når du bygger systemer av denne typen, må du hele tiden balansere mellom disse to beregningene. Hvis du prøver å heve Recall ved å gjøre klassifikatoren mer "optimistisk", vil det resultere i et fall i Presisjon på grunn av en økning i falske positiver. Hvis du justerer klassifiseringen din, gjør den mer "pessimistisk", for eksempel ved å filtrere resultatene strengere, vil dette med en økning i presisjon føre til et samtidig fall i tilbakekalling på grunn av avvisning av et visst antall riktige svar. Derfor er det praktisk å bruke en mengde for å karakterisere klassifikatoren, den såkalte metrikken F 1:

Faktisk er det bare det harmoniske gjennomsnittet av verdiene til P og R. Metrikken F 1 når sin maksimale 1 (100%) hvis P = R = 100%.
(det er lett å anslå at for vår degenererte klassifiser F 1 = 0). F 1-verdien er en av de vanligste beregningene for denne typen systemer. Det er F 1 vi skal bruke for å formulere terskelkvaliteten til analysatoren vår i FRD.

Det er to hovedtilnærminger for å beregne F 1 for klassifiseringsproblemet.

  • Totalt F 1: resultatene for alle klasser er oppsummert i én enkelt tabell, i henhold til denne beregningen F 1 beregnes.
  • Medium F 1: for hver klasse danner vi vår egen kontingensmatrise og vår egen verdi F 1, så tar vi et enkelt aritmetisk gjennomsnitt for alle klasser.

Hvorfor er den andre metoden nødvendig? Poenget er at utvalgsstørrelsene for ulike klasser kan variere sterkt. For noen klasser kan vi ha svært få eksempler, og for noen - mange. Som et resultat vil beregningene for en "stor" klasse, som er oppsummert i en felles tabell, "skåre" alle de andre. I en situasjon hvor vi ønsker å vurdere kvaliteten på systemet mer eller mindre jevnt for alle klasser, er det andre alternativet bedre egnet.

Trenings- og prøveeksempel

Ovenfor vurderte vi klassifiseringen på en enkelt prøve, som vi vet alle svarene på. Når det brukes på kontekstanalysatoren vi prøver å beskrive, ser ting litt mer komplisert ut.

Først av alt må vi fikse produktkategoriene. Situasjonen når vi garanterer en viss verdi på F 1, og settet med klasser kan utvides i det uendelige, er praktisk talt en blindvei. Derfor er det i tillegg fastsatt at settet med kategorier er faste.

Vi beregner verdien av F 1 for en gitt prøve, som er kjent på forhånd. Denne prøven kalles vanligvis undervisning... Vi vet imidlertid ikke hvordan klassifikatoren vil oppføre seg på dataene vi ikke kjenner. For disse formål, den såkalte testprøve noen ganger kalt gyldent sett... Forskjellen mellom trening og testsett er rent spekulativt: Når alt kommer til alt, med en rekke eksempler, kan vi kutte det inn i trening og testsett som vi vil. Men for selvlærende systemer er dannelsen av riktig treningsprøve svært kritisk. Feil valgte eksempler kan i stor grad påvirke kvaliteten på systemet.

En typisk situasjon er når klassifisereren viser et godt resultat på treningssettet og feiler fullstendig på testsettet. Hvis klassifiseringsalgoritmen vår er basert på maskinlæring (dvs. avhenger av treningsutvalget), kan vi evaluere kvaliteten ved hjelp av et mer komplekst "flytende" skjema. For å gjøre dette deler vi alle eksemplene vi har, for eksempel i 10 deler. Vi fjerner den første delen og bruker den til å trene algoritmen; de resterende 90 % av eksemplene brukes som en testprøve og verdien av F 1 beregnes. Så fjerner vi den andre delen og bruker den som en treningsdel; vi får en annen verdi på F 1 osv. Som et resultat fikk vi 10 verdier av F 1, nå tar vi deres aritmetiske gjennomsnitt, som vil bli det endelige resultatet. Igjen, dette er måten (også kalt kryssfold validering) er bare meningsfylt for maskinlæringsbaserte algoritmer.

Når vi kommer tilbake til å skrive FRD, merker vi at situasjonen vår er mye verre. Vi har et potensielt ubegrenset sett med innganger (alle nettsider på Internett), og det er ingen måte å evaluere konteksten til en side på annet enn menneskelig deltakelse... Dermed kan prøven vår bare dannes for hånd, og det avhenger sterkt av kompilatorens innfall (og det er en person som bestemmer om en side skal tilordnes en bestemt kategori). Vi kan estimere mål F 1 på eksemplene vi kjenner, men vi kan bare ikke finne ut F 1 for alle internettsider... Derfor, for potensielt ubegrensede datasett (som nettsider, som det finnes utallige tall av), brukes noen ganger metoden "uten tilsyn". For å gjøre dette velges et visst antall eksempler (sider) tilfeldig, og fra dem komponerer operatøren (personen) det riktige settet med kategorier (klasser). Vi kan deretter teste klassifisereren på disse utvalgte eksemplene. Videre, forutsatt at eksemplene vi har valgt er typisk, kan vi grovt anslå nøyaktigheten til algoritmen (Presisjon). Samtidig kan vi ikke vurdere Recall (det er ikke kjent hvor mange riktige svar som er utenfor grensene for eksemplene vi har valgt), derfor kan vi heller ikke beregne F 1.

Derfor, hvis vi ønsker å vite hvordan algoritmen oppfører seg på alle mulige innganger, er det beste vi kan estimere i denne situasjonen den omtrentlige presisjonsverdien. Hvis alle er enige om å bruke en forhåndsbestemt fast prøve, er gjennomsnittet F 1 for denne prøven.

Etter hvert?

Som et resultat må vi gjøre følgende:

  1. Frys treningsprøven. Treningsutvalget vil bygges på bakgrunn av kundens ideer om «riktig» kontekst.
  2. Fiks et sett med kategorier for analysatoren vår. Kan vi ikke beregne F 1 fra et udefinert sett med klasser?
  3. Beskriv kravet i skjemaet: Analysatoren bør identifisere en kontekst med en gjennomsnittlig F 1 på minst 80 %.(for eksempel)
  4. Forklar dette til kunden.

Som du ser er det ikke lett å skrive FRD for et slikt system (spesielt det siste punktet), men det er mulig. Når det gjelder terskelverdien F 1, kan du i slike tilfeller bygge på verdiene til F 1 for lignende klassifiseringsproblemer.

1

De siste årene har det vært mye oppmerksomhet rundt bilderekonstruksjon, derfor er kvalitetsvurdering en viktig oppgave for å sammenligne ulike metoder for bilderekonstruksjon. I mange tilfeller vil rekonstruksjonsteknikker uskarpe tekstur og struktur når man gjenoppretter store områder med forvrengte pikselverdier. Det er foreløpig ingen objektiv kvantitativ vurdering av utvinningsresultatene, og derfor bruker mange tilnærminger ekspertvurderinger. Denne artikkelen diskuterer en ny tilnærming til å vurdere kvaliteten på bilderekonstruksjon basert på maskinlæring ved bruk av en menneskelig synsmodell, som består i det faktum at lokale områder av bilder kan representeres av deskriptorer i form av noen parametriske distribusjoner. Videre tillater støttevektorregresjonsmetoden å forutsi den oppfattede kvaliteten til de rekonstruerte bildene i samsvar med ekspertvurderinger. Oppgaven viser at kvalitetsvurderingen oppnådd ved bruk av tilnærmingen ovenfor, korrelerer med den subjektive kvalitetsvurderingen.

maskinlæring

visuell kvalitet

gjenoppbygging

bildebehandling

1. Gastaldo P. Maskinlæringsløsninger for objektiv visuell kvalitetsvurdering / 6. internasjonale workshop om videoprosessering og kvalitetsmålinger for forbrukerelektronikk, VPQM. - Vol. 12. - 2012.

2. Bertalmio M., Bertozzi A., Sapiro G. Navier-Stokes, uid-dynamikk og bilde- og videomaleri / Hawaii: Proc. IEEE Computer Vision and Pattern Recognition (CVPR). - 2001.– PP. 213-226.

3. Criminisi A., Perez P., Toyama K. Regionutfylling og fjerning av objekter ved eksempelbasert bildemaling / IEEE Trans. Bildeprosess. - 13 (9). - 2004. - PP. 28-34.

4. Vijay M., Cheung, S.S. Øyesporingsbasert perseptuell bildekvalitetsanalyse / bildebehandling (ICIP), 17. IEEE internasjonale konferanse om IEEE. - 2010. - PP. 1109 - 1112.

5. Ardis P. A., Singhal A. Visuell fremtredende metrikk for bildemaling / SPIE Electronic Imaging. International Society for Optics and Photonics. - 2009.

6. Cheung S.S., Zhao J., Venkatesh V. Effektiv objektbasert videomaling / bildebehandling, 2006 IEEE International Conference on. - 2006. - PP. 705-708.

7. Peretyagin G.I. Representasjon av bilder ved Gaussiske tilfeldige felt / autometri. - Nr. 6. - 1984. - S. 42 - 48.

8. Frantc V.A., Voroni V.V., Marchuk V.I., Sherstobitov A.I., Agaian S., Egiazarian K. Machine learning approach for objektiv inpainting quality assessment / Proc. SPIE 9120, mobil multimedia / bildebehandling, sikkerhet og applikasjoner. - Vol. 91200S. - 2014.

9. Paul A., Singhal A., og. Brown C. Inpainting kvalitetsvurdering / Journal of Electronic Imaging. - Vol. 19. - 2010. - PP. 011002-011002.

En objektiv metrikk for bildekvalitet er en viktig del av bildebehandlingssystemer. En av de viktige anvendelsene av objektive beregninger for å vurdere bildekvalitet er å vurdere effektiviteten til algoritmer og bildebehandlingssystemer. Til tross for det store antallet publikasjoner om dette emnet, vurderes problemet med å vurdere kvaliteten på rekonstruerte bilder bare i noen få. Samtidig har problemet med å gjenopprette de tapte bildeområdene fått betydelig oppmerksomhet den siste tiden.

Det er to mulige tilnærminger til å vurdere kvaliteten på bilder: kvantitativ vurdering ved bruk av matematiske metoder (standardfeil, Lp-norm, tiltak som tar hensyn til særegenhetene ved bildeoppfatning av det menneskelige visuelle systemet) og subjektiv vurdering basert på ekspertvurderinger.

Kvalitetsvurderingen oppnådd ved bruk av eksisterende tilnærminger kan avvike betydelig fra vurderingen oppnådd ved hjelp av menneskelige eksperter. De fleste av de eksisterende tilnærmingene til kvalitetsvurdering bruker et referansebilde. Dessverre er det i mange tilfeller ikke et referansebilde tilgjengelig. Slike oppgaver inkluderer oppgaven med å rekonstruere tapte piksler. Derfor haster oppgaven med å utvikle en kvantitativ metrikk for å vurdere kvaliteten på rekonstruerte bilder.

Det er gjort betydelige fremskritt i utviklingen av kvantitative vurderinger av bildekvalitet. De introduserte kriteriene er imidlertid ikke perfekte nok. De fleste forsøk på å finne akseptable estimater for bildekvalitet er spesifikke tilfeller. En viss vurdering er foreslått, basert på noen fysiologiske forutsetninger, og oftere enkelt praktisk for analyse og beregninger, og deretter vurderes dens egenskaper. Opprettelsen av bedre estimater av kvaliteten på bilder er assosiert med en dypere studie av egenskapene til det menneskelige visuelle systemet.

Hensikten med dette arbeidet er utvikling av en metrikk for å vurdere kvaliteten på bilder ved behandling av rekonstruksjonsmetoder basert på maskinlæring.

Matematisk modell

Artikkelen bruker betegnelser som ligner på de som er brukt i verket. Hele bildet består av to ikke-overlappende områder: det rekonstruerte området og det kjente området. Figur 1 viser et eksempel på plasseringen av disse områdene.

Fig 1. Bildemodell

Bildet og området Ω inne i det er kjent. Rekonstruksjonsoppgaven er å modifisere verdiene til pikslene i bildet inne i regionen Ω, slik at regionen ikke skiller seg ut mot bakgrunnen til det omkringliggende bildet. Hensikten med rekonstruksjon kan være å reparere skadede deler av et bilde (for eksempel riper og sprekker i gamle fotografier) ​​eller å fjerne uønskede objekter fra et bilde. Domenet Ω vist i figur 1 er alltid brukerdefinert, dvs. å definere domenet Ω er ikke en del av rekonstruksjonsproblemet.

Algoritme for å vurdere kvaliteten på bildegjenoppretting

Generelt, for en vellykket konstruksjon av en bildekvalitetsmåling basert på maskinlæring, er det nødvendig å løse følgende tre problemer:

1. Bestemmelse av rommet av funksjoner som fungerer som en beskrivelse av inngangssignalene.

2. Valg av kartleggingsfunksjon fra funksjonsrom til kvalitetsvurderingsrom.

3. Trening av systemet og kontroll av stabiliteten (sjekke for omskolering osv.).

Blokkdiagrammet for den valgte tilnærmingen er vist i figur 2 og inneholder følgende trinn:

1. Velge et område av interesse (ved hjelp av et oppmerksomhetskart);

2. Beregning av funksjoner på lavt nivå i bildet;

3. Bygge en beskrivelse av det gjenvunnede området basert på funksjoner på lavt nivå;

4. Løse regresjonsproblemet for å få en numerisk kvalitetsvurdering basert på den oppnådde deskriptorvektoren.

Ris. 2. Blokkdiagram av algoritmen

Arbeidet viser at visuell oppmerksomhet spiller en viktig rolle i menneskets visuelle persepsjon. Til enhver tid ser det menneskelige øye tydelig bare en liten del av scenen, mens et mye større område av scenen oppfattes som "uskarpt". Denne "uklare informasjonen" er nok til å vurdere viktigheten av ulike områder av scenen og for å trekke oppmerksomhet til viktige områder av synsfeltet. De fleste metoder produserer et oppmerksomhetskart - et todimensjonalt bilde der verdiene til hver piksel er assosiert med viktigheten av det tilsvarende området.

For å få oppmerksomhetskart benyttes Saliency Toolbox beskrevet i arbeidet. Denne verktøykassen bruker en modell av det menneskelige visuelle systemet. Det er viktig å merke seg at det ikke gir mening å sammenligne det rekonstruerte området i originalen og det rekonstruerte bildet, da det generelle innholdet kan endre seg betydelig. Det foreslås å bruke følgende uttrykk for å velge områder av interesse:

.

Her er oppmerksomhetskartet for det rekonstruerte bildet, og oppmerksomhetskartverdien som tilsvarer pikselen. I uttrykket ovenfor er blikktettheten beregnet innenfor og utenfor det rekonstruerte bildeområdet. Verdien brukes som en terskelverdi når det skal avgjøres hvilke deler av bildet som skal brukes i evalueringen og hvilke som ikke skal. Bare de områdene som.

Spektralrepresentasjoner brukes som funksjoner på lavt nivå i lokale områder. Videre foreslås analysen av følgende Fourier, Walsh, Haar-baser ved bruk av effektivitetsvektoren. For riktig beregning av komponentene i systemeffektivitetskriteriet i nærvær av støy og forvrengning, er det nødvendig å bruke statistisk gjennomsnitt.

Ved syntetisering av algoritmer for behandling av signaler og systemer, brukes oftest kriteriet om minimum gjennomsnittlig risiko, noe som gjør det mulig å ta hensyn til statistikk over interferens og signaler. Når du implementerer frekvenstransformasjoner og evaluerer beregningskostnader, er valget av grunnlaget for spektral dekomponering avgjørende. For å optimalisere valget av grunnlaget for signaldekomponering, er det tilrådelig å bruke kriteriet for minimum gjennomsnittlig risiko. For dette er det nødvendig at klassen av signaler og prosesser som brukes spesifiseres og deres sannsynlige egenskaper er kjent.

For en gitt klasse av todimensjonale prosesser antas det at sannsynligheten for hver av underklassene er kjent, der indeksen er nummeret til underklassen med noen felles egenskaper, og er implementeringsnummeret til prosessen til den th underklassen. . Vi vil sammenligne et sett med basissystemer Utvidelse i en generalisert Fourier-serie i det -th basissystemet i generell form har formen: .

Med et begrenset antall ledd i Fourier-serien, kan det karakteriseres ved en feil: hvor er avstanden i en metrikk, er delsummen av leddene til Fourier-serien.

Maskinvarebestemmelsen av koeffisientene til Fourier-serien eller deres beregning er forbundet med visse beregningskostnader. La oss introdusere en tapsfunksjon som tar hensyn til både tapene knyttet til avkortingsfeilen til Fourier-serien og kostnadene for maskinvare og beregningsressurser:

.

Verdien av den betingede risikoen avhenger av både signalunderklassen og grunnlaget og beregnes ved å beregne et gjennomsnitt av tapsfunksjonen over realisasjonene:

hvor er sannsynlighetstettheten til de analyserte signalene og interferensen; og vinkelparentesene angir den statistiske gjennomsnittsoperasjonen.

Den gjennomsnittlige risikoen bestemmes ved å snitte den betingede risikoen over signalunderklasser:

,

hvor er sannsynligheten for den -te underklassen av signaler.

I samsvar med kriteriet om minimum gjennomsnittlig risiko fra basene, velges den som gjennomsnittsrisikoen er minimal for.

For å vurdere effektiviteten til systemkriteriet for bildebehandlingskvalitet, vurderes testbilder i form av teksturer oppnådd på grunnlag av modellering av Gaussiske felt med spesifiserte korrelasjonsfunksjoner. Generering av homogene normale tilfeldige felt, samt stasjonære normale tilfeldige prosesser, gjøres enklest ved formingsfiltermetoden.

Som et eksempel tar artikkelen for seg representasjonen av tilfeldige realisasjoner med ulike korrelasjonsfunksjoner i basene til trigonometriske funksjoner (Fourier), Walsh og Haar. La oss utføre analysen i de valgte basene for de opprettede bildemodellene med en størrelse på 256 x 256 piksler. Vi vil også sette oss tre typer sannsynlighetsfordeling av underklasser: 1) uniform: ; 2) avtagende:;
3) økende:. La oss velge en kostnadsfunksjon i skjemaet: .

Den gjennomsnittlige risikoen bestemmes ved å snitte den betingede risikoen over signalunderklasser ved å bruke de aksepterte a priori-sannsynlighetene for signalunderklasser, de beregnede verdiene er presentert i tabell 1.

Tabell 1

Gjennomsnittlige risikoverdier

Typer sannsynlighetsfordelinger

Beregningsresultatene presentert i tabellen viser at for de vedtatte modellene av todimensjonale signaler og deres sannsynlighetsfordelinger, har Haar-grunnlaget lavest gjennomsnittlig risiko, og Fourier-grunnlaget har høyest.

Basert på analysen som er utført, vil vi velge et Haar-grunnlag for å representere lokale bilderegioner. Det skal bemerkes at størrelsen på det rekonstruerte området er forskjellig for forskjellige bilder. I denne forbindelse, på grunnlag av funksjoner på lavt nivå, bør det dannes en representasjon på høyt nivå av en fast størrelse. En pose med ord-tilnærming brukes som en representasjon på høyt nivå. Prosedyren for å konstruere en deskriptor (signatur) av det restaurerte området består av to trinn. Det første trinnet er å bygge en ordbok. Den bruker funksjoner på lavt nivå hentet fra alle bildene av treningsbildesettet. For å bygge en ordbok deles de utpakkede funksjonene inn i 100 klasser ved hjelp av en k-betyr klyngealgoritme. Hvert element i ordboken er et tyngdepunkt for en av klassene funnet av klyngingsprosedyren. Hvert ord i ordboken representerer en Haar-transformasjon i en 8x8 bildeblokk. Den resulterende ordboken brukes på det andre trinnet når man konstruerer frekvenshistogrammer for ord fra ordboken som en funksjonsvektor - en beskrivelse av det gjenopprettede området (fig. 3). Det resulterende settet med deskriptorer brukes til å trene regresjonsmaskinen (Support Vector Regression). For å få et histogram over ordfrekvenser trekkes alle visuelt merkbare områder ut fra ordboken (synligheten bestemmes ved hjelp av oppmerksomhetskart) til et bestemt bilde. Deretter påføres en Haar-transformasjon på hver av de ekstraherte blokkene og klassifisering utføres i henhold til det resulterende vokabularet basert på den euklidiske avstanden.

Hver boks i det resulterende histogrammet inneholder antallet funksjoner på lavt nivå for en bestemt klasse i et gitt gjenopprettet område. Etter normalisering av histogrammet oppnås en "signatur" av bildet - en representasjon på høyt nivå av det gjenopprettede området.

Fig. 3. Bygge et histogram

Evaluering av effektiviteten til algoritmen for å evaluere kvaliteten på bildegjenoppretting

For å vurdere effektiviteten til den utviklede metrikken, ble et sett med testbilder brukt. Settet består av 300 bilder. Følgende tilnærminger ble valgt som utvinningsmetoder: en metode basert på søk etter selvliknende regioner, en metode basert på spektrale transformasjoner, en metode basert på beregning av partielle derivater. En ekspertvurdering ble innhentet for hvert bilde, som involverte 30 personer. Resultatene ble delt inn i to ikke-overlappende sett. Den første ble brukt til trening, og den andre ble brukt til å sjekke resultatet.

Ekspertene vurderte kvaliteten på en skala der 5 tilsvarer "Utmerket", og 1 tilsvarer "Veldig dårlig". For å vurdere effektiviteten til den oppnådde metrikken, brukes korrelasjonskoeffisienten mellom vektorene oppnådd ved bruk av den objektive metrikken og ekspertmetoden for kvalitetsvurderinger. Analysen av resultatene oppnådd i tabell 2 viser at den foreslåtte tilnærmingen overgår de kjente kvalitetsmålingene på det valgte settet med testdata.

tabell 2

Korrelasjonskoeffisient for ulike metoder for å beregne målet
bildekvalitetsmålinger

Den foreslåtte tilnærmingen

Konklusjon

Artikkelen presenterer en objektiv beregning for å vurdere bildekvalitet basert på maskinlæring. Kvantitative mål på bildekvalitet er avgjørende for design og evaluering av bildesystemer. Disse tiltakene vil i stor grad bidra til å bli kvitt den møysommelige og unøyaktige moderne metoden for å vurdere bilder gjennom subjektiv undersøkelse. I tillegg kan metoder for å optimalisere bildebehandlingssystemer utvikles på grunnlag av kvantitative mål. Det er vist at kvalitetsvurderingen oppnådd ved bruk av tilnærmingen ovenfor samsvarer med den subjektive kvalitetsvurderingen.

Dette arbeidet ble støttet av Utdannings- og vitenskapsdepartementet i Den russiske føderasjonen innenfor rammen av det føderale målprogrammet "Forskning og utvikling i prioriterte utviklingsområder for Russlands vitenskapelige og teknologiske kompleks for 2014-2020" (avtale nr. 14.586) .21.0013).

Anmeldere:

Fedosov V.P., doktor i tekniske vitenskaper, professor, leder for avdelingen for TOR ved Engineering and Technological Academy ved Southern Federal University, Rostov-on-Don;

Marchuk V.I., doktor i tekniske vitenskaper, professor, leder for avdelingen for radioelektroniske og elektrotekniske systemer og komplekser, ISOiP (gren av DSTU), Shakhty.

Bibliografisk referanse

Voronin V.V. VURDERING AV KVALITETEN PÅ BILDERESTAURERING BASERT PÅ MASKINLÆRING // Moderne problemer innen vitenskap og utdanning. - 2014. - Nr. 6 .;
URL: http://science-education.ru/ru/article/view?id=16294 (dato for tilgang: 02/01/2020). Vi gjør deg oppmerksom på tidsskriftene utgitt av "Academy of Natural Sciences"

I maskinlæringsoppgaver brukes beregninger for å vurdere kvaliteten på modeller og sammenligne ulike algoritmer, og deres valg og analyse er en uunnværlig del av en datasatanists jobb.

I denne artikkelen skal vi se på noen kvalitetskriterier i klassifiseringsproblemer, diskutere hva som er viktig ved valg av metrikk og hva som kan gå galt.

Beregninger i klassifiseringsproblemer

For å demonstrere nyttige funksjoner lære og en visuell representasjon av metrikk, vil vi bruke datasettet vårt på kundekretsen til en teleoperatør, som vi møtte i den første artikkelen av kurset.

La oss laste inn de nødvendige bibliotekene og se på dataene

Importer pandaer som pd importer matplotlib.pyplot som plt fra matplotlib.pylab importer rc, plot importerer seaborn som sns fra sklearn.preprocessing import Labelmblencoder, OneHotEncoder fra sklearn.model_selection importer cross_val_score fra sklearn.linear_modelression GrainFormalarsession GrainFormalization fra skleprocesrn import. fra sklearn.metrics import precision_recall_curve, classification_report from sklearn.model_selection import train_test_split df = pd.read_csv ("../../ data / telecom_churn.csv")

Df.hode (5)


Dataforbehandling

# La oss lage en kartlegging av binære kolonner # og kode staten med dummy-koding (for enkelhets skyld er det bedre å ikke gjøre dette for tremodeller) d = ("Ja": 1, "Nei": 0) df ["Internasjonal plan "] = df [" Internasjonal plan "]. Kart (d) df [" Talepostplan "] = df [" Talepostplan "]. Kart (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 (encoded_state, columns = ["state" + str (i) for i i området (encoded_state.shape)]) df = pd.concat (, akse = 1)

Nøyaktighet, presisjon og tilbakekalling

Før du går videre til selve beregningene, er det nødvendig å introdusere et viktig konsept for å beskrive disse beregningene i form av klassifiseringsfeil - forvirringsmatrise(feilmatrise).
Anta at vi har to klasser og en algoritme som forutsier tilhørigheten til hvert objekt til en av klassene, så vil klassifiseringsfeilmatrisen se slik ut:

Sant positiv (TP) Falsk positiv (FP)
Falsk negativ (FN) True Negative (TN)

Her er responsen til algoritmen på objektet, og er den sanne klasseetiketten på det objektet.
Det er altså to typer klassifiseringsfeil: Falsk Negativ (FN) og Falsk Positiv (FP).

Algoritmetrening og konstruksjon av feilmatrisen

X = df.drop ("Churn", akse = 1) y = df ["Churn"] # Del prøven i tog og test, alle beregninger vil bli evaluert på testdatasettet X_train, X_test, y_train, y_test = train_test_split ( X, y, stratify = y, test_size = 0,33, random_state = 42) # Tren den opprinnelige logistiske regresjonen lr = LogisticRegression (random_state = 42) lr.fit (X_train, y_train) # Bruk funksjonen til å konstruere feilmatrisen fra sklearn dokumentasjon def plot_confusion_matrix (cm, klasser , normalize = False, title = "(! LANG: Forvirringsmatrise", 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="Forvirringsmatrise") plt.savefig("conf_matrix.png") plt.show()!}


Nøyaktighet

En intuitiv, åpenbar og nesten ubrukt beregning er nøyaktighet - prosentandelen av riktige svar i algoritmen:

Denne metrikken er ubrukelig i problemer med ulik klasser, og det er lett å vise det med et eksempel.

La oss si at vi ønsker å evaluere ytelsen til et søppelpostfilter. Vi har 100 e-poster som ikke er spam, hvorav 90 klassifisereren vår identifiserte riktig (sann negativ = 90, falsk positiv = 10) og 10 spam e-poster, hvorav 5 klassifisereren også identifiserte riktig (sann positiv = 5, falsk negativ = 5 ) .
Så nøyaktighet:

Men hvis vi bare forutsier alle e-poster som ikke-spam, vil vi få en høyere nøyaktighet:

Samtidig har modellen vår absolutt ingen prediktiv kraft, siden vi i utgangspunktet ønsket å identifisere spam-meldinger. For å overvinne dette vil vi få hjelp av overgangen fra en felles beregning for alle klasser til separate indikatorer for kvaliteten på klassene.

Presisjon, tilbakekalling og F-mål

For å vurdere ytelsen til algoritmen på hver av klassene separat, introduserer vi presisjons- og tilbakekallingsmålingene.

Presisjon kan tolkes som andelen objekter som klassifiseres som positive og samtidig virkelig positive, og gjenkalling viser hvor stor andel av objekter av en positiv klasse av alle objekter i en positiv klasse funnet av algoritmen.

Det er introduksjonen av presisjon som ikke tillater oss å skrive alle objekter i en klasse, siden vi i dette tilfellet får en økning i False Positive-nivået. Tilbakekalling demonstrerer algoritmens evne til å oppdage en gitt klasse generelt, og presisjon demonstrerer evnen til å skille denne klassen fra andre klasser.

Som vi bemerket tidligere, er det to typer klassifiseringsfeil: Falsk positiv og falsk negativ. I statistikk kalles den første typen feil en type I-feil, og den andre kalles en type II-feil. I vårt problem med å bestemme antall abonnenter, vil feilen av den første typen være aksept av en lojal abonnent for en utgående, siden vår nullhypotese er at ingen av abonnentene forlater, og vi avviser denne hypotesen. Følgelig vil en feil av den andre typen være "hopping" av den utgående abonnenten og feilaktig aksept av nullhypotesen.

Presisjon og tilbakekalling avhenger ikke, i motsetning til nøyaktighet, av forholdet mellom klasser og er derfor anvendelige under forhold med ubalanserte prøver.
Ofte i praksis er oppgaven å finne den optimale (for kunden) balansen mellom disse to beregningene. Et klassisk eksempel er problemet med å bestemme kundeavgang.
Vi kan tydeligvis ikke finne av alle utgående kunder og kun deres. Men etter å ha identifisert strategien og ressursen for kundeoppbevaring, kan vi velge nødvendig presisjons- og tilbakekallingsterskler. Du kan for eksempel fokusere på å beholde kun kunder med høy avkastning eller de som er mer sannsynlig å forlate fordi vi har begrensede ressurser til kundesenteret.

Vanligvis, når du optimerer hyperparametrene til en algoritme (for eksempel ved iterasjon over et rutenett GridSearchCV), brukes en beregning, hvis forbedring vi forventer å se på testprøven.
Det er flere forskjellige måter å kombinere presisjon og gjenkalling til et samlet mål på kvalitet. F-mål (generelt) - harmonisk gjennomsnittlig presisjon og tilbakekalling:

I dette tilfellet bestemmer den vekten av nøyaktigheten i metrikken, og når dette er det harmoniske gjennomsnittet (med en faktor på 2, slik at i tilfelle presisjon = 1 og tilbakekalling = 1 å ha)
F-målet når sitt maksimum når fullstendigheten og presisjonen er lik én, og er nær null hvis ett av argumentene er nær null.
Sklearn har en hendig funksjon _metrics.classification rapportere tilbakekalling, presisjon og F-mål for hver av klassene, samt antall forekomster av hver klasse.

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

klasse presisjon minnes f1-score Brukerstøtte
Ikke-kjernet 0.88 0.97 0.93 941
Kjernet 0.60 0.25 0.35 159
snitt / totalt 0.84 0.87 0.84 1100

Det skal bemerkes her at i tilfelle problemer med ubalanserte klasser, som råder i virkelig praksis, er det ofte nødvendig å ty til teknikkene for kunstig modifisering av datasettet for å utjevne klasseforholdet. Det er mange av dem og vi vil ikke berøre dem, du kan se på noen metoder og velge den som passer din oppgave.

AUC-ROC og AUC-PR

Når vi konverterer det virkelige svaret til algoritmen (som regel sannsynligheten for å tilhøre en klasse, se SVM separat) til en binær etikett, må vi velge en terskel hvor 0 blir 1. En terskel lik 0,5 virker naturlig og nærliggende , men det er ikke alltid det viser seg å være optimalt, for eksempel i den nevnte mangelen på klassebalanse.

En av måtene å evaluere modellen som helhet, uten å være bundet til en spesifikk terskel, er AUC-ROC (eller ROC AUC) - område ( EN rea U nder C urve) under feilkurven ( R mottaker O perating C karakteristisk kurve). Denne kurven er en linje fra (0,0) til (1,1) i True Positive Rate (TPR) og False Positive Rate (FPR) koordinater:

Vi kjenner allerede TPR, dette er fullstendighet, og FPR viser hvor stor andel av objekter av den negative klassen algoritmen forutså feil. I det ideelle tilfellet, når klassifikatoren ikke gjør noen feil (FPR = 0, TPR = 1), får vi arealet under kurven lik én; ellers, når klassifikatoren tilfeldig gir ut klassesannsynligheter, vil AUC-ROC tendere til 0,5, siden klassifikatoren vil gi ut samme antall TP og FP.
Hvert punkt på grafen tilsvarer valget av en viss terskel. Arealet under kurven viser i dette tilfellet kvaliteten på algoritmen (mer er bedre), i tillegg er brattheten i selve kurven viktig – vi ønsker å maksimere TPR ved å minimere FPR, noe som betyr at kurven vår ideelt sett bør ha en tendens til å punktet (0,1).

ROC-kurvetegningskode

Sns.set (font_scale = 1.5) sns.set_color_codes ("dempet") 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-kurve") plt.plot (,) plt.xlim () plt.ylim () plt.xlabel ("False Positive Rate" ") plt.ylabel (" True Positive Rate ") plt.title (" ROC-kurve ") plt.savefig (" ROC.png ") plt.show ()


AUC-ROC-kriteriet er motstandsdyktig mot ubalanserte klasser (spoiler: dessverre, ikke alt er så entydig) og kan tolkes som sannsynligheten for at et tilfeldig valgt positivt objekt vil bli rangert av klassifisereren høyere (vil ha høyere sannsynlighet for å være positivt ) enn et tilfeldig valgt negativt objekt ...

Tenk på følgende problem: vi må velge 100 relevante dokumenter fra 1 million dokumenter. Vi har mestret to algoritmer:

  • Algoritme 1 returnerer 100 dokumenter, hvorav 90 er relevante. Og dermed,
  • Algoritme 2 returnerer 2000 dokumenter, hvorav 90 er relevante. Og dermed,

Mest sannsynlig vil vi velge den første algoritmen som produserer svært få falske positiver sammenlignet med konkurrenten. Men forskjellen i falsk positiv rate mellom disse to algoritmene ekstremt liten - bare 0,0019. Dette er en konsekvens av at AUC-ROC måler andelen falsk positiv i forhold til sann negativ, og i problemer der den andre (større) klassen ikke er så viktig for oss, kan det hende at den ikke gir et helt dekkende bilde når man sammenligner algoritmer .

For å rette opp situasjonen, la oss gå tilbake til fullstendighet og nøyaktighet:

  • Algoritme 1
  • Algoritme 2

Her er en betydelig forskjell mellom de to algoritmene allerede merkbar - 0,855 i nøyaktighet!

Presisjon og tilbakekalling brukes også til å konstruere kurven og, som AUC-ROC, finne området under den.


Det kan her bemerkes at på små datasett kan arealet under PR-kurven være for optimistisk, fordi det beregnes ved hjelp av trapesmetoden, men vanligvis er det nok data i slike oppgaver. For detaljer om forholdet mellom AUC-ROC og AUC-PR, se her.

Logistisk tap

Den logistiske tapsfunksjonen skiller seg ut, definert som:

her er det algoritmens respons på -th-objektet, den sanne klasseetiketten på -th-objektet og prøvestørrelsen.

Detaljer om den matematiske tolkningen av den logistiske tapsfunksjonen er allerede skrevet i rammen av innlegget om lineære modeller.
Denne beregningen vises sjelden i forretningskrav, men ofte i oppgaver på kaggle.
Intuitivt kan loglossminimering betraktes som oppgaven med å maksimere nøyaktigheten ved å straffe ukorrekte spådommer. Imidlertid bør det bemerkes at logloss straffer ekstremt sterkt for klassifisererens tillit til feil svar.

La oss vurdere et eksempel:

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 with uncertain classification% f "% logloss_crutch (1, 0.5)) >> Loggtap med usikker klassifisering 0.693147 print (" Loggtap med sikker klassifisering og riktig svar% f "% logloss_crutch (1, 0.9)) >> Loggtap med sikker klassifisering og riktig svar 0.105361 print (" Loggtap med sikker klassifisering og feil svar% f "% logloss_crutch (1, 0.1)) >> Loggtap med sikker klassifisering og feil svar 2.302585

Legg merke til hvordan logtapet har vokst dramatisk med et feil svar og en sikker klassifisering!
Følgelig kan en feil ved ett objekt resultere i en betydelig degradering av den totale prøvefeilen. Slike objekter er ofte uteliggere, som må huskes for å filtreres eller vurderes separat.
Alt faller på plass hvis du tegner en logloss-graf:


Man kan se at jo nærmere null algoritmens respons med grunnsannhet = 1, jo høyere er feilverdien og jo brattere vokser kurven.

La oss oppsummere:

  • I tilfelle av en flerklasseklassifisering, må du nøye overvåke beregningene til hver av klassene og følge logikken i avgjørelsen oppgaver i stedet for å optimalisere beregningen
  • I tilfelle av ulik klasser, er det nødvendig å velge balansen mellom klasser for trening og en beregning som riktig gjenspeiler kvaliteten på klassifiseringen
  • mephistopheies og madrugado for deres hjelp med å utarbeide denne artikkelen.

Hei, Habr!

I maskinlæringsoppgaver brukes beregninger for å vurdere kvaliteten på modeller og sammenligne ulike algoritmer, og deres valg og analyse er en uunnværlig del av en datasatanists jobb.

I denne artikkelen skal vi se på noen kvalitetskriterier i klassifiseringsproblemer, diskutere hva som er viktig ved valg av metrikk og hva som kan gå galt.

Beregninger i klassifiseringsproblemer

For å demonstrere nyttige funksjoner lære og en visuell representasjon av metrikk, vil vi bruke datasettet vårt på kundekretsen til en teleoperatør, som vi møtte i den første artikkelen av kurset.

La oss laste inn de nødvendige bibliotekene og se på dataene

Importer pandaer som pd importer matplotlib.pyplot som plt fra matplotlib.pylab importer rc, plot importerer seaborn som sns fra sklearn.preprocessing import Labelmblencoder, OneHotEncoder fra sklearn.model_selection importer cross_val_score fra sklearn.linear_modelression GrainFormalarsession GrainFormalization fra skleprocesrn import. fra sklearn.metrics import precision_recall_curve, classification_report from sklearn.model_selection import train_test_split df = pd.read_csv ("../../ data / telecom_churn.csv")

Df.hode (5)

Dataforbehandling

# La oss lage en kartlegging av binære kolonner # og kode staten med dummy-koding (for enkelhets skyld er det bedre å ikke gjøre dette for tremodeller) d = ("Ja": 1, "Nei": 0) df ["Internasjonal plan "] = df [" Internasjonal plan "]. Kart (d) df [" Talepostplan "] = df [" Talepostplan "]. Kart (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 (encoded_state, columns = ["state" + str (i) for i i området (encoded_state.shape)]) df = pd.concat (, akse = 1)

Nøyaktighet, presisjon og tilbakekalling

Før du går videre til selve beregningene, er det nødvendig å introdusere et viktig konsept for å beskrive disse beregningene i form av klassifiseringsfeil - forvirringsmatrise(feilmatrise).
Anta at vi har to klasser og en algoritme som forutsier tilhørigheten til hvert objekt til en av klassene, så vil klassifiseringsfeilmatrisen se slik ut:

Sant positiv (TP) Falsk positiv (FP)
Falsk negativ (FN) True Negative (TN)

dette er responsen til algoritmen på objektet, og

Den sanne klasseetiketten på dette objektet.
Det er altså to typer klassifiseringsfeil: Falsk Negativ (FN) og Falsk Positiv (FP).

Algoritmetrening og konstruksjon av feilmatrisen

X = df.drop ("Churn", akse = 1) y = df ["Churn"] # Del prøven i tog og test, alle beregninger vil bli evaluert på testdatasettet X_train, X_test, y_train, y_test = train_test_split ( X, y , stratify = y, test_size = 0,33, random_state = 42) # Tren den opprinnelige logistiske regresjonen lr = LogisticRegression (random_state = 42) lr.fit (X_train, y_train) # Bruk funksjonen til å bygge feilmatrisen fra sklearn dokumentasjon def plot_confusion_matrix (cm, klasser , normalize = False, title = "(! LANG: Forvirringsmatrise", 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="Forvirringsmatrise") plt.savefig("conf_matrix.png") plt.show()!}

Nøyaktighet

En intuitiv, åpenbar og nesten ubrukt beregning er nøyaktighet - prosentandelen av riktige svar i algoritmen:

Denne metrikken er ubrukelig i problemer med ulik klasser, og det er lett å vise det med et eksempel.

La oss si at vi ønsker å evaluere ytelsen til et søppelpostfilter. Vi har 100 e-poster som ikke er spam, hvorav 90 klassifisereren vår identifiserte riktig (sann negativ = 90, falsk positiv = 10) og 10 spam e-poster, hvorav 5 klassifisereren også identifiserte riktig (sann positiv = 5, falsk negativ = 5 ) .
Så nøyaktighet:

Men hvis vi bare forutsier alle e-poster som ikke-spam, vil vi få en høyere nøyaktighet:

Samtidig har modellen vår absolutt ingen prediktiv kraft, siden vi i utgangspunktet ønsket å identifisere spam-meldinger. For å overvinne dette vil vi få hjelp av overgangen fra en felles beregning for alle klasser til separate indikatorer for kvaliteten på klassene.

Presisjon, tilbakekalling og F-mål

For å evaluere ytelsen til algoritmen på hver av klassene separat, introduserer vi presisjons- og gjenkallingsmålingene.

Presisjon kan tolkes som andelen objekter som klassifiseres som positive og samtidig virkelig positive, og gjenkalling viser hvor stor andel av objekter av en positiv klasse av alle objekter i en positiv klasse funnet av algoritmen.

Det er introduksjonen av presisjon som ikke tillater oss å skrive alle objekter i en klasse, siden vi i dette tilfellet får en økning i False Positive-nivået. Tilbakekalling demonstrerer algoritmens evne til å oppdage en gitt klasse generelt, og presisjon demonstrerer evnen til å skille denne klassen fra andre klasser.

Som vi bemerket tidligere, er det to typer klassifiseringsfeil: Falsk positiv og falsk negativ. I statistikk kalles den første typen feil en type I-feil, og den andre kalles en type II-feil. I vårt problem med å bestemme abonnentavgang, vil feilen av den første typen være aksept av en lojal abonnent for en utgående, siden vår nullhypotese er at ingen av abonnentene strømmer ut, og vi avviser denne hypotesen. Følgelig vil en feil av den andre typen være "hopping" av den utgående abonnenten og feilaktig aksept av nullhypotesen.

Presisjon og tilbakekalling avhenger ikke, i motsetning til nøyaktighet, av forholdet mellom klasser og er derfor anvendelige under forhold med ubalanserte prøver.
Ofte i praksis er oppgaven å finne den optimale (for kunden) balansen mellom disse to beregningene. Et klassisk eksempel er problemet med å bestemme kundeavgang.
Vi kan tydeligvis ikke finne av alle utgående kunder og kun deres. Men etter å ha identifisert strategien og ressursen for kundeoppbevaring, kan vi velge nødvendig presisjons- og tilbakekallingsterskler. Du kan for eksempel fokusere på å beholde kun kunder med høy avkastning eller de som er mer sannsynlig å rapportere, siden vi er begrenset av kundesenterressursen.

Vanligvis, når du optimerer hyperparametrene til en algoritme (for eksempel ved iterasjon over et rutenett GridSearchCV), brukes en beregning, hvis forbedring vi forventer å se på testprøven.
Det er flere forskjellige måter å kombinere presisjon og gjenkalling til et samlet mål på kvalitet. F-mål (generelt

) - harmonisk gjennomsnittlig presisjon og gjenkalling:

i dette tilfellet bestemmer vekten av nøyaktigheten i metrikken og for

dette er det harmoniske gjennomsnittet (med en multiplikator på 2, slik at i tilfelle av presisjon = 1 og gjenkalling = 1, har vi

)
F-målet når sitt maksimum når fullstendigheten og nøyaktigheten er lik én og er nær null hvis ett av argumentene er nær null.
Sklearn har en hendig funksjon _metrics.classification rapportere tilbakekalling, presisjon og F-mål for hver av klassene, samt antall forekomster av hver klasse.

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

klasse presisjon minnes f1-score Brukerstøtte
Ikke-kjernet 0.88 0.97 0.93 941
Kjernet 0.60 0.25 0.35 159
snitt / totalt 0.84 0.87 0.84 1100

Det skal bemerkes her at i tilfelle problemer med ubalanserte klasser, som råder i virkelig praksis, er det ofte nødvendig å ty til teknikkene for kunstig modifisering av datasettet for å utjevne klasseforholdet. Det er mange av dem og vi vil ikke berøre dem, du kan se på noen metoder og velge den som passer din oppgave.

AUC-ROC og AUC-PR

Når vi konverterer det virkelige svaret til algoritmen (som regel sannsynligheten for å tilhøre en klasse, se SVM separat) til en binær etikett, må vi velge en terskel hvor 0 blir 1. En terskel lik 0,5 virker naturlig og nærliggende , men det er ikke alltid det viser seg å være optimalt, for eksempel i den nevnte mangelen på klassebalanse.

En av måtene å evaluere modellen som helhet, uten å være bundet til en spesifikk terskel, er AUC-ROC (eller ROC AUC) - område ( EN rea U nder C urve) under feilkurven ( R mottaker O perating C karakteristisk kurve). Denne kurven er en linje fra (0,0) til (1,1) i True Positive Rate (TPR) og False Positive Rate (FPR) koordinater:

Vi kjenner allerede TPR, dette er fullstendighet, og FPR viser hvor stor andel av objekter av den negative klassen algoritmen forutså feil. Ideelt sett, når klassifikatoren ikke gjør noen feil (FPR = 0, TPR = 1), vil vi få arealet under kurven lik én, ellers, når klassifikatoren tilfeldig utgir klassesannsynlighetene, vil AUC-ROC ha en tendens til 0,5, siden klassifisereren vil utstede samme mengde TP og FP.
Hvert punkt på grafen tilsvarer valget av en viss terskel. Arealet under kurven viser i dette tilfellet kvaliteten på algoritmen (mer er bedre), i tillegg er brattheten i selve kurven viktig – vi ønsker å maksimere TPR ved å minimere FPR, noe som betyr at kurven vår ideelt sett bør ha en tendens til å punktet (0,1).

ROC-kurvetegningskode

Sns.set (font_scale = 1.5) sns.set_color_codes ("dempet") 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-kurve") plt.plot (,) plt.xlim () plt.ylim () plt.xlabel ("False Positive Rate" ") plt.ylabel (" True Positive Rate ") plt.title (" ROC-kurve ") plt.savefig (" ROC.png ") plt.show ()

AUC-ROC-kriteriet er motstandsdyktig mot ubalanserte klasser (spoiler: dessverre, men ikke alt er så entydig) og kan tolkes som sannsynligheten for at et tilfeldig valgt positivt objekt vil bli rangert av klassifisereren høyere (vil ha høyere sannsynlighet for å bli positiv) enn et tilfeldig valgt negativt objekt.

Tenk på følgende problem: vi må velge 100 relevante dokumenter fra 1 million dokumenter. Vi har mestret to algoritmer:

  • Algoritme 1 returnerer 100 dokumenter, hvorav 90 er relevante. Og dermed,
  • Algoritme 2 returnerer 2000 dokumenter, hvorav 90 er relevante. Og dermed,

Mest sannsynlig vil vi velge den første algoritmen som produserer svært få falske positiver sammenlignet med konkurrenten. Men forskjellen i falsk positiv rate mellom disse to algoritmene ekstremt liten - bare 0,0019. Dette er en konsekvens av at AUC-ROC måler andelen falsk positiv i forhold til sann negativ, og i problemer der den andre (større) klassen ikke er så viktig for oss, kan det hende at den ikke gir et helt dekkende bilde når man sammenligner algoritmer .

For å rette opp situasjonen, la oss gå tilbake til fullstendighet og nøyaktighet:

  • Algoritme 1
  • Algoritme 2

Her er en betydelig forskjell mellom de to algoritmene allerede merkbar - 0,855 i nøyaktighet!

Presisjon og tilbakekalling brukes også til å konstruere kurven og, som AUC-ROC, finne området under den.

Det kan her bemerkes at på små datasett kan arealet under PR-kurven være for optimistisk, fordi det beregnes ved hjelp av trapesmetoden, men vanligvis er det nok data i slike oppgaver. For detaljer om forholdet mellom AUC-ROC og AUC-PR, se her.

Logistisk tap

Den logistiske tapsfunksjonen skiller seg ut, definert som:

dette er algoritmens svar på

Ohm objekt,

ekte klasseetikett på

Ohm objekt, og

prøvestørrelse.

Detaljer om den matematiske tolkningen av den logistiske tapsfunksjonen er allerede skrevet i rammen av innlegget om lineære modeller.
Denne beregningen vises sjelden i forretningskrav, men ofte i oppgaver på kaggle.
Intuitivt kan loglossminimering betraktes som oppgaven med å maksimere nøyaktigheten ved å straffe feilprediksjoner. Imidlertid bør det bemerkes at logloss straffer ekstremt sterkt for klassifisererens tillit til feil svar.

La oss vurdere et eksempel:

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 with uncertain classification% f "% logloss_crutch (1, 0.5)) >> Loggtap med usikker klassifisering 0.693147 print (" Loggtap med sikker klassifisering og riktig svar% f "% logloss_crutch (1, 0.9)) >> Loggtap med sikker klassifisering og riktig svar 0.105361 print (" Loggtap med sikker klassifisering og feil svar% f "% logloss_crutch (1, 0.1)) >> Loggtap med sikker klassifisering og feil svar 2.302585

Legg merke til hvordan logtapet har vokst dramatisk med et feil svar og en sikker klassifisering!
Følgelig kan en feil ved ett objekt resultere i en betydelig degradering av den totale prøvefeilen. Slike objekter er ofte uteliggere, som må huskes for å filtreres eller vurderes separat.
Alt faller på plass hvis du tegner en logloss-graf:

Man kan se at jo nærmere null algoritmens respons med grunnsannhet = 1, jo høyere er feilverdien og jo brattere vokser kurven.

Oppsummering:

  • I tilfelle av en flerklasseklassifisering, må du nøye overvåke beregningene til hver av klassene og følge logikken i avgjørelsen oppgaver i stedet for å optimalisere beregningen
  • I tilfelle av ulik klasser, er det nødvendig å velge balansen mellom klasser for trening og en beregning som riktig gjenspeiler kvaliteten på klassifiseringen
  • Valg av metrikk bør gjøres med fokus på fagområdet, forhåndsbearbeiding av data og eventuelt segmentering (som ved inndeling i rike og fattige kunder)

nyttige lenker

  1. Evgeny Sokolovs kurs: Seminar om valg av modeller (det er informasjon om beregningene for regresjonsproblemer)
  2. Problemer på AUC-ROC fra A.G. Dyakonova
  3. Du kan lese mer om andre beregninger på kaggle. En lenke til konkurransen der den ble brukt er lagt til beskrivelsen av hver beregning
  4. Presentasjon av Bogdan Melnik aka ld86 om trening på ubalanserte prøver