Main Content

가우스 과정 회귀 모델

가우스 과정 회귀(GPR) 모델은 비모수 커널 기반의 확률적 모델입니다. fitrgp 함수를 사용하여 GPR 모델을 훈련시킬 수 있습니다.

훈련 세트 {(xi,yi);i=1,2,...,n}을 살펴보겠습니다. 여기서 xidyi이며, 알 수 없는 분포에서 추출되었습니다. GPR 모델은 새 입력 벡터 xnew 및 훈련 데이터가 주어진 경우 응답 변수 ynew의 값을 예측하는 문제를 해결합니다. 선형 회귀 모델의 형식은 다음과 같습니다.

y=xTβ+ε,

여기서 εN(0,σ2)입니다. 오차 분산 σ2 및 계수 β는 데이터에서 추정됩니다. GPR 모델은 가우스 과정(GP)에서 잠재 변수 f(xi),i=1,2,...,n 및 명시적 기저 함수 h를 추가하여 응답 변수를 설명합니다. 잠재 변수의 공분산 함수는 응답 변수의 매끄러움 정도를 포착하고 기저 함수는 입력값 x를 p차원 특징 공간에 투영합니다.

GP는 확률 변수들의 집합으로, 이 집합에 속한 임의의 유한 개의 확률 변수들은 결합 가우스 분포를 가집니다. {f(x),xd}가 GP이고 n개의 관측값 x1,x2,...,xn이 주어진 경우 확률 변수 f(x1),f(x2),...,f(xn)의 결합 분포는 가우스 분포입니다. GP는 평균 함수 m(x) 및 공분산 함수 k(x,x)에 의해 정의됩니다. 즉, {f(x),xd}가 가우스 과정이면 E(f(x))=m(x)Cov[f(x),f(x)]=E[{f(x)m(x)}{f(x)m(x)}]=k(x,x).입니다.

이제 다음 모델을 살펴보겠습니다.

h(x)Tβ+f(x),

여기서 f(x)~GP(0,k(x,x))이며, 즉 f(x)는 공분산 함수 k(x,x)을 갖는 평균이 0인 GP에서 도출됩니다. h(x)는 Rd의 원래 특징 벡터 x를 Rp의 새 특징 벡터 h(x)로 변환하는 기저 함수 집합입니다. β는 기저 함수 계수로 구성된 p×1 벡터입니다. 이 모델은 GPR 모델을 나타냅니다. 응답 변수 y의 일개 사례는 다음과 같이 모델링할 수 있습니다.

P(yi|f(xi),xi) ~N(yi|h(xi)Tβ+f(xi),σ2)

따라서, GPR 모델은 확률적 모델입니다. 여기에는 각 관측값 xi마다 GPR 모델을 비모수적으로 만드는 잠재 변수 f(xi)가 추가되어 있습니다. 벡터 형식에서 이 모델은 다음과 동일합니다.

P(y|f,X)~N(y|Hβ+f,σ2I),

여기서는 다음이 성립합니다.

X=(x1Tx2TxnT),y=(y1y2yn),H=(h(x1T)h(x2T)h(xnT)),f=(f(x1)f(x2)f(xn)).

GPR 모델에서 잠재 변수 f(x1),f(x2),...,f(xn)의 결합 분포는 다음과 같습니다.

P(f|X)~N(f|0,K(X,X)),

이는 선형 회귀 모델에 가까우며, 여기서 K(X,X)는 다음과 같이 표시됩니다.

K(X,X)=(k(x1,x1)k(x1,x2)k(x1,xn)k(x2,x1)k(x2,x2)k(x2,xn)k(xn,x1)k(xn,x2)k(xn,xn)).

공분산 함수 k(x,x)은 일반적으로 커널 모수 또는 하이퍼파라미터 집합 θ로 모수화됩니다. 많은 경우, k(x,x)θ에 대한 종속성을 명시적으로 나타내기 위해 k(x,x|θ)로 표기됩니다.

fitrgp는 GPR 모델을 훈련시키는 동안 데이터에서 커널 함수의 기저 함수 계수 β, 잡음 분산 σ2, 하이퍼파라미터 θ를 추정합니다. 기저 함수, 커널 (공분산) 함수, 모수의 초기값을 지정할 수 있습니다.

