Main Content

ガウス過程回帰モデル

ガウス過程回帰 (GPR) モデルは、ノンパラメトリックなカーネルベースの確率モデルです。GPR モデルは、関数 fitrgp を使用して学習させることができます。

未知の分布から抽出された {(xi,yi);i=1,2,...,n} という学習セットがあるとします。ここで、xid および yi です。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) をもつゼロ平均 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 について潜在的変数 f(xi) を導入したので、GPR モデルはノンパラメトリックになります。ベクトル形式では、このモデルは次と等価です。

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 モデルをノイズのないデータ セットとノイズを含むデータ セットに当てはめます。この例では、2 つの GPR 近似モデルの予測応答と予測区間を比較します。

関数 g(x)=xsin(x) から 2 つの観測データ セットを生成します。

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 のサイズを変更して、1 つの Figure に 2 つのプロットを表示します。

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 近似の予測応答は観測値と交差します。予測応答の標準偏差はほぼゼロです。したがって、予測区間は非常に狭くなります。観測値にノイズが含まれる場合、予測応答は観測値と交差せず、予測間隔が広くなります。

参照

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

参考

| |

関連するトピック