Spørsmål:
Hvor ille er innstilling av hyperparameter utenfor kryssvalidering?
Ben Kuhn
2015-02-13 03:22:33 UTC
view on stackexchange narkive permalink

Jeg vet at utføring av hyperparameterjustering utenfor kryssvalidering kan føre til forutinntatte høye estimater av ekstern gyldighet, fordi datasettet du bruker til å måle ytelse er det samme du brukte for å stille inn funksjonene. p> Det jeg lurer på er hvor ille et problem dette er . Jeg kan forstå hvordan det ville være veldig dårlig for funksjonsvalg, siden dette gir deg et stort antall parametere å stille inn. Men hva om du bruker noe som LASSO (som bare har en parameter, reguleringsstyrken) eller en tilfeldig skog uten funksjonsvalg (som kan ha noen få parametere, men ikke noe så dramatisk som å legge til / slippe støyfunksjoner)?

I disse scenariene, hvor dårlig optimistisk kunne du forvente at estimatet ditt for treningsfeil skulle være?

Jeg vil sette pris på all informasjon om dette - case studies, papers, anecdata, etc. Thanks. !

EDIT: For å avklare snakker jeg ikke om å estimere modellytelse på treningsdata (dvs. ikke bruke kryssvalidering i det hele tatt). Med "tuning av hyperparameter utenfor kryssvalidering" mener jeg bare å bruke kryssvalidering for å estimere ytelsen til hver enkelt modell, men ikke inkludert en ytre, andre kryssvalidering løkke for å korrigere for overmontering i hyperparameter-innstillingsprosedyren (forskjellig fra overmontering under treningsprosedyren). Se f.eks. svaret her.

Fire svar:
Dikran Marsupial
2015-02-16 18:09:05 UTC
view on stackexchange narkive permalink

Effekten av denne skjevheten kan være veldig stor. En god demonstrasjon av dette er gitt av de åpne maskinlæringskonkurransene som vises på noen maskinlæringskonferanser. Disse har generelt et treningssett, et valideringssett og et testsett. Konkurrentene får ikke se etikettene for verken valideringssettet eller testsettet (tydeligvis). Valideringssettet brukes til å bestemme rangeringen av konkurrenter på et leaderboard som alle kan se mens konkurransen pågår. Det er veldig vanlig at de som er på topplisten på slutten av konkurransen, er veldig lave i den endelige rangeringen basert på testdataene. Dette er fordi de har innstilt hyperparametrene for læringssystemene sine for å maksimere ytelsen på poengoversikten, og ved å gjøre det har de overmontert valideringsdataene ved å stille inn modellen. Mer erfarne brukere tar liten eller ingen oppmerksomhet på ledertavlen og vedtar strengere upartiske ytelsesestimater for å styre metodikken deres.

Eksemplet i papiret mitt (nevnt av Jacques) viser at effekten av denne typen skjevhet kan være av samme type størrelse som forskjellen mellom læringsalgoritmer, så det korte svaret brukes ikke forutinntatte ytelsesevalueringsprotokoller hvis du virkelig er interessert i å finne ut hva som fungerer og hva som ikke fungerer. Den grunnleggende regelen er "behandle modellvalg (f.eks. Hyperparameterinnstilling) som en integrert del av modelltilpasningsprosedyren, og inkluder det i hver fold av kryssvalidering som brukes til ytelsesevaluering).

Det faktum at regulering er mindre utsatt for overmontering enn funksjonsvalg, er nettopp grunnen til at LASSO etc. er gode måter å utføre funksjonsvalg på. Størrelsen på skjevheten avhenger imidlertid av antall funksjoner, størrelsen på datasettet og innholdet i læringsoppgaven (dvs. det er et element som avhenger av et bestemt datasett og vil variere fra applikasjon til applikasjon). Den dataavhengige naturen til dette betyr at det er bedre å estimere størrelsen på skjevheten ved å bruke en upartisk protokoll og sammenligne forskjellen (rapportering om at metoden er robust for å overmontere modellvalg i dette spesielle tilfellet, kan være av interesse i seg selv).

G. C. Cawley og N. L. C. Talbot (2010), "Over-fitting in model selection and following selection bias in performance evaluering", Journal of Machine Learning Research, 11, s.2079, avsnitt 5.2.)