GPR 모델이 확률적이므로 훈련된 모델을 사용하여 예측 구간을 계산할 수 있습니다(predictresubPredict 참조).

또한 훈련된 GPR 모델을 사용하여 회귀 오차를 계산할 수도 있습니다(lossresubLoss 참조).

GPR 모델의 예측 구간 비교하기

이 예제에서는 잡음이 없는 데이터 세트와 잡음이 있는 데이터 세트에 GPR 모델을 피팅합니다. 그런 다음 두 개의 피팅된 GPR 모델의 예측된 응답과 예측 구간을 비교합니다.

함수 g(x)=xsin(x)에서 두 개의 관측값 데이터 세트를 생성합니다.

rng('default') % For reproducibility
x_observed = linspace(0,10,21)';
y_observed1 = x_observed.*sin(x_observed);
y_observed2 = y_observed1 + 0.5*randn(size(x_observed));

y_observed1의 값에는 잡음이 없고 y_observed2의 값에는 얼마간의 랜덤 잡음이 있습니다.

GPR 모델을 관측된 데이터 세트에 피팅합니다.

gprMdl1 = fitrgp(x_observed,y_observed1);
gprMdl2 = fitrgp(x_observed,y_observed2);

피팅된 모델을 사용하여 예측된 응답과 95% 예측 구간을 계산합니다.

x = linspace(0,10)';
[ypred1,~,yint1] = predict(gprMdl1,x);
[ypred2,~,yint2] = predict(gprMdl2,x);

Figure의 크기를 조정하여 하나의 Figure에 두 개의 플롯을 표시합니다.

fig = figure;
fig.Position(3) = fig.Position(3)*2;

1×2 타일 형식 차트 레이아웃을 만듭니다.

tiledlayout(1,2,'TileSpacing','compact')

각 타일에 관측된 데이터 점들의 산점도 플롯과 xsin(x)의 함수 플롯을 그립니다. 그런 다음 GP 예측된 응답의 플롯과 예측 구간의 패치를 추가합니다.

nexttile
hold on
scatter(x_observed,y_observed1,'r') % Observed data points
fplot(@(x) x.*sin(x),[0,10],'--r')  % Function plot of x*sin(x)
plot(x,ypred1,'g')                  % GPR predictions
patch([x;flipud(x)],[yint1(:,1);flipud(yint1(:,2))],'k','FaceAlpha',0.1); % Prediction intervals
hold off
title('GPR Fit of Noise-Free Observations')
legend({'Noise-free observations','g(x) = x*sin(x)','GPR predictions','95% prediction intervals'},'Location','best')

nexttile
hold on
scatter(x_observed,y_observed2,'xr') % Observed data points
fplot(@(x) x.*sin(x),[0,10],'--r')   % Function plot of x*sin(x)
plot(x,ypred2,'g')                   % GPR predictions
patch([x;flipud(x)],[yint2(:,1);flipud(yint2(:,2))],'k','FaceAlpha',0.1); % Prediction intervals
hold off
title('GPR Fit of Noisy Observations')
legend({'Noisy observations','g(x) = x*sin(x)','GPR predictions','95% prediction intervals'},'Location','best')

Figure contains 2 axes objects. Axes object 1 with title GPR Fit of Noise-Free Observations contains 4 objects of type scatter, functionline, line, patch. These objects represent Noise-free observations, g(x) = x*sin(x), GPR predictions, 95% prediction intervals. Axes object 2 with title GPR Fit of Noisy Observations contains 4 objects of type scatter, functionline, line, patch. These objects represent Noisy observations, g(x) = x*sin(x), GPR predictions, 95% prediction intervals.

관측값에 잡음이 없는 경우 GPR 피팅의 예측된 응답이 관측값을 지납니다. 예측된 응답 변수의 표준편차는 거의 0입니다. 따라서 예측 구간이 매우 좁습니다. 관측값에 잡음이 포함된 경우에는 예측된 응답이 관측값을 지나지 않으며 예측 구간이 넓어집니다.

참고 문헌

[1] Rasmussen, C. E. and C. K. I. Williams. Gaussian Processes for Machine Learning. MIT Press. Cambridge, Massachusetts, 2006.

참고 항목

| |

관련 항목