Funksjonsoptimalisering med SciPy

Funksjonsoptimalisering med SciPy

Optimalisering innebærer å finne inngangene til en objektiv funksjon som resulterer i minimum eller maksimal effekt av funksjonen.

Python-biblioteket med åpen kildekode for vitenskapelig databehandling kalt SciPy gir en rekke optimaliseringsalgoritmer. Mange av algoritmene brukes som en byggestein i andre algoritmer, spesielt maskinlæringsalgoritmer i scikit-learning-biblioteket.

Disse optimaliseringsalgoritmer kan brukes direkte på en frittstående måte for å optimalisere en funksjon. Aller helst algoritmer for lokalt søk og algoritmer for globalt søk, de to hovedtyper av optimalisering du kan støte på i et maskinlæringsprosjekt.

I denne veiledningen vil du oppdage optimaliseringsalgoritmer levert av SciPy-biblioteket.

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

  • SciPy-biblioteket tilbyr en rekke forskjellige optimaliseringsalgoritmer for forskjellige formål.
  • De lokale søkeoptimaliseringsalgoritmene som er tilgjengelige i SciPy.
  • De globale søkeoptimaliseringsalgoritmene som er tilgjengelige i SciPy.

La oss komme i gang.

Funksjonsoptimalisering med SciPy

Funksjonsoptimalisering med SciPy
Foto av Manoel Lemos, noen rettigheter forbeholdt.

Opplæringsoversikt

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

  1. Optimalisering med SciPy
  2. Lokalt søk med SciPy
  3. Globalt søk med SciPy

Optimalisering med SciPy

Python SciPy open source-biblioteket for vitenskapelig databehandling gir en rekke optimaliseringsteknikker.

Mange av algoritmene brukes som byggesteiner for andre algoritmer i SciPy-biblioteket, samt maskinlæringsbiblioteker som scikit-learning.

Før vi gjennomgår spesifikke teknikker, la oss se på hvilke typer algoritmer som tilbys av biblioteket.

De er:

  • Skalaroptimalisering: Optimalisering av en konveks enkeltvariabelfunksjon.
  • Lokalt søk: Optimalisering av en unimodal funksjon med flere variabler.
  • Globalt søk: Optimalisering av en multimodal funksjon med flere variabler.
  • Minste firkanter: Løs lineære og ikke-lineære problemer med minste kvadrat.
  • Kurvetilpasning: Tilpass en kurve til et dataeksempel.
  • Root Finding: Finn roten (inngang som gir en utgang på null) av en funksjon.
  • Lineær programmering: Lineær optimalisering underlagt begrensninger.

Alle algoritmer antar at den objektive funksjonen som optimaliseres er en minimeringsfunksjon. Hvis funksjonen din maksimerer seg, kan den konverteres til minimering ved å legge til et negativt tegn til verdier som returneres fra din objektive funksjon.

I tillegg til listen over, tilbyr biblioteket også verktøyfunksjoner som brukes av noen av algoritmene, så vel som Rosenbrock-testproblemet.

For en god oversikt over funksjonene i SciPy-biblioteket for optimalisering, se:

Nå som vi har en ide på høyt nivå om hvilke typer optimaliseringsteknikker som støttes av biblioteket, la oss se nærmere på to grupper algoritmer som vi er mer sannsynlig å bruke i anvendt maskinlæring. De er lokalt søk og globalt søk.

Lokalt søk med SciPy

Lokalt søk, eller lokal funksjonsoptimalisering, refererer til algoritmer som søker inngangen til en funksjon som resulterer i minimum eller maksimal utgang der funksjonen eller den begrensede regionen det søkes antas å ha en enkelt optima, f.eks. Unimodal.

Funksjonen som optimaliseres, kan eller ikke er konveks, og kan ha en eller flere inngangsvariabler.

En lokal søkeoptimalisering kan brukes direkte for å optimalisere en funksjon hvis funksjonen antas eller er kjent som umodell; Ellers kan den lokale søkealgoritmen brukes for å finjustere resultatet av en global søkealgoritme.

SciPy-biblioteket gir lokalt søk via minimize () -funksjonen.

De minimer () funksjon tar som inndata navnet på den objektive funksjonen som blir minimert, og startpunktet for å starte søket fra, og returnerer et OptimizeResult som oppsummerer suksessen eller feilen i søket og detaljene i løsningen hvis de blir funnet.

Ytterligere informasjon om objektivfunksjonen kan gis hvis kjent, for eksempel grensene for inngangsvariablene, en funksjon for beregning av det første derivatet av funksjonen (gradient eller Jacobian matrix), en funksjon for beregning av det andre derivatet av funksjonen (Hessian matrise), og eventuelle begrensninger på inngangene.

Det er viktigere at funksjonen girmetode”Argument som gjør det mulig å spesifisere den spesifikke optimaliseringen som brukes i det lokale søket.

En rekke populære lokale søkealgoritmer er tilgjengelige, for eksempel:

Eksemplet nedenfor viser hvordan du løser en todimensjonal konveks funksjon ved hjelp av L-BFGS-B lokal søkealgoritme.

Å kjøre eksemplet utfører optimaliseringen og rapporterer suksessen eller mislykkingen av søket, antall utførte funksjonsevalueringer og inngangen som resulterte i funksjonens optima.

Nå som vi er kjent med å bruke en lokal søkealgoritme med SciPy, la oss se på globalt søk.

Globalt søk med SciPy

Global søk eller global funksjonsoptimalisering refererer til algoritmer som søker inngangen til en funksjon som resulterer i minimum eller maksimal utgang der funksjonen eller den begrensede regionen det søkes antas å ha flere lokale optima, for eksempel multimodal.

Funksjonen som optimaliseres er vanligvis ikke-lineær, ikke-konveks, og kan ha en eller flere inngangsvariabler.

Globale søkealgoritmer er vanligvis stokastiske, noe som betyr at de benytter seg av tilfeldighet i søkeprosessen og kanskje eller kanskje ikke administrerer en populasjon av kandidatløsninger som en del av søket.

SciPy-biblioteket gir en rekke stokastiske globale optimaliseringsalgoritmer, hver via forskjellige funksjoner. De er:

Biblioteket gir også shgo () -funksjonen for sekvensoptimalisering og brute () for optimalisering av rutenett.

Hver algoritme returnerer et OptimizeResult-objekt som oppsummerer suksessen eller mislykkingen av søket og detaljene i løsningen hvis de blir funnet.

Eksemplet nedenfor viser hvordan du løser en todimensjonal multimodal funksjon ved hjelp av simulert gløding.

Å kjøre eksemplet utfører optimalisering og rapporterer suksessen eller mislykkingen av søket, antall utførte funksjonsevalueringer og inngangen som resulterte i funksjonens optima.

Videre lesning

Denne delen gir flere ressurser om emnet hvis du ønsker å gå dypere.

APIer

Artikler

Sammendrag

I denne opplæringen oppdaget du optimaliseringsalgoritmer levert av SciPy-biblioteket.

Spesielt lærte du:

  • SciPy-biblioteket tilbyr en rekke forskjellige optimaliseringsalgoritmer for forskjellige formål.
  • De lokale søkeoptimaliseringsalgoritmene som er tilgjengelige i SciPy.
  • De globale søkeoptimaliseringsalgoritmene som er tilgjengelige i SciPy.

Har du noen spørsmål?
Still spørsmålene dine i kommentarene nedenfor, og jeg vil gjøre mitt beste for å svare.

Potresti anche essere interessato