Hvordan bruke optimaliseringsalgoritmer for å tilpasse regresjonsmodeller manuelt

Hvordan bruke optimaliseringsalgoritmer for å tilpasse regresjonsmodeller manuelt

Regresjonsmodeller er tilpasset treningsdata ved hjelp av lineære regresjons- og lokale søkeoptimaliseringsalgoritmer.

Modeller som lineær regresjon og logistisk regresjon er trent av optimalisering av minste kvadrat, og dette er den mest effektive tilnærmingen til å finne koeffisienter som minimerer feil for disse modellene.

Likevel er det mulig å bruke alternativ optimaliseringsalgoritmer for å passe til en regresjonsmodell til et treningsdatasett. Dette kan være en nyttig øvelse for å lære mer om hvordan regresjon fungerer og den sentrale naturen til optimalisering i anvendt maskinlæring. Det kan også være nødvendig for regresjon med data som ikke oppfyller kravene til en optimaliseringsprosedyre for minste kvadrater.

I denne opplæringen vil du oppdage hvordan du manuelt optimaliserer koeffisientene til regresjonsmodeller.

Etter å ha fullført denne opplæringen, vil du vite:

  • Hvordan utvikle inferensmodellene for regresjon fra bunnen av.
  • Hvordan optimalisere koeffisientene til en lineær regresjonsmodell for å forutsi numeriske verdier.
  • Hvordan optimalisere koeffisientene til en logistisk regresjonsmodell ved hjelp av stokastisk bakkeklatring.

La oss komme i gang.

Slik bruker du optimaliseringsalgoritmer for å tilpasse regresjonsmodeller manuelt

Hvordan bruke optimaliseringsalgoritmer for å tilpasse regresjonsmodeller manuelt
Foto av Christian Collins, noen rettigheter forbeholdt.

Opplæringsoversikt

Denne opplæringen er delt inn i tre deler; de er:

  1. Optimaliser regresjonsmodeller
  2. Optimaliser en lineær regresjonsmodell
  3. Optimaliser en logistisk regresjonsmodell

Optimaliser regresjonsmodeller

Regresjonsmodeller, som lineær regresjon og logistisk regresjon, er velforståtte algoritmer fra statistikkfeltet.

Begge algoritmene er lineære, noe som betyr at utdataene til modellen er en vektet sum av inngangene. Lineær regresjon er designet for “regresjon"Problemer som krever at et tall skal forutsies, og logistisk regresjon er designet for"klassifisering”Problemer som krever at et klassemerke forutsies.

Disse regresjonsmodellene innebærer bruk av en optimaliseringsalgoritme for å finne et sett med koeffisienter for hver inngang til modellen som minimerer prediksjonsfeilen. Fordi modellene er lineære og godt forstått, kan effektive optimaliseringsalgoritmer brukes.

Ved lineær regresjon kan koeffisientene bli funnet ved optimalisering av minste kvadrat, som kan løses ved hjelp av lineær algebra. I tilfelle av logistisk regresjon brukes ofte en lokal søkeoptimaliseringsalgoritme.

Det er mulig å bruke hvilken som helst vilkårlig optimaliseringsalgoritme til å trene lineære og logistiske regresjonsmodeller.

Det vil si at vi kan definere en regresjonsmodell og bruke en gitt optimaliseringsalgoritme for å finne et sett med koeffisienter for modellen som resulterer i et minimum av prediksjonsfeil eller maksimalt klassifiseringsnøyaktighet.

Bruk av alternative optimaliseringsalgoritmer forventes å være mindre effektiv i gjennomsnitt enn å bruke den anbefalte optimaliseringen. Likevel kan det være mer effektivt i noen spesifikke tilfeller, for eksempel hvis inngangsdataene ikke oppfyller forventningene til modellen som en Gaussisk fordeling og ikke er korrelert med ytre innganger.

Det kan også være en interessant øvelse å demonstrere den sentrale naturen til optimalisering i opplæring av maskinlæringsalgoritmer, og spesielt regresjonsmodeller.

Deretter, la oss utforske hvordan vi kan trene en lineær regresjonsmodell ved å bruke stokastisk bakkeklatring.

Optimaliser en lineær regresjonsmodell

Den lineære regresjonsmodellen kan være den enkleste prediktive modellen som lærer av data.

Modellen har en koeffisient for hver inngang, og den forutsagte utgangen er ganske enkelt vekten av noen innganger og koeffisienter.

I denne delen vil vi optimalisere koeffisientene til en lineær regresjonsmodell.

La oss først definere et syntetisk regresjonsproblem som vi kan bruke som fokus for å optimalisere modellen.

Vi kan bruke make_regression () -funksjonen til å definere et regresjonsproblem med 1000 rader og 10 inngangsvariabler.

Eksemplet nedenfor oppretter datasettet og oppsummerer formen på dataene.

Å kjøre eksemplet skriver ut formen til det opprettede datasettet, og bekrefter forventningene våre.

Deretter må vi definere en lineær regresjonsmodell.

Før vi optimaliserer modellkoeffisientene, må vi utvikle modellen og vår tillit til hvordan den fungerer.

La oss starte med å utvikle en funksjon som beregner aktivering av modellen for en gitt datarad med data fra datasettet.

Denne funksjonen tar raden med data og koeffisientene for modellen og beregner den vektede summen av inngangen med tillegg av en ekstra y-skjæringspunkt (også kalt forskyvning eller forspenning) koeffisient. De forutsi_row () funksjonen nedenfor implementerer dette.

Vi bruker enkle Python-lister og tvingende programmeringsstil i stedet for NumPy-arrays eller listekomprimeringer med vilje for å gjøre koden mer lesbar for Python-nybegynnere. Optimaliser den gjerne og legg inn koden din i kommentarene nedenfor.

Deretter kan vi kalle forutsi_row () funksjon for hver rad i et gitt datasett. De forutsi_datasett () funksjonen nedenfor implementerer dette.

Igjen bruker vi med vilje en enkel tvingende kodestil for lesbarhet i stedet for listekomprimering.

Til slutt kan vi bruke modellen til å forutsi på vårt syntetiske datasett for å bekrefte at alt fungerer som det skal.

Vi kan generere et tilfeldig sett med modellkoeffisienter ved hjelp av rand () -funksjonen.

Husk at vi trenger en koeffisient for hver inngang (ti innganger i dette datasettet) pluss en ekstra vekt for y-avskjæringskoeffisienten.

Vi kan da bruke disse koeffisientene med datasettet for å forutsi.

Vi kan evaluere den gjennomsnittlige kvadratfeilen til disse spådommene.

Det er det.

Vi kan knytte alt dette sammen og demonstrere vår lineære regresjonsmodell for regresjons prediktiv modellering. Det komplette eksemplet er oppført nedenfor.

Å kjøre eksemplet genererer en prediksjon for hvert eksempel i treningsdatasettet, og skriver deretter ut den gjennomsnittlige kvadratfeilen for spådommene.

Merk: Resultatene dine kan variere gitt algoritmens eller evalueringsprosedyrens stokastiske natur, eller forskjeller i numerisk presisjon. Vurder å kjøre eksemplet et par ganger, og sammenlign det gjennomsnittlige resultatet.

Vi forventer en stor feil gitt et sett med tilfeldige vekter, og det er det vi ser i dette tilfellet, med en feilverdi på omtrent 7307 enheter.

Vi kan nå optimalisere koeffisientene til datasettet for å oppnå lave feil på dette datasettet.

Først må vi dele datasettet i tog- og testsett. Det er viktig å holde tilbake data som ikke brukes til å optimalisere modellen, slik at vi kan utarbeide et rimelig estimat av ytelsen til modellen når den brukes til å forutsi nye data.

Vi vil bruke 67 prosent av dataene til trening og de resterende 33 prosent som et testsett for å evaluere ...

Możesz być również zainteresowany