logo

Regressió del procés gaussià (GPR)

Els problemes de regressió i classificació probabilística es poden resoldre mitjançant el procés gaussià (GP), una tècnica d'aprenentatge supervisat. Ja que cada procés gaussià es pot pensar com una generalització de dimensions infinites de multivariant Distribucions gaussianes , el terme gaussià apareix al nom. En aquest article parlarem dels processos gaussians per a la regressió, que també es coneix com a regressió de processos gaussians (GPR). Amb l'ús de GPR s'han resolt nombrosos problemes del món real en els camps de la ciència dels materials, la química, la física i la biologia.

Taula de contingut



Regressió del procés gaussià (GPR)

La regressió de processos gaussians (GPR) és una tècnica de regressió no paramètrica potent i flexible que s'utilitza aprenentatge automàtic i estadístiques . És especialment útil quan es tracta de problemes que impliquen dades contínues, on la relació entre variables d'entrada i sortida no es coneix explícitament o pot ser complexa. GPR és un enfocament bayesià que pot modelar la certesa en les prediccions, cosa que el converteix en una eina valuosa per a diverses aplicacions, com ara l'optimització, la previsió de sèries temporals i molt més. GPR es basa en el concepte de procés gaussià, que és una col·lecció de variables aleatòries, qualsevol nombre finit de les quals té una distribució gaussiana conjunta. Un procés gaussià es pot considerar com una distribució de funcions.

Conceptes clau de la regressió del procés gaussià (GPR)

Procés de Gaussain

Un model probabilístic no paramètric anomenat a Procés gaussià (GP) s'utilitza en estadístiques i aprenentatge automàtic per a la regressió, la classificació i la quantificació de la incertesa. Representa un grup de variables aleatòries, cadascuna de les quals té una distribució gaussiana conjunta i pot tenir un nombre finit. Els GP són una tècnica versàtil i eficaç per modelar relacions complexes en dades i produir previsions amb incertesa relacionada.

Característiques dels processos gaussians :



programació cobol
  • Naturalesa no paramètrica : els metges de capçalera poden ajustar-se a la complexitat de les dades perquè no es basen en un nombre determinat de paràmetres del model
  • Prediccions probabilístiques : Les prediccions dels metges de capçalera es poden quantificar perquè ofereixen prediccions com a distribucions de probabilitat.
  • Interpolació i suavització : els GP són útils per a dades sorolloses o mostrejades de manera irregular perquè són bons per suavitzar dades sorolloses i interpolar entre punts de dades.
  • Marginació d'hiperparàmetres : En eliminar el requisit d'ajustaments explícits d'hiperparàmetres, marginen els hiperparàmetres, fent que el model sigui més senzill.

Funció mitjana

El valor previst de la funció que s'està modelant en cada punt d'entrada es representa amb el funció mitjana en Processos Gaussians (GP). Funciona com a presumpció fonamental pel que fa a l'estructura de dades subjacent. La funció mitjana s'estableix sovint a zero per defecte no necessàriament i es pot modificar en funció de les propietats de les dades o de l'experiència del domini. En influir en la tendència central de les previsions, ajuda els metges generals a identificar patrons o tendències en les dades. Els GP proporcionen prediccions probabilístiques que contenen incertesa, així com estimacions puntuals mitjançant la inclusió de la funció mitjana

Funció de covariància (nucli).

El funció de covariància , també anomenada funció del nucli, mesura la semblança que tenen els punts de dades d'entrada entre si en els processos gaussians (GP). És essencial per caracteritzar el comportament del model GP, afectant la selecció de funcions de la distribució anterior. La funció de covariància mesura les similituds per parelles per determinar la correlació entre els valors de la funció. Els metges de capçalera poden ajustar-se a una àmplia gamma de patrons de dades, des de tendències suaus fins a estructures complexes, perquè les diferents funcions del nucli capturen diferents tipus de correlacions. El rendiment del model es pot veure molt afectat per la selecció del nucli.

Distribucions prèvies

El distribució prèvia , en processos gaussians (GP), és la nostra comprensió de les funcions abans de l'observació de qualsevol dada. Normalment, es descriu mitjançant una funció de covariància (nucli) i una funció mitjana. Mentre que la funció de covariància descriu la similitud o correlació entre els valors de la funció en diversos punts d'entrada, la funció mitjana codifica les nostres expectatives anteriors. Els metges de capçalera l'utilitzen prèviament per crear una distribució sobre funcions. En els GP, es poden seleccionar a priori per representar la incertesa de les dades, integrar el coneixement del domini o indicar la suavitat.



