Video: Optimalisering av annonser - Få positiv ROI med effektiv annonsering - Vlog 18 2025
Å kunne validere en maskinlæringshypotese muliggjør ytterligere optimalisering av den valgte algoritmen. Algoritmen gir det meste av prediktiv ytelse på dataene dine, gitt sin evne til å oppdage signaler fra data og tilpasse den sanne funksjonelle formen for prediktiv funksjon uten overfitting og generere stor variasjon av estimatene. Ikke alle maskinlæringsalgoritmer passer best for dataene dine, og ingen enkelt algoritme kan passe alle problemer. Det er opp til deg å finne den rette for et bestemt problem.
En annen kilde til prediktiv ytelse er dataene selv når de er riktig transformert og valgt for å forbedre læringsevnen til den valgte algoritmen.
Den endelige resultatkilden kommer fra finjustering av algoritmen hyperparametere, som er parametrene du bestemmer før du lærer, og som ikke læres av data. Deres rolle er å definere a priori en hypotese, mens andre parametere angir det a posteriori, etter at algoritmen interagerer med dataene og ved hjelp av en optimaliseringsprosess finner at visse parameterverdier jobbe bedre med å få gode spådommer.
Ikke alle maskininlæringsalgoritmer krever mye hyperparametertuning, men noen av de mest komplekse gjør det, og selv om slike algoritmer fortsatt virker ut av boksen, kan det hende at det er stor forskjell mellom å trekke de riktige spakene i korrektheten av spådommene. Selv når hyperparametrene ikke blir lært av data, bør du vurdere dataene du jobber med når du bestemmer hyperparametere, og du bør gjøre valget basert på kryssvalidering og nøye evaluering av muligheter.
Komplekse maskinlæringsalgoritmer, de som er mest utsatt for varians av estimater, presenterer mange valg uttrykt i et stort antall parametere. Twiddling med dem gjør at de tilpasser seg mer eller mindre til dataene de lærer fra. Noen ganger kan for mye hyperparameter twiddling til og med gjøre algoritmen oppdage falske signaler fra dataene. Det gjør hyperparametere seg selv til en uoppdaget kilde til varians hvis du begynner å manipulere dem for mye basert på noen fast referanse som et testsett eller et gjentatt kryssvalideringsskjema.
Både R og Python tilbyr skivefunksjoner som skiller inngangsmatrisen i tog-, test- og valideringsdeler. Spesielt, for mer komplekse testprosedyrer, for eksempel kryss-validering eller bootstrapping, tilbyr Scikit-learn-pakken en hel modul, og R har en spesialpakke som tilbyr funksjoner for datasplitting, forhåndsbehandling og testing.Denne pakken kalles caret.
De mulige kombinasjonene av verdier som hyperparametere kan danne, bestemmer hvor å lete etter optimaliseringer hardt. Som beskrevet under diskusjon av gradient nedstigning, kan et optimaliseringsrom inneholde verdikombinasjoner som utfører bedre eller verre. Selv etter at du har funnet en god kombinasjon, er du ikke sikker på at det er det beste alternativet. (Dette er problemet med å bli sittende fast i lokale minima når du minimerer feilen.)
Som en praktisk måte å løse dette problemet på, er den beste måten å verifisere hyperparametere for en algoritme som brukes på bestemte data, å teste dem alle ved kryss-validering, og å velge den beste kombinasjonen. Denne enkle tilnærmingen, kalt grid-søk, gir ubestridelige fordeler ved å tillate deg å prøve rekkevidden av mulige verdier til å systematisk inntast i algoritmen og å se når det generelle minimumet skjer.
På den annen side har grid-søk også alvorlige ulemper fordi det er beregningsintensivt (du kan enkelt utføre denne oppgaven parallelt på moderne multicore-datamaskiner) og ganske tidkrevende. Videre øker systematiske og intensive tester muligheten for å pådra seg feil, fordi noen gode, men falske valideringsresultater kan skyldes støy i datasettet.
Noen alternativer til grid-søk er tilgjengelige. I stedet for å teste alt, kan du prøve å utforske plassen av mulige hyperparameterverdier som styres av beregningsmessig tunge og matematisk komplekse, ikke-lineære optimaliseringsteknikker (som Nelder-Mead-metoden), ved hjelp av en Bayesian-tilnærming (hvor antall tester minimeres ved å ta nytte av tidligere resultater) eller ved hjelp av tilfeldig søk.
Overraskende, tilfeldig søk fungerer utrolig bra, er lett å forstå, og er ikke bare basert på blind flaks, selv om det i utgangspunktet ser ut til å være. Faktisk er hovedpunktet i teknikken at hvis du velger nok tilfeldige tester, har du faktisk nok muligheter til å oppdage de riktige parametrene uten å kaste bort energi ved å teste litt forskjellige kombinasjoner av tilsvarende utførte kombinasjoner.
Den grafiske representasjonen nedenfor forklarer hvorfor tilfeldig søk fungerer fint. En systematisk utforskning, men nyttig, har en tendens til å teste hver kombinasjon, som blir til sløsing med energi dersom noen parametere ikke påvirker resultatet. Et tilfeldig søk tester faktisk færre kombinasjoner, men mer innenfor rekkevidden av hver hyperparameter, en strategi som viser seg å vinne hvis det, som ofte skjer, er visse parametere viktigere enn andre.
For tilfeldig søk skal du gjøre fra 15 til maksimalt 60 tester. Det er fornuftig å ty til tilfeldig søk hvis et rutenett-søk krever et større antall eksperimenter.