cbeleites unhappy with SX
2015-02-13 06:49:19 UTC
view on stackexchange narkive permalink
  • Skjevheten du snakker om, er fortsatt hovedsakelig knyttet til overmontering.
  • Du kan holde risikoen lav ved å evaluere bare svært få modeller for å fikse reguleringshyperparameteret pluss å gå for en lav kompleksitet innenfor det plausible valget.

  • Som @MarcClaesen påpeker, har du læringskurven som fungerer for deg, noe som vil redusere skjevheten. Men læringskurven er vanligvis bratt bare i svært få tilfeller, og da er også overmontering mye mer av et problem.

Til slutt forventer jeg at skjevheten avhenger mye av

  • dataene (det er vanskelig å overdrive et univariat problem. ..) og
  • din erfaring og modellatferd: Jeg tror det er mulig at du bestemmer deg for en omtrent passende kompleksitet for modellen din hvis du har nok erfaring med både type modell og applikasjonen, og hvis du er ekstremt veloppdragen og ikke gir etter for fristelsen til mer komplekse modeller. Men selvfølgelig kjenner vi deg ikke og kan derfor ikke bedømme hvor konservativ modelleringen din er.
    Å innrømme at den fancy statistiske modellen din er svært subjektiv og at du ikke har saker igjen til gjøre en validering er vanligvis ikke det du vil ha. (Ikke engang i situasjoner der det samlede resultatet forventes å bli bedre.)

Jeg bruker ikke LASSO (som variabel utvalg ikke gir mye mening for dataene mine av fysiske årsaker), men PCA eller PLS fungerer vanligvis bra. En rygg ville være et alternativ som er nær LASSO og mer passende for den typen data. Med disse dataene har jeg sett en størrelsesorden flere feilklassifiseringer av "snarveivalidering" mot riktig uavhengig (ytre) kryssvalidering. I disse ekstreme situasjonene sier imidlertid min erfaring at snarveivalideringen så mistenkelig bra ut, f.eks. 2% feilklassifisering => 20% med riktig kryssvalidering.

Jeg kan ikke gi deg reelle tall som gjelder direkte for spørsmålet ditt, skjønt:

  • Så langt brydde jeg meg mer om andre typer "snarveier" som skjer i mitt felt og fører til datalekkasjer, f.eks. kryssvaliderende spektre i stedet for pasienter (stor skjevhet! Jeg kan vise deg 10% feilklassifisering -> 70% = gjetting blant 3 klasser), eller ikke inkluderer PCA i kryssvalidering (2 - 5% -> 20 - 30%).
  • I situasjoner der jeg må bestemme om den ene kryssvalideringen jeg har råd til skal brukes på modelloptimalisering eller på validering, bestemmer jeg meg alltid for validering og fikser kompleksitetsparameteren etter erfaring. PCA og PLS fungerer bra, da reguleringsteknikker er den respekten fordi kompleksitetsparameteren (# komponenter) er direkte relatert til problemets fysiske / kjemiske egenskaper (for eksempel kan jeg ha en god gjetning hvor mange kjemisk forskjellige stoffgrupper jeg forventer å ha betydning). Av fysisk-kjemiske grunner vet jeg også at komponentene skal se ut som spektre, og hvis de er støyende, overmonterer jeg. Men erfaring kan også være å optimalisere modellkompleksiteten på et gammelt datasett fra et tidligere eksperiment som generelt er likt nok til å rettferdiggjøre overføring av hyperparametere, og så bare bruke reguleringsparameteren for de nye dataene. Jeg kan ikke hevde å ha den optimale modellen, men jeg kan hevde å ha et rimelig estimat av ytelsen jeg kan få.
    Og med pasientnummeret jeg har, er det uansett umulig å gjøre statistisk meningsfulle modellsammenligninger (husk, mitt totale pasientnummer er under anbefalt prøvestørrelse for å estimere en enkelt andel [i henhold til tommelfingerregelen @FrankHarrell gir her]).

Hvorfor kjører du ikke noen simuleringer som er så nært som mulig dataene dine og gi oss beskjed om hva som skjer?


Om dataene mine: Jeg jobber med spektroskopiske data. Datasettene er vanligvis brede: noen titalls uavhengige tilfeller (pasienter, men vanligvis mange målinger per tilfelle. Ca. 10³ varierer i rådataene, som jeg kanskje kan redusere til å si 250 ved å bruke domenekunnskap for å kutte uinformative områder ut av spektrene mine og for å redusere spektraloppløsningen.

Jacques Wainer
2015-02-16 05:30:50 UTC
view on stackexchange narkive permalink

Hvis du bare velger hyperparameter for LASSO, er det ikke behov for en nestet CV. Hyperparametervalg gjøres i en enkelt / flat CV-interaksjon.

Gitt at du allerede har bestemt å bruke LASSO og gitt at du allerede har bestemt hvilke funksjoner du vil beholde og gi til algoritmen (LASSO vil sannsynligvis fjerne noen av funksjonene, men det er LASSO-optimaliseringen ikke din beslutning) det eneste som er igjen er å velge $ \ lambda $ hyperparameter, og at du vil gjøre med en flat / enkelt CV:

1) dele dataene i trening \ læring setter $ L_i $ og testsett $ T_i $ og valgte $ \ lambda ^ * $ som minimerer gjennomsnittsfeilen for alle $ T_i $ når de blir trent med tilsvarende $ L_i $.

2) $ \ lambda ^ * $ er ditt valg av hyperparameter. FERDIG.