Distribucions posteriors

processos gaussians posterior distribution mostra les nostres hipòtesis revisades sobre les funcions després de l'observació de dades. Reuneix la probabilitat de les dades donades la funció i la distribució anterior. La part posterior de la regressió GP ofereix una distribució sobre funcions que coincideixen més amb les dades observades. En permetre les prediccions probabilístiques i la quantificació de la incertesa, la distribució posterior reflecteix el compromís entre les creences anteriors emmagatzemades a la distribució anterior i la informació subministrada per les dades.

Concepte matemàtic de regressió del procés gaussià (GPR)

Per a les tasques de regressió, s'utilitza un model d'aprenentatge automàtic probabilístic no paramètric anomenat regressió del procés gaussià (GP). Quan es modelen interaccions complexes i ambigües entre variables d'entrada i de sortida, és una eina potent. S'assumeix que una distribució gaussiana multivariant produeix els punts de dades en regressió GP, i l'objectiu és inferir aquesta distribució.

El model de regressió GP té la següent expressió matemàtica. Suposem x1, x2,…..,xnsón els punts de dades d'entrada, on x pertanyen a nombres reals (-2,-1,0,1...), (xiepsilon R)

Suposem que y1, i2 ,……., insón els valors de sortida, on yipertany al nombre real (yiepsilon R)

El model de regressió GP suposa que un procés gaussià amb una funció mitjana (mu ) i la funció de covariància (k) proporciona la funció f que connecta les entrades a les sortides.

Aleshores, en un conjunt de llocs de prova x*, la distribució de f ve donada per:

f(x^*) ∼ N(mu(x^*), k(x^*, x^*))

Normalment, les funcions del nucli s'utilitzen per definir la funció mitjana i la funció de covariància. Com a il·lustració, el nucli exponencial al quadrat que s'utilitza amb freqüència es descriu com:

k(x_{i},x_{j}) = sigma^2 exp(-frac{||x_{i} – x_{j}||^2}{2l^2})

On,

  • k(x_{i}, x_{j}) = La funció del nucli es representa amb això, i calcula la correlació o semblança entre dos punts de dades d'entrada, xii xj.
  • sigma^2 = El paràmetre de variància del nucli és aquest. Estableix l'escala o propagació vertical de la funció del nucli. Regula la força de la correlació dels punts de dades. Un més altsigma^2 produeix una funció del nucli amb major variància.
  • exp: la funció exponencial s'encarrega d'elevar e a la potència de l'argument.
  • ||x_{i} – x_{j}||^2 : La diferència entre els punts de dades d'entrada, xii xj, és la distància euclidiana al quadrat. Es mesura la separació geomètrica entre els punts de l'espai de característiques.
  • l2: Aquesta és una representació de l'escala de longitud del nucli o longitud característica. Regula la velocitat a la qual es deteriora la funció del nucli a mesura que els punts de dades estan més allunyats. Una l més baixa fa que el nucli es degradi més ràpidament.

El model de regressió GP aplica la inferència bayesiana per determinar la distribució de f que és més probable que hagi produït les dades donat un conjunt de dades d'entrenament (x, y). Per fer-ho, cal calcular la distribució posterior de f donades les dades, que es defineix de la següent manera:

p(f|x,y) =frac x,f)p(f) x)

bloquejar una aplicació d'Android

on la probabilitat marginal de les dades és p(y|x), la distribució prèvia de f és p(f) i la probabilitat de les dades donada la funció f és (y|x,f).

Després d'aprendre la distribució posterior de f, el model calcula la distribució predictiva posterior per fer prediccions en punts de prova addicionals x*. Es pot definir de la següent manera:

p(f^*|x^*, y,x) = int p(f^*|x^*, f), p(f|y,x)df

