Problémy regrese a pravděpodobnostní klasifikace lze vyřešit pomocí Gaussova procesu (GP), techniky učení pod dohledem. Protože každý Gaussův proces lze považovat za nekonečně-dimenzionální zobecnění mnohorozměrných Gaussova rozdělení , v názvu se objevuje výraz Gaussian. V tomto příspěvku budeme diskutovat o Gaussových procesech pro regresi, což je také označováno jako regrese Gaussových procesů (GPR). S použitím GPR bylo vyřešeno mnoho skutečných problémů v oblasti vědy o materiálech, chemie, fyziky a biologie.
Obsah
- Gaussova regrese procesu (GPR)
- Klíčové pojmy gaussovské procesní regrese (GPR)
- Matematický koncept gaussovské regrese procesu (GPR)
- Implementace Gaussova procesu v Pythonu
Gaussova regrese procesu (GPR)
Gaussova procesní regrese (GPR) je výkonná a flexibilní neparametrická regresní technika používaná v strojové učení a statistika . Je zvláště užitečné při řešení problémů zahrnujících spojitá data, kde vztah mezi vstupními proměnnými a výstupem není explicitně znám nebo může být složitý. GPR je bayesovský přístup, který dokáže modelovat jistotu v predikcích, díky čemuž je cenným nástrojem pro různé aplikace, včetně optimalizace, předpovídání časových řad a dalších. GPR je založen na konceptu Gaussova procesu, což je soubor náhodných proměnných, z nichž jakýkoli konečný počet má společné Gaussovo rozdělení. Gaussův proces lze považovat za distribuci funkcí.
Klíčové pojmy gaussovské procesní regrese (GPR)
Gaussainův proces
Neparametrický, pravděpodobnostní model zvaný a Gaussův proces (GP) se používá ve statistice a strojovém učení pro regresi, klasifikaci a kvantifikaci nejistot. Zobrazuje skupinu náhodných proměnných, z nichž každá má společné Gaussovo rozdělení a může mít konečný počet. GP jsou všestrannou a účinnou technikou pro modelování složitých vztahů v datech a vytváření předpovědí se související nejistotou.
Charakteristika Gaussových procesů :
- Neparametrická povaha : Praktičtí lékaři se mohou přizpůsobit složitosti dat, protože se nespoléhají na stanovený počet parametrů modelu
- Pravděpodobnostní předpovědi : Předpovědi od praktických lékařů lze kvantifikovat, protože poskytují předpovědi jako rozdělení pravděpodobnosti.
- Interpolace a vyhlazování : GP jsou užitečné pro hlučná nebo nepravidelně vzorkovaná data, protože jsou dobré při vyhlazování hlučných dat a interpolaci mezi datovými body.
- Marginalizace hyperparametrů : Odstraněním požadavku na explicitní ladění hyperparametrů marginalizují nad hyperparametry, takže model je jednodušší.
Střední funkce
Předpokládaná hodnota funkce, která je modelována v každém vstupním bodě, je reprezentována střední funkce v Gaussových procesech (GP). Funguje jako základní předpoklad týkající se základní datové struktury. Střední funkce je ve výchozím nastavení často nastavena na nulu, což není nezbytně nutné a lze ji upravit na základě vlastností dat nebo odborných znalostí domény. Ovlivněním centrální tendence prognóz pomáhá praktickým lékařům identifikovat vzorce nebo trendy v datech. Praktičtí lékaři poskytují pravděpodobnostní předpovědi, které obsahují nejistotu i bodové odhady tím, že zahrnují střední funkci
Funkce kovariance (kernel).
The kovarianční funkce , také označovaná jako funkce jádra, měří, jak podobné jsou si vstupní datové body navzájem v Gaussových procesech (GP). Je zásadní při charakterizaci chování modelu GP, ovlivňujícího výběr funkcí z předchozí distribuce. Kovarianční funkce měří párové podobnosti, aby zjistila korelaci mezi funkčními hodnotami. Praktičtí lékaři se mohou přizpůsobit široké škále vzorců dat, od hladkých trendů po složité struktury, protože různé funkce jádra zachycují různé druhy korelací. Výkon modelu může být výrazně ovlivněn výběrem jádra.
Předchozí distribuce
The předchozí distribuce , v Gaussian Processes (GPs), je naše chápání funkcí před pozorováním jakýchkoli dat. Obvykle je popsána kovarianční (kernelovou) funkcí a střední funkcí. Zatímco kovarianční funkce popisuje podobnost nebo korelaci mezi funkčními hodnotami v různých vstupních bodech, střední funkce kóduje naše předchozí očekávání. To je předem používáno praktickými lékaři k vytvoření rozdělení funkcí. U praktických lékařů lze priority vybrat tak, aby představovaly nejistotu dat, integrovaly znalosti domény nebo indikovaly hladkost.
Zadní distribuce
Gaussovy procesy pozdější distribuce ukazuje naše revidované předpoklady o funkcích po pozorování dat. Dává dohromady pravděpodobnost dat dané funkce a předchozí distribuce. Posterior v regresi GP nabízí rozdělení funkcí, které se nejvíce shodují s pozorovanými daty. Tím, že umožňuje pravděpodobnostní předpovědi a kvantifikaci nejistoty, zadní distribuce odráží kompromis mezi předchozími přesvědčeními uloženými v předchozí distribuci a informacemi poskytnutými daty.
Matematický koncept gaussovské regrese procesu (GPR)
Pro regresní úlohy se používá neparametrický, pravděpodobnostní model strojového učení nazývaný Gaussův proces (GP) regrese. Při modelování složitých a nejednoznačných interakcí mezi vstupními a výstupními proměnnými je to účinný nástroj. Předpokládá se, že vícerozměrné Gaussovo rozdělení vytváří datové body v GP regresi a cílem je odvodit toto rozdělení.
náhodné číslo gen java
GP regresní model má následující matematické vyjádření. Předpokládejme x1, X2,…..,Xnjsou vstupní datové body, kde x patří reálným číslům (-2,-1,0,1…), (xi
Předpokládejme y1, a2,……., anjsou výstupní hodnoty, kde yipatří reálnému číslu (yi
GP regresní model předpokládá, že Gaussův proces se střední funkcí (
Potom v sadě testovacích míst x* je rozdělení f dáno vztahem:
Obvykle se funkce jádra používají k definování střední funkce a kovarianční funkce. Pro ilustraci, čtvercové exponenciální jádro, které se často používá, je popsáno jako:
Kde,
k(x_{i}, x_{j}) = Funkce jádra je reprezentována tímto a vypočítává korelaci nebo podobnost mezi dvěma vstupními datovými body, xia xj.sigma^2 = Parametr rozptylu jádra je tento. Určuje měřítko nebo vertikální rozpětí funkce jádra. Reguluje, jak silně jsou datové body korelovány. A vyššísigma^2 poskytuje funkci jádra s větší variabilitou.- exp: Exponenciální funkce je zodpovědná za zvýšení e na mocninu argumentu.
||x_{i} – x_{j}||^2 : Rozdíl mezi vstupními datovými body, xia xj, je druhá mocnina euklidovské vzdálenosti. Měří se geometrická vzdálenost mezi body v prostoru prvků.- l2: Toto je reprezentace měřítka délky jádra nebo charakteristické délky. Reguluje rychlost, s jakou se funkce jádra zhoršuje, když jsou datové body dále od sebe. Nižší l způsobí rychlejší degradaci jádra.
GP regresní model používá Bayesovu inferenci k určení distribuce f, která s největší pravděpodobností vytvořila data daná množinou tréninkových dat (x, y). Aby to bylo možné, je třeba vypočítat zadní rozdělení f dané daty, které je definováno takto:
kde mezní pravděpodobnost dat je p(y|x), předchozí rozdělení f je p(f) a pravděpodobnost dat daným funkcí f je (y|x,f).
Poté, co se naučí zadní rozdělení f, model vypočítá zadní prediktivní rozdělení, aby provedl předpovědi v dalších testovacích bodech x*. Lze jej definovat následovně:
metoda tostring v Javě
Kde,
p(f^*|x*, y, x) = Toto ukazuje, vzhledem k trénovacím datům y a x, podmíněnou pravděpodobnost předpokládaných funkčních hodnot f*v novém vstupním bodě x*Jinak řečeno, je to rozdělení pravděpodobnosti přes všechny potenciální funkční hodnoty na novém vstupním místě x*, podmíněné pozorovanými daty y a jejich odpovídajícími vstupními místy x.int p(f^*|x^*, f)p(f|y,x)df = K určení podmíněné pravděpodobnosti je v této části rovnice použit integrál. Integrál zahrnuje všechny potenciální hodnoty funkce f.p(f^*|x^*, f) = Toto je podmíněné rozdělení pravděpodobnosti očekávaných funkčních hodnot f*v x*, dané funkčními hodnotami f na některých mezilehlých místech.p(f|y,x) = Vzhledem k pozorovaným datům (y) a jejich vstupním umístěním (x) se jedná o podmíněné rozdělení pravděpodobnosti hodnot funkce (f).
Pro úkoly, jako je rozhodování s vědomím nejistoty a aktivní učení, tato distribuce nabízí míru nejistoty předpovědi, což může být užitečné.
Kroky v Gaussově regresi procesu
- Sběr dat : Shromážděte páry vstupně-výstupních dat pro váš regresní problém.
- Vyberte funkci jádra : Vyberte vhodnou kovarianční funkci (kernel), která vyhovuje vašemu problému. Volba jádra ovlivňuje tvar funkcí, které může GPR modelovat.
- Optimalizace parametrů : Odhadněte hyperparametry funkce jádra maximalizací pravděpodobnosti dat. To lze provést pomocí optimalizačních technik, jako je gradientní klesání.
- Předpověď: Díky novému vstupu použijte k předpovědi natrénovaný model GPR. GPR poskytuje jak předpokládaný průměr, tak související nejistotu (rozptyl).
Implementace Gaussovy procesní regrese (GPR)
Krajta 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()> Výstup:

V tomto kódu nejprve vygenerujte několik ukázkových datových bodů s přidaným šumem, poté definujte jádro RBF a vytvořte a Gaussův regresor procesu s tím. Model se trénuje na trénovacích datech a používá se k předpovědím na testovacích datech. Nakonec jsou výsledky vizualizovány pomocí grafu zobrazujícího tréninková data, předpokládaný průměr a 95% interval spolehlivosti.
Implementace Gaussova procesu v Pythonu
Scikit Learn
Krajta 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__)> Pomocí tohoto kódu jsou importovány potřebné knihovny pro Gaussian Process Regression (GPR) v Pythonu; tyto jsou SciPy pro funkce lineární algebry, NumPy pro numerické operace a Matplotlib pro vizualizaci dat. Aby se ujistil, že je kompatibilní s potřebnými balíčky, dodatečně ověří verzi Pythonu a vytiskne ji spolu s verzemi NumPy a scikit-learn (sklearn).
Výběr jádra
Krajta 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_, '
')> Výstup:
[RBF(délka_měřítko=1),
RationalQuadratic(alpha=1, length_scale=1),
ExpSineSquared(délka_měřítko=1, periodicita=10),
DotProduct(sigma_0=1) ** 2,
Mateřská(délka_měřítko=1, nu=1,5)]
kolik je 10 z 60
Kód určuje počet testovacích míst (n) a inicializuje a náhodné semeno . Aby bylo možné zobrazit vybraná jádra, vygeneruje seznam několika funkcí jádra a vytiskne seznam.
Porovnání a vizualizace jádra
Krajta 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, '
')> Výstup:
RBF
gp.kernel_ RBF(length_scale=1,93)
gp.log_marginal_likelihood: -3,444937833462133
-------------------------------------------------- -
Racionální kvadratická

gp.kernel_ RationalQuadratic(alpha=1e+05, length_scale=1,93)
gp.log_marginal_likelihood: -3,4449718909150966
--------------------------------------------------
ExpSineSquared

gp.kernel_ ExpSineSquared(length_scale=0,000524, periodicita=2,31e+04)
gp.log_marginal_likelihood: -3,4449381454930217
--------------------------------------------------
Tečkovaný produkt

gp.kernel_ DotProduct(sigma_0=0,998) ** 2
gp.log_marginal_likelihood: -150204291,56018084
--------------------------------------------------
Mateřský

gp.kernel_ Matern(length_scale=1,99, nu=1,5)
gp.log_marginal_likelihood: -5,131637070524745
--------------------------------------------------
Kód začíná procházením různých funkcí jádra uvedených v seznamu kernel_list. Gaussian Process Regressor (gp) je vytvořen pomocí konkrétního jádra pro každé jádro. Pro Gaussův proces to vytváří kovarianční strukturu. Aby bylo možné posoudit předchozí rozdělení, je vytvořena sada testovacích vstupních bodů nazvaná x_test s hodnotami v rozsahu od -5 do 5. Tato sada bodů je transformována do sloupcového vektoru.
Pomocí metody gp.predict se v každém testovacím bodě určí průměr předchozího rozdělení (mu_prior) a standardní odchylka (sd_prior). Hodnoty směrodatné odchylky jsou požadovány pomocí volby return_std=True. gp.sample_y (x_test, 3) se používá k získání tří funkčních vzorků z předchozí distribuce.
První dílčí graf ukazuje průměr předchozí distribuce se standardní odchylkou reprezentovanou stínovanou oblastí. Vzorky jsou superponovány jako přerušované čáry, zatímco průměr je zobrazen jako plná čára. Existuje podzápletka s názvem Prior. Existuje definovaná sada tréninkových datových bodů (x_train) a cílových hodnot (y_train), které s nimi souvisí. Model Gaussova procesu je přizpůsoben pomocí těchto bodů (gp.fit(x_train, y_train)). Pět datových bodů s odpovídajícími sinusovými hodnotami tvoří tréninková data v tomto kódu.
Po fázi přizpůsobení tréninkových dat postup vypočítá střední hodnotu zadní distribuce (mu_post) a standardní odchylku (sd_post) pro stejné testovací body (x_test). gp.sample_y(x_test, 3) se také používá k vytvoření funkčních vzorků ze zadní distribuce. Druhý dílčí graf překrývá vzorkované funkce jako tečkované čáry a ukazuje průměr zadní distribuce, stínovaný se standardní odchylkou. Modře jsou vyneseny tréninkové datové body. Podzápletka má název Posterior.
Chcete-li vidět předchozí a následující grafy pro aktuální jádro a získat vizuální porozumění chování modelu, zavolejte funkci plt.show() Matplotlib.
Kód zobrazuje podrobnosti o aktuálním jádře, jako je gp.kernel_, který označuje aktuální používané jádro a gp.log_marginal_likelihood (gp.kernel_.theta), který udává logaritmickou mezní pravděpodobnost modelu využívajícího aktuální jádro po každé sadě předchozích a následujících grafů.
numpy sumarizace
Výhody Gaussovy procesní regrese (GPR)
Gaussova procesní regrese (GPR) má řadu výhod v řadě aplikací:
- GPR poskytuje pravděpodobnostní rámec pro regresi, což znamená, že poskytuje nejen bodové odhady, ale také poskytuje odhady nejistoty pro předpovědi.
- Je vysoce flexibilní a dokáže zachytit složité vztahy v datech.
- GPR lze přizpůsobit různým aplikacím, včetně prognózování časových řad, optimalizace a Bayesovské optimalizace.
Výzvy gaussovské regrese procesu (GPR)
- GPR může být výpočetně nákladný při práci s velkými datovými soubory, protože je vyžadována inverze kovarianční matice.
- Volba funkce jádra a jejích hyperparametrů může výrazně ovlivnit výkon modelu.
Dobré příklady aplikací GPR
- Předpověď ceny akcií: GPR lze použít k modelování a predikci cen akcií s přihlédnutím k volatilitě a nejistotě na finančních trzích.
- Počítačové experimenty: GPR je užitečné při optimalizaci složitých simulací modelováním vztahů mezi vstupy a výstupy a identifikací nejvlivnějších parametrů.
- Detekce anomálií: GPR lze použít k detekci anomálií, kde identifikuje neobvyklé vzory v datech časových řad zachycením normálních rozložení dat.
Závěr
Závěrem lze říci, že Gaussova procesní regrese je cenným nástrojem pro analýzu a predikci dat v situacích, kdy je nezbytné pochopit nejistotu v předpovědích. Díky využití pravděpodobnostního modelování a funkcí jádra může GPR poskytovat přesné a interpretovatelné výsledky. Při implementaci GPR v praxi je však klíčové zvážit výpočetní náklady a potřebu odborného vstupu.