(Dette er ikke den eneste metoden for å velge hyperparametere, men det er den vanligste - det er også "median" -prosedyren diskutert og kritisert av GC Cawley og NLC Talbot (2010) , "Overmontering i modellvalg og påfølgende valgskjevhet i ytelsesevaluering", Journal of Machine Learning Research, 11 , s.2079, avsnitt 5.2.)

Det jeg forstår at du spør er: hvor ille er det å bruke feilen jeg beregnet i trinn 1 ovenfor (den minimale feilen som tillater meg å velge $ \ lambda ^ * $) som et estimat på generaliseringsfeilen til klassifiseringen med det $ \ lambda ^ * $ for fremtidige data? Her snakker du om estimering og ikke valg av hyperparameter !!

Jeg vet om to eksperimentelle resultater for å måle forspenningen til dette estimatet (sammenlignet med en sann generaliseringsfeil for syntetiske datasett)

begge åpen tilgang.

Du trenger en nestet CV hvis:

a) du vil velge mellom en LASSO og noen andre algoritmer, spesielt hvis de også har hyperparametere

b) hvis du vil rapportere et upartisk estimat av forventet generaliseringsfeil / nøyaktighet av den endelige klassifikator (LASSO med $ \ lambda ^ * $).

Faktisk er nestet CV brukt til å beregne et upartisk estimat av generaliseringsfeilen til en klassifikator (med det beste valget av hyperparametere - men du kommer ikke til vet hvilke verdier hyperparametrene har). Dette er det som lar deg bestemme mellom LASSO og si en SVM-RBF - den som har den beste generaliseringsfeilen, bør velges. Og denne generaliseringsfeilen er den du bruker til å rapportere b) (noe som er overraskende, i b) du allerede vet verdien av det beste hyperparameteret - $ \ lambda ^ * $ - men den nestede CV-prosedyren bruker ikke den informasjonen

Til slutt er nestet CV ikke den eneste måten å beregne et rimelig upartisk estimat av den forventede generaliseringsfeilen. Det har vært minst tre andre forslag