On,

  • p(f^*|x*, y, x) = Això mostra, donades les dades d'entrenament y i x, la probabilitat condicional dels valors de funció predits f*en un nou punt d'entrada x*Per dir-ho d'una altra manera, és la distribució de probabilitat sobre tots els valors potencials de la funció al nou lloc d'entrada x*, condicionat a les dades observades y i les seves ubicacions d'entrada coincidents x.
  • int p(f^*|x^*, f)p(f|y,x)df = En aquesta secció de l'equació s'utilitza una integral per determinar la probabilitat condicional. La integral inclou tots els valors potencials de la funció f.
  • p(f^*|x^*, f) = Aquesta és la distribució de probabilitat condicional dels valors esperats de la funció f*a x*, donats els valors de la funció f en alguns llocs intermedis.
  • p(f|y,x) = Donades les dades observades (y) i les seves ubicacions d'entrada (x), aquesta és la distribució de probabilitat condicional dels valors de la funció (f).

Per a tasques com la presa de decisions conscient de la incertesa i l'aprenentatge actiu, aquesta distribució ofereix una mesura de la incertesa de la predicció, que pot ser útil.

Passos de la regressió del procés gaussià

  • Recopilació de dades : Recolliu els parells de dades d'entrada-sortida per al vostre problema de regressió.
  • Trieu una funció del nucli : Seleccioneu una funció de covariància (nucli) adequada que s'adapti al vostre problema. L'elecció del nucli influeix en la forma de les funcions que GPR pot modelar.
  • Optimització de paràmetres : Estimar els hiperparàmetres de la funció del nucli maximitzant la probabilitat de les dades. Això es pot fer mitjançant tècniques d'optimització com el descens de gradients.
  • Predicció: Donada una entrada nova, utilitzeu el model GPR entrenat per fer prediccions. GPR proporciona tant la mitjana prevista com la incertesa associada (variància).

Implementació de la regressió del procés gaussià (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()>

Sortida:

gpr-Geeksforgeeks

En aquest codi, primer genereu alguns punts de dades de mostra amb soroll afegit, després definiu un nucli RBF i creeu un Regressor del procés gaussià amb ell. El model s'entrena amb les dades d'entrenament i s'utilitza per fer prediccions sobre les dades de prova. Finalment, els resultats es visualitzen amb un gràfic que mostra les dades d'entrenament, la mitjana prevista i l'interval de confiança del 95%.

Implementació del procés gaussià en Python

Scikit Aprèn

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__)>

Les biblioteques necessàries per a la regressió de processos gaussians (GPR) a Python s'importen mitjançant aquest codi; aquests són SciPy per a funcions d'àlgebra lineal, NumPy per a operacions numèriques, i Matplotlib per a la visualització de dades. Per assegurar-se que és compatible amb els paquets necessaris, a més verifica la versió de Python i la imprimeix, juntament amb les versions de NumPy i scikit-learn (sklearn).

Selecció del nucli

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_, ' ')>

Sortida:

1 a 100 roman núm

[RBF(escala_longitud=1),
RationalQuadratic(alpha=1, length_scale=1),
ExpSineSquared(escala_longitud=1, periodicitat=10),
DotProduct(sigma_0=1) ** 2,
Maternal(escala_longitud=1, nu=1,5)]

El codi especifica el nombre de llocs de prova (n) i inicialitza a llavor aleatòria . Per tal de mostrar els nuclis escollits, genera una llista de diverses funcions del nucli i imprimeix la llista.

Comparació i visualització del nucli

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, ' ')>

Sortida:

RBF

gràfic-1-Geeksforgeeks

gp.kernel_ RBF(escala_longitud=1,93)
gp.log_marginal_probabilitat: -3.444937833462133
-------------------------------------------------- -

Quadràtica racional

gràfic-2-Geeksforgeeks

gp.kernel_ RationalQuadratic(alpha=1e+05, length_scale=1,93)
gp.log_marginal_probabilitat: -3.4449718909150966
--------------------------------------------------

ExpSineSquared

gràfic-3-Geeksforgeeks

mb a gb

gp.kernel_ ExpSineSquared(longitud_escala=0,000524, periodicitat=2,31e+04)
gp.log_marginal_probabilitat: -3.4449381454930217
--------------------------------------------------

Producte Punt

gràfic-4-Geeksforgeeks

gp.kernel_ DotProduct(sigma_0=0,998) ** 2
gp.log_marginal_probabilitat: -150204291.56018084
--------------------------------------------------

Maternal

gràfic-5-Geeksforgeeks

gp.kernel_ Matern(longitud_escala=1,99, nu=1,5)
gp.log_marginal_probabilitat: -5.131637070524745
--------------------------------------------------

El codi comença fent un bucle per sobre de les diferents funcions del nucli enumerades a la llista kernel_. Un regressor de procés gaussià (gp) es fa utilitzant el nucli particular per a cada nucli. Per al procés gaussià, això estableix l'estructura de covariància. Per tal de valorar la distribució anterior, s'estableix un conjunt de punts d'entrada de prova anomenat x_test, amb valors que oscil·len entre -5 i 5. Aquest conjunt de punts es transforma en un vector columna.

significat xdxd

Mitjançant el mètode gp.predict, la mitjana de la distribució prèvia (mu_prior) i la desviació estàndard (sd_prior) es determinen a cada punt de prova. Els valors de desviació estàndard es demanen mitjançant l'opció return_std=True. gp.sample_y (x_test, 3) s'utilitza per obtenir tres mostres de funcions de la distribució anterior.

La primera subgràfica mostra la mitjana de la distribució anterior, amb la desviació estàndard representada per una àrea ombrejada. Les mostres es superposen com a línies discontínues, mentre que la mitjana es mostra com una línia sòlida. Hi ha una subtrama anomenada Prior. Hi ha un conjunt definit de punts de dades d'entrenament (x_train) i valors d'objectius (y_train) que els acompanyen. El model del procés gaussià s'ajusta mitjançant aquests punts (gp.fit(x_train, y_train)). Cinc punts de dades amb els valors sinus corresponents conformen les dades d'entrenament d'aquest codi.

Després de la fase d'ajust de les dades d'entrenament, el procediment calcula la mitjana de la distribució posterior (mu_post) i la desviació estàndard (sd_post) per als mateixos punts de prova (x_test). gp.sample_y(x_test, 3) també s'utilitza per produir mostres de funcions a partir de la distribució posterior. La segona subtrama superposa les funcions mostrejades com a línies de punts i mostra la mitjana de la distribució posterior, ombrejada amb la desviació estàndard. En blau hi ha els punts de dades d'entrenament. La subtrama té el nom de Posterior.

Per veure els gràfics anteriors i posteriors del nucli actual i obtenir una comprensió visual del comportament del model, truqueu a la funció plt.show() de Matplotlib.

El codi mostra detalls sobre el nucli actual, com ara gp.kernel_, que indica el nucli actual que s'utilitza, i gp.log_marginal_probabilitat (gp.kernel_.theta), que dóna la probabilitat logarítmica marginal del model utilitzant el nucli actual, després de cada conjunt de gràfics anteriors i posteriors.

Avantatges de la regressió del procés gaussià (GPR)

La regressió del procés gaussià (GPR) té una sèrie d'avantatges en una sèrie d'aplicacions:

  • GPR proporciona un marc probabilístic per a la regressió, el que significa que no només ofereix estimacions puntuals, sinó que també proporciona estimacions d'incertesa per a les prediccions.
  • És altament flexible i pot capturar relacions complexes a les dades.
  • GPR es pot adaptar a diverses aplicacions, inclosa la previsió de sèries temporals, l'optimització i l'optimització bayesiana.

Reptes de la regressió del procés gaussià (GPR)

  • GPR pot ser computacionalment costós quan es tracta de grans conjunts de dades, ja que es requereix la inversió d'una matriu de covariància.
  • L'elecció de la funció del nucli i els seus hiperparàmetres poden afectar significativament el rendiment del model.

Bons exemples d'aplicacions GPR

  • Predicció del preu de les accions: El GPR es pot utilitzar per modelar i predir els preus de les accions, tenint en compte la volatilitat i la incertesa dels mercats financers.
  • Experiments informàtics: GPR és útil per optimitzar simulacions complexes modelant les relacions d'entrada-sortida i identificant els paràmetres més influents.
  • Detecció d'anomalies: El GPR es pot aplicar a la detecció d'anomalies, on identifica patrons inusuals en dades de sèries temporals capturant distribucions de dades normals.

Conclusió

En conclusió, la regressió de processos gaussià és una eina valuosa per a l'anàlisi i predicció de dades en situacions en què la comprensió de la incertesa en les prediccions és essencial. Aprofitant el modelatge probabilístic i les funcions del nucli, GPR pot proporcionar resultats precisos i interpretables. Tanmateix, és crucial tenir en compte el cost computacional i la necessitat d'aportacions d'experts quan s'implementa GPR a la pràctica.