Problemer med regresjon og sannsynlighetsklassifisering kan løses ved hjelp av Gauss-prosessen (GP), en veiledet læringsteknikk. Siden hver Gauss-prosess kan betraktes som en uendelig dimensjonal generalisering av multivariat Gaussiske fordelinger , begrepet Gauss dukker opp i navnet. Vi vil diskutere Gaussiske prosesser for regresjon i dette innlegget, som også omtales som Gaussisk prosessregresjon (GPR). Tallrike problemer i den virkelige verden innen materialvitenskap, kjemi, fysikk og biologi har blitt løst ved bruk av GPR.
Innholdsfortegnelse
- Gaussisk prosessregresjon (GPR)
- Nøkkelbegreper for Gaussisk prosessregresjon (GPR)
- Matematisk konsept for Gaussisk prosessregresjon (GPR)
- Implementering av Gaussian Process i Python
Gaussisk prosessregresjon (GPR)
Gaussisk prosessregresjon (GPR) er en kraftig og fleksibel ikke-parametrisk regresjonsteknikk som brukes i maskinlæring og statistikk . Det er spesielt nyttig når man arbeider med problemer som involverer kontinuerlige data, der forholdet mellom inngangsvariabler og utdata ikke er eksplisitt kjent eller kan være komplekst. GPR er en Bayesiansk tilnærming som kan modellere sikkerhet i spådommer, noe som gjør det til et verdifullt verktøy for ulike applikasjoner, inkludert optimalisering, tidsserieprognoser og mer. GPR er basert på konseptet med en Gauss-prosess, som er en samling av tilfeldige variabler, hvor ethvert endelig antall har en felles Gauss-fordeling. En Gauss-prosess kan betraktes som en fordeling av funksjoner.
Nøkkelbegreper for Gaussisk prosessregresjon (GPR)
Gaussain-prosess
En ikke-parametrisk, sannsynlighetsmodell kalt a Gaussisk prosess (GP) brukes i statistikk og maskinlæring for regresjon, klassifisering og usikkerhetskvantifisering. Den viser en gruppe tilfeldige variabler, som hver har en felles gaussisk fordeling og kan ha et endelig antall. Fastleger er en allsidig og effektiv teknikk for å modellere intrikate sammenhenger i data og produsere prognoser med tilhørende usikkerhet.
Kjennetegn ved Gaussiske prosesser :
- Ikke-parametrisk natur : Fastleger kan tilpasse seg kompleksiteten til dataene fordi de ikke stoler på et bestemt antall modellparametere
- Probabilistiske spådommer : Spådommer fra fastleger kan kvantifiseres fordi de leverer spådommer som sannsynlighetsfordelinger.
- Interpolering og utjevning : Fastleger er nyttige for støyende eller uregelmessig samplede data fordi de er flinke til å jevne ut støyende data og interpolere mellom datapunkter.
- Marginalisering av hyperparametre : Ved å eliminere kravet til eksplisitt hyperparameterjustering, marginaliserer de over hyperparametere, noe som gjør modellen enklere.
Gjennomsnittlig funksjon
Den forutsagte verdien av funksjonen som modelleres ved hvert inngangspunkt er representert av gjennomsnittlig funksjon i Gaussiske prosesser (fastleger). Det fungerer som en grunnleggende forutsetning angående den underliggende datastrukturen. Gjennomsnittsfunksjonen er ofte satt til null som standard, ikke nødvendigvis, og kan endres basert på dataegenskaper eller domeneekspertise. Ved å påvirke den sentrale tendensen til prognoser, hjelper det allmennleger med å identifisere mønstre eller trender i dataene. Fastleger gir sannsynlighetsspådommer som inneholder usikkerhet samt punktestimat ved å inkludere gjennomsnittsfunksjonen
Kovarians (kjerne) funksjon
De kovariansfunksjon , også referert til som kjernefunksjonen, måler hvor like inngangsdatapunktene er hverandre i Gaussiske prosesser (GPs). Det er essensielt for å karakterisere oppførselen til fastlegemodellen, og påvirke utvalget av funksjoner fra forrige distribusjon. Kovariansfunksjonen måler parvise likheter for å fastslå korrelasjonen mellom funksjonsverdier. Fastleger kan tilpasse seg et bredt spekter av datamønstre, fra jevne trender til komplekse strukturer, fordi ulike kjernefunksjoner fanger opp ulike typer korrelasjoner. Modellens ytelse kan bli sterkt påvirket av kjernevalget.
Tidligere distribusjoner
De tidligere distribusjon , i Gaussiske prosesser (GPs), er vår forståelse av funksjoner før observasjon av data. Vanligvis er det beskrevet av en kovariansfunksjon (kjerne) og en gjennomsnittlig funksjon. Mens kovariansfunksjonen beskriver likheten eller korrelasjonen mellom funksjonsverdier ved forskjellige inngangspunkter, koder middelfunksjonen våre tidligere forventninger. Dette brukes på forhånd av fastlegene for å lage en fordeling over funksjoner. Hos fastleger kan priors velges for å representere datausikkerhet, integrere domenekunnskap eller indikere jevnhet.
Bakre distribusjoner
Gaussiske prosesser senere distribusjon viser våre reviderte antakelser om funksjoner etter dataobservasjon. Den setter sammen sannsynligheten for dataene gitt funksjonen og den forrige distribusjonen. Den bakre GP-regresjonen gir en fordeling over funksjoner som samsvarer best med de observerte dataene. Ved å tillate probabilistiske spådommer og kvantifisering av usikkerhet, reflekterer den bakre fordelingen avveiningen mellom de tidligere oppfatningene som er lagret i den tidligere distribusjonen og informasjonen levert av dataene.
Matematisk konsept for Gaussisk prosessregresjon (GPR)
For regresjonsoppgaver brukes en ikke-parametrisk, probabilistisk maskinlæringsmodell kalt Gaussian Process (GP) regresjon. Når du modellerer intrikate og tvetydige interaksjoner mellom inngangs- og utdatavariabler, er det et potent verktøy. En multivariat Gauss-fordeling antas å produsere datapunktene i GP-regresjon, og målet er å utlede denne fordelingen.
Fastlege-regresjonsmodellen har følgende matematiske uttrykk. La oss anta x1, x2,…..,xner inngangsdatapunktene, der x tilhører reelle tall(-2,-1,0,1…), (xJeg
La oss anta y1, og2 ,……., ogner utgangsverdiene, hvor yJegtilhører reelt tall (yJeg
GP-regresjonsmodellen antar at en gaussisk prosess med en gjennomsnittlig funksjon (
Deretter, ved et sett med testplasseringer x*, er fordelingen av f gitt ved:
Vanligvis brukes kjernefunksjoner for å definere gjennomsnittsfunksjonen og kovariansfunksjonen. Som en illustrasjon beskrives den kvadratiske eksponentielle kjernen som ofte brukes som:
q3 måneder
Hvor,
k(x_{i}, x_{j}) = Kjernefunksjonen er representert av denne, og den beregner korrelasjonen eller likheten mellom to inngangsdatapunkter, xJegog xj.sigma^2 = Kjernens variansparameter er dette. Det etablerer kjernefunksjonens skala eller vertikale spredning. Den regulerer hvor sterkt datapunktene er korrelert. En høyeresigma^2 gir en kjernefunksjon med større variasjon.- exp: Eksponentialfunksjonen er ansvarlig for å heve e til argumentets makt.
||x_{i} – x_{j}||^2 : Forskjellen mellom inngangsdatapunktene, xJegog xj, er den kvadratiske euklidiske avstanden. Den geometriske separasjonen mellom punktene i funksjonsrommet måles.- l2: Dette er en representasjon av kjernens lengdeskala eller karakteristiske lengde. Den regulerer hastigheten som kjernefunksjonen forringes ettersom datapunkter er lenger fra hverandre. En lavere l fører til at kjernen brytes ned raskere.
GP-regresjonsmodellen bruker Bayesiansk inferens for å bestemme fordelingen av f som mest sannsynlig har produsert dataene gitt et sett med treningsdata (x, y). For å gjøre dette må den bakre fordelingen av f gitt dataene beregnes, som er definert som følger:
der marginalsannsynligheten for dataene er p(y|x), den tidligere fordelingen av f er p(f), og sannsynligheten for dataene gitt funksjonen f er (y|x,f).
Etter å ha lært den bakre fordelingen av f, beregner modellen den bakre prediktive fordelingen for å lage spådommer ved ytterligere testpunkter x*. Det kan defineres som følger:
Hvor,
p(f^*|x*, y, x) = Dette viser, gitt treningsdataene y og x, den betingede sannsynligheten for de predikerte funksjonsverdiene f*ved et nytt inngangspunkt x*For å si det på en annen måte, er det sannsynlighetsfordelingen over alle potensielle funksjonsverdier på det nye inndatastedet x*, betinget av de observerte dataene y og deres matchende inngangsplasseringer x.int p(f^*|x^*, f)p(f|y,x)df = Et integral brukes i denne delen av ligningen for å bestemme den betingede sannsynligheten. Integralet omfatter alle potensielle verdier for funksjonen f.p(f^*|x^*, f) = Dette er den betingede sannsynlighetsfordelingen av de forventede funksjonsverdiene f*på x*, gitt funksjonsverdiene f på noen mellomliggende steder.p(f|y,x) = Gitt de observerte dataene (y) og deres inngangsplasseringer (x), er dette den betingede sannsynlighetsfordelingen til funksjonsverdiene (f).
For oppgaver som usikkerhetsbevisst beslutningstaking og aktiv læring tilbyr denne fordelingen et mål på prediksjonens usikkerhet, noe som kan være nyttig.
Trinn i Gaussisk prosessregresjon
- Datainnsamling : Samle input-output dataparene for regresjonsproblemet ditt.
- Velg en kjernefunksjon : Velg en passende kovariansfunksjon (kjerne) som passer ditt problem. Valget av kjerne påvirker formen på funksjonene som GPR kan modellere.
- Parameteroptimalisering : Estimer hyperparametrene til kjernefunksjonen ved å maksimere sannsynligheten for dataene. Dette kan gjøres ved hjelp av optimaliseringsteknikker som gradientnedstigning.
- Forutsigelse: Gitt et nytt innspill, bruk den trente GPR-modellen til å lage spådommer. GPR gir både det predikerte gjennomsnittet og den tilhørende usikkerheten (variansen).
Implementering av Gaussisk prosessregresjon (GPR)
Python import numpy as np import matplotlib.pyplot as plt from sklearn.gaussian_process import GaussianProcessRegressor from sklearn.gaussian_process.kernels import RBF from sklearn.model_selection import train_test_split # Generate sample data np.random.seed(0) X = np.sort(5 * np.random.rand(80, 1), axis=0) y = np.sin(X).ravel() # Add noise to the data y += 0.1 * np.random.randn(80) # Define the kernel (RBF kernel) kernel = 1.0 * RBF(length_scale=1.0) # Create a Gaussian Process Regressor with the defined kernel gp = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=10) # Split the data into training and testing sets X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.5, random_state=0) # Fit the Gaussian Process model to the training data gp.fit(X_train, y_train) # Make predictions on the test data y_pred, sigma = gp.predict(X_test, return_std=True) # Visualize the results x = np.linspace(0, 5, 1000)[:, np.newaxis] y_mean, y_cov = gp.predict(x, return_cov=True) plt.figure(figsize=(10, 5)) plt.scatter(X_train, y_train, c='r', label='Training Data') plt.plot(x, y_mean, 'k', lw=2, zorder=9, label='Predicted Mean') plt.fill_between(x[:, 0], y_mean - 1.96 * np.sqrt(np.diag(y_cov)), y_mean + 1.96 * np.sqrt(np.diag(y_cov)), alpha=0.2, color='k', label='95% Confidence Interval') plt.xlabel('X') plt.ylabel('y') plt.legend() plt.show()> Produksjon:

I denne koden, generer først noen eksempeldatapunkter med ekstra støy, definer deretter en RBF-kjerne og lag en Gaussisk prosessregressor med det. Modellen trenes på treningsdataene og brukes til å lage spådommer på testdataene. Til slutt blir resultatene visualisert med et plott som viser treningsdataene, det anslåtte gjennomsnittet og 95 % konfidensintervall.
Implementering av Gaussian Process i Python
Scikit Lær
Python import matplotlib.pyplot as plt import numpy as np from scipy import linalg from sklearn.gaussian_process import kernels,GaussianProcessRegressor ## check version import sys import sklearn print(sys.version) !python --version print("numpy:", np.__version__) print("sklearn:",sklearn.__version__)> De nødvendige bibliotekene for Gaussian Process Regression (GPR) i Python importeres av denne koden; disse er SciPy for lineære algebrafunksjoner, NumPy for numeriske operasjoner, og Matplotlib for datavisualisering. For å sikre at den er kompatibel med de nødvendige pakkene, verifiserer den i tillegg versjonen av Python og skriver den ut, sammen med versjonene av NumPy og scikit-learn (sklearn).
Kjernevalg
Python np.random.seed(0) n=50 kernel_ =[kernels.RBF (), kernels.RationalQuadratic(), kernels.ExpSineSquared(periodicity=10.0), kernels.DotProduct(sigma_0=1.0)**2, kernels.Matern() ] print(kernel_, '
')> Produksjon:
[RBF(lengdeskala=1),
RationalQuadratic(alpha=1, length_scale=1),
ExpSineSquared(length_scale=1, periodicity=10),
Punktprodukt(sigma_0=1) ** 2,
Mor(lengdeskala=1, nu=1,5)]
Koden spesifiserer antall teststeder (n) og initialiserer en tilfeldig frø . For å vise de valgte kjernene, genererer den en liste over flere kjernefunksjoner og skriver ut listen.
Kjernesammenligning og visualisering
Python for kernel in kernel_: # Gaussian process gp = GaussianProcessRegressor(kernel=kernel) # Prior x_test = np.linspace(-5, 5, n).reshape(-1, 1) mu_prior, sd_prior = gp.predict(x_test, return_std=True) samples_prior = gp.sample_y(x_test, 3) # plot plt.figure(figsize=(10, 3)) plt.subplot(1, 2, 1) plt.plot(x_test, mu_prior) plt.fill_between(x_test.ravel(), mu_prior - sd_prior, mu_prior + sd_prior, color='aliceblue') plt.plot(x_test, samples_prior, '--') plt.title('Prior') # Fit x_train = np.array([-4, -3, -2, -1, 1]).reshape(-1, 1) y_train = np.sin(x_train) gp.fit(x_train, y_train) # posterior mu_post, sd_post = gp.predict(x_test, return_std=True) mu_post = mu_post.reshape(-1) samples_post = np.squeeze(gp.sample_y(x_test, 3)) # plot plt.subplot(1, 2, 2) plt.plot(x_test, mu_post) plt.fill_between(x_test.ravel(), mu_post - sd_post, mu_post + sd_post, color='aliceblue') plt.plot(x_test, samples_post, '--') plt.scatter(x_train, y_train, c='blue', s=50) plt.title('Posterior') plt.show() print("gp.kernel_", gp.kernel_) print("gp.log_marginal_likelihood:", gp.log_marginal_likelihood(gp.kernel_.theta)) print('-'*50, '
')> Produksjon:
RBF
gp.kernel_ RBF(length_scale=1,93)
gp.log_marginal_likelihood: -3.444937833462133
-------------------------------------------------- -
Rasjonell kvadratisk

gp.kernel_ RationalQuadratic(alpha=1e+05, length_scale=1.93)
gp.log_marginal_likelihood: -3.4449718909150966
--------------------------------------------------
ExpSineSquared

gp.kernel_ ExpSineSquared(length_scale=0,000524, periodicity=2,31e+04)
gp.log_marginal_likelihood: -3.4449381454930217
--------------------------------------------------
Punktprodukt

gp.kernel_ DotProduct(sigma_0=0.998) ** 2
gp.log_marginal_likelihood: -150204291.56018084
--------------------------------------------------
Mors

gp.kernel_ Matern(length_scale=1,99, nu=1,5)
gp.log_marginal_likelihood: -5.131637070524745
--------------------------------------------------
Koden starter med å gå over de forskjellige kjernefunksjonene som er oppført i kjerne_listen. En Gaussian Process Regressor (gp) lages ved å bruke den spesielle kjernen for hver kjerne. For Gauss-prosessen etablerer dette kovariansstrukturen. For å vurdere den forrige fordelingen, etableres et sett med testinndatapunkter kalt x_test, med verdier fra -5 til 5. Dette settet med punkter transformeres til en kolonnevektor.
Ved å bruke gp.predict-metoden bestemmes den tidligere distribusjonens gjennomsnitt (mu_prior) og standardavvik (sd_prior) ved hvert testpunkt. Standardavviksverdier er forespurt ved å bruke alternativet return_std=True. gp.sample_y (x_test, 3) brukes for å få tre funksjonsprøver fra forrige distribusjon.
Det første underplottet viser gjennomsnittet for forrige fordeling, med standardavviket representert av et skyggelagt område. Prøvene er lagt over som stiplede linjer, mens gjennomsnittet vises som en heltrukket linje. Det er et underplott som heter Prior. Det er et definert sett med treningsdatapunkter (x_train) og målverdier (y_train) som følger med dem. Den Gaussiske prosessmodellen er tilpasset ved å bruke disse punktene (gp.fit(x_train, y_train)). Fem datapunkter med tilsvarende sinusverdier utgjør treningsdataene i denne koden.
Etter treningsdatatilpasningsfasen beregner prosedyren den bakre fordelingens gjennomsnitt (mu_post) og standardavvik (sd_post) for de samme testpunktene (x_test). gp.sample_y(x_test, 3) brukes også til å produsere funksjonsprøver fra den bakre fordelingen. Det andre subplotet overlegger de samplede funksjonene som stiplede linjer og viser gjennomsnittet av den bakre fordelingen, skyggelagt med standardavviket. Plottet i blått er treningsdatapunktene. Underplottet har navnet Posterior.
For å se de forrige og bakre plottene for gjeldende kjerne og få en visuell forståelse av oppførselen til modellen, ring Matplotlibs plt.show()-funksjon.
Koden viser detaljer om den gjeldende kjernen, for eksempel gp.kernel_, som indikerer den gjeldende kjernen som brukes, og gp.log_marginal_likelihood (gp.kernel_.theta), som gir loggen marginal sannsynlighet for at modellen bruker den gjeldende kjernen, etter hvert sett med tidligere og bakre plott.
Fordeler med Gaussisk prosessregresjon (GPR)
Gaussisk prosessregresjon (GPR) har en rekke fordeler i en rekke bruksområder:
- GPR gir et sannsynlig rammeverk for regresjon, som betyr at det ikke bare gir punktestimater, men også gir usikkerhetsestimater for prediksjoner.
- Den er svært fleksibel og kan fange opp komplekse relasjoner i dataene.
- GPR kan tilpasses ulike applikasjoner, inkludert tidsserieprognoser, optimalisering og Bayesiansk optimalisering.
Utfordringer ved Gaussisk prosessregresjon (GPR)
- GPR kan være beregningsmessig dyrt når man arbeider med store datasett, ettersom inversjon av en kovariansmatrise er nødvendig.
- Valget av kjernefunksjonen og dens hyperparametre kan påvirke modellens ytelse betydelig.
Gode eksempler på GPR-applikasjoner
- Aksjeprisprediksjon: GPR kan brukes til å modellere og forutsi aksjekurser, tatt i betraktning volatiliteten og usikkerheten i finansmarkedene.
- Dataeksperimenter: GPR er nyttig for å optimalisere komplekse simuleringer ved å modellere input-output-forhold og identifisere de mest innflytelsesrike parameterne.
- Anomalideteksjon: GPR kan brukes på anomalideteksjon, der den identifiserer uvanlige mønstre i tidsseriedata ved å fange opp normale datafordelinger.
Konklusjon
Avslutningsvis er Gaussisk prosessregresjon et verdifullt verktøy for dataanalyse og prediksjon i situasjoner der det er viktig å forstå usikkerheten i prediksjoner. Ved å utnytte sannsynlighetsmodellering og kjernefunksjoner kan GPR gi nøyaktige og tolkbare resultater. Det er imidlertid avgjørende å vurdere beregningskostnaden og behovet for ekspertinnspill når GPR implementeres i praksis.
hva er modulo i c++