Kan du forklare hva du mener med "det er ingen CV for valg av hyperparameter"?Fra det du skrev, kan jeg ikke forstå om du vil advare OP om at de ikke gjorde hekkingen, eller om du uttaler at det generelt ikke finnes noe slikt.
(+1) for en kortfattet forklaring på problemet og gode referanser.Men som @cbeleites påpeker, er første setning ganske forvirrende: det ser ut til å være ment å rette opp en misforståelse OP ikke har.
@cbeleites (og Scortchi) - Jeg svarer på OP "EDIT:" hvor (jeg tror) han hevder at han bruker CV for å velge parametere ("kryssvalidering bare for å estimere ytelsen til hver enkelt modell,") og haner bekymret for at han ikke brukte en nestet CV ("men ikke inkludert en ytre, andre kryssvalideringsløkke for å korrigere for overmontering i innstillingsprosedyren for hyperparameter").Jeg prøvde å fortelle ham at det ikke var noen ytre CV i parametervalget.
@JacquesWainer: Jeg tror han ønsker å "korrigere for overmontering i hyperparameter-tuningprosedyren" når han estimerer prosedyren utenom prøven (din situasjon * b *), i stedet for på en eller annen måte å korrigere den valgte verdien til hyperparameteret ved hjelp av nestet CV.I alle fall gjør redigeringen begynnelsen på svaret ditt tydeligere.
Ja, jeg mente "å korrigere [det naive ytelsesestimatet] for overmontering i innstillingsprosedyren for hyperparameter", ikke "å korrigere [de innstilte hyperparametrene] for overmontering" eller noe sånt.Jeg beklager forvirringen;Jeg burde mer eksplisitt uttalt at jeg var bekymret for feilestimering, ikke parametervalg.
Marc Claesen
2015-02-13 03:29:42 UTC
view on stackexchange narkive permalink

Enhver kompleks læringsalgoritme, som SVM, nevrale nettverk, tilfeldig skog, ... kan oppnå 100% treningsnøyaktighet hvis du lar dem (for eksempel gjennom svak / ingen regulering), med helt forferdelig generaliseringsytelse som et resultat.

La oss for eksempel bruke en SVM med RBF-kjernen $ \ kappa (\ mathbf {x} _i, \ mathbf {x} _j) = \ exp (- \ gamma \ | \ mathbf {x} _i - \ mathbf {x} _j \ | ^ 2) $. For $ \ gamma = \ infty $ (eller noe latterlig høyt tall) blir kjernematrisen enhetsmatrisen. Dette resulterer i en modell med $ 100 \% $ treningssettnøyaktighet og konstante prediksjoner (f.eks. Alle positive eller alle negative, avhengig av skjevhetsbegrepet).

Kort sagt, du kan enkelt ende opp med en perfekt klassifikator på treningssettet ditt som lærte absolutt ingenting nyttig på et uavhengig testsett. Det er så ille det er.

Jeg snakker ikke om * å trene modellen * utenfor kryssvalidering.Jeg snakker om * tuning av hyperparametrene * (og fortsatt bruker kryssvalidering for å estimere ytelsen til hvert sett med hyperparametere).Jeg redigerer innlegget for å avklare dette.
Det er poenget mitt.Hvis du ikke utfører kryssvalidering, vil du * ende opp med hyperparametere som gir deg $ 100 \% $ treningsnøyaktighet og ubrukelig generaliseringsytelse i noen tilfeller.
Hvorfor tror du jeg vurderer å ikke bruke kryssvalidering?Jeg sa spesielt, "... og bruker fortsatt kryssvalidering for å estimere ytelsen til hvert sett med hyperparametere."
I SVM-eksemplet ditt ville hyperparameterinnstillingen $ \ gamma = \ infty $ bli avvist av hyperparameter-søkeprosedyren fordi ytelsen (som vurdert av en CV-sløyfe) ville være veldig dårlig sammenlignet med mer parsimonious verdier på $ \ gamma $.Imidlertid ville $ \ gamma $ som ga den høyeste poengsummen som ble vurdert av en enkelt CV-sløyfe, gjøre det dårligere på data utenfor prøven enn CV-sløyfen anslått på grunn av regresjon til gjennomsnittet / overmontering.Det foreslås ofte at man bruker en annen CV-loop (utenfor innstillingsprosedyren) for å kompensere.* Det er * skjevheten som jeg er interessert i.
Jeg misforsto spørsmålet ditt helt.Før redigeringen var det veldig forvirrende.Skjevheten du ser ut til å være interessert i, er forresten ikke nødvendigvis positiv;siden mange tilnærminger gir drastisk bedre modeller når de får mer treningsdata, noe som er spesielt relevant for små treningssett + kryssvalidering.


Denne spørsmålet ble automatisk oversatt fra engelsk.Det opprinnelige innholdet er tilgjengelig på stackexchange, som vi takker for cc by-sa 3.0-lisensen den distribueres under.
Loading...