Main Content

templateGP

ガウス過程テンプレート

R2023b 以降

説明

t = templateGP は、回帰モデルの学習に適したガウス過程 (GP) テンプレートを返します。テンプレート t を作成した後、学習時にそれを学習器として指定できます。

t = templateGP(Name=Value) では、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、ガウス過程回帰 (GPR) モデルの基底関数やパラメーター推定方法を指定できます。

t をコマンド ウィンドウで表示すると、名前と値の引数を使用して指定したもの以外については、すべてのオプションが空 ([]) として表示されます。学習関数による学習時、空のオプションには既定値が使用されます。

すべて折りたたむ

関数 templateGP を使用して既定のガウス過程テンプレートを作成します。

t = templateGP
t = 
Fit template for regression GP.

                     KernelFunction: []
                   KernelParameters: []
                      BasisFunction: []
                               Beta: []
                              Sigma: []
                          FitMethod: []
                      PredictMethod: []
                          ActiveSet: []
                      ActiveSetSize: []
                    ActiveSetMethod: []
                        Standardize: []
                            Verbose: []
                          CacheSize: []
                            Options: [1x1 struct]
                          Optimizer: []
                   OptimizerOptions: []
           ConstantKernelParameters: []
                      ConstantSigma: []
                    InitialStepSize: []
    InitialSigmaLowerBoundTolerance: []
                            Version: 1
                             Method: 'GP'
                               Type: 'regression'

t はガウス過程学習器のテンプレート オブジェクトです。テンプレート オブジェクトのプロパティは、VersionMethod、および Type を除いてすべて空になります。t を学習関数に渡すと、空のプロパティにはそれぞれの既定値が関数によって埋められます。たとえば、関数directforecastert を学習器として指定すると、ConstantSigma プロパティは false に設定されます。その他の既定値の詳細については、名前と値の引数を参照してください。

GPR モデルの基底関数を linear、当てはめと予測の方法を exact として指定するガウス過程テンプレートを作成します。

t = templateGP(BasisFunction="linear",FitMethod="exact",PredictMethod="exact")
t = 
Fit template for regression GP.

                     KernelFunction: []
                   KernelParameters: []
                      BasisFunction: 'Linear'
                               Beta: []
                              Sigma: []
                          FitMethod: 'Exact'
                      PredictMethod: 'Exact'
                          ActiveSet: []
                      ActiveSetSize: []
                    ActiveSetMethod: []
                        Standardize: []
                            Verbose: []
                          CacheSize: []
                            Options: [1x1 struct]
                          Optimizer: []
                   OptimizerOptions: []
           ConstantKernelParameters: []
                      ConstantSigma: []
                    InitialStepSize: []
    InitialSigmaLowerBoundTolerance: []
                            Version: 1
                             Method: 'GP'
                               Type: 'regression'

t はガウス過程学習器のテンプレート オブジェクトです。オブジェクト表示に、テンプレート オブジェクトの指定したプロパティが表示されます。MethodType については、それぞれ既定で GPregression に指定されます。t を学習関数に渡すと、空のプロパティはそれぞれの既定値に設定されます。

入力引数

すべて折りたたむ

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。

例: templateGP(BasisFunction="linear",Standardize=true) は、線形基底関数を指定し、予測子を標準化するように指定します。

近似

すべて折りたたむ

GPR モデルのパラメーター推定方式。次のいずれかとして指定します。

近似方式説明
"none"推定を行いません。初期パラメーター値を既知のパラメーター値として使用します。
"exact"厳密なガウス過程回帰。この値は n ≤ 2000 の場合の既定値です。ここで、n は観測値の数です。
"sd"データ点サブセット近似。この値は n > 2000 の場合の既定値です。ここで、n は観測値の数です。"sd" はスパース法です。
"sr"回帰変数サブセット近似。"sr" はスパース法です。
"fic"完全独立条件近似。"fic" はスパース法です。

例: FitMethod="fic"

GPR モデルの明示的な基底関数。"constant""none""linear""pureQuadratic"、または関数ハンドルとして指定します。観測値の数が n の場合、基底関数は H*β という項をモデルに追加します。ここで、H は基底行列、β は p 行 1 列の基底係数のベクトルです。

明示的な基底関数基底行列
"none"空行列
"constant"

H=1

H は n 行 1 列の 1 のベクトルで、n は観測値の数です。

"linear"

H=[1,X]

X はカテゴリカル変数のダミー変数が作成された後の展開された予測子データです。ダミー変数の作成に関する詳細については、CategoricalPredictors を参照してください。

"pureQuadratic"

H=[1,X,X2],

ここで

X2=[x112x122x1d2x212x222x2d2xn12xn22xnd2].

この基底オプションでは、カテゴリカル予測子をもつ X はサポートされません。

関数ハンドル

fitrgp で次のように呼び出す関数ハンドル hfcn

H=hfcn(X),

ここで、X は n 行 d 列の予測子の行列、d はカテゴリカル変数のダミー変数が作成された後の予測子の数、H は n 行 p 列の基底関数の行列です。

例: BasisFunction="pureQuadratic"

データ型: char | string | function_handle

明示的な基底関数の係数の初期値。p 行 1 列のベクトルとして指定します。p は、基底行列 "H" の列数です。

基底行列は、指定された基底関数によって決まります。詳細については、BasisFunction を参照してください。

FitMethod"none" の場合のみ、学習関数は係数の初期値を既知の係数値として使用します。

データ型: double

ガウス過程モデルのノイズ標準偏差の初期値。正のスカラー値として指定します。

学習関数は、SigmaLowerBound および exp(η) の合計としてノイズ標準偏差をパラメーター化します。ここで η は制約なしの値です。したがって、関数が η を有限値に初期化できるように、Sigma は小さい許容誤差だけ SigmaLowerBound よりも大きい必要があります。そうでない場合、関数は Sigma を互換性のある値にリセットします。

許容誤差は ConstantSigmafalse (既定) の場合 1e-3 です。それ以外の場合は 1e-6 です。許容誤差が応答変数のスケールに対して十分小さくない場合、この許容誤差の値が応答変数に対して小さいと見なせるように、応答変数を拡大できます。

例: Sigma=2

データ型: double

ガウス過程モデルのノイズ標準偏差に対する定数値の Sigma。数値または logical の 0 (false) または 1 (true) として指定します。ConstantSigmatrue の場合、学習関数は Sigma の値を最適化せず、計算全体で初期値を使用します。

例: ConstantSigma=true

データ型: logical

ノイズ標準偏差 (Sigma) の下限。正のスカラー値として指定します。

Sigma は小さい許容誤差だけ SigmaLowerBound よりも大きい必要があります。

例: SigmaLowerBound=0.02

データ型: double

データを標準化するためのインジケーター。数値または logical の 0 (false) または 1 (true) として指定します。

Standardize=1 を設定すると、予測子データの各列が列の平均と標準偏差でセンタリングおよびスケーリングされます。カテゴリカル予測子について生成されたダミー変数の列に格納されているデータは標準化されません。

例: Standardize=1

例: Standardize=true

データ型: logical

回帰変数サブセット ("sr") および完全独立条件 ("fic") の近似法の正則化標準偏差。正のスカラー値として指定します。詳細については、FitMethod を参照してください。

例: Regularization=0.2

データ型: double

パラメーター推定の対数尤度と勾配を計算する方式。"qr" または "v" として指定します。この引数は、FitMethod"sr" または "fic" の場合に有効です。

  • "qr" — QR 分解に基づくアプローチを使用します。精度が高くなります。

  • "v" — V 方式に基づくアプローチを使用します。計算が速くなります。

これらのアプローチの詳細については、Foster らの[7]を参照してください。

例: ComputationMethod="v"

カーネル (共分散) 関数

すべて折りたたむ

共分散関数の形式。次のいずれかを指定します。

説明
"exponential"指数カーネル
"squaredexponential"二乗指数カーネル
"matern32"パラメーターが 3/2 の Matern カーネル
"matern52"パラメーターが 5/2 の Matern カーネル
"rationalquadratic"有理二次カーネル
"ardexponential"予測子ごとに長さスケールが異なる指数カーネル
"ardsquaredexponential"予測子ごとに長さスケールが異なる二乗指数カーネル
"ardmatern32"パラメーターが 3/2 で予測子ごとに長さスケールが異なる Matern カーネル
"ardmatern52"パラメーターが 5/2 で予測子ごとに長さスケールが異なる Matern カーネル
"ardrationalquadratic"予測子ごとに長さスケールが異なる有理二次カーネル
関数ハンドル次の形式の関数ハンドル。
Kmn = kfcn(Xm,Xn,theta)
ここで、Xm は m 行 d 列の行列、Xn は n 行 d 列の行列、KmnKmn(i,j) が Xm(i,:) と Xn(j,:) の間のカーネル積である m 行 n 列のカーネル積の行列です。d はカテゴリカル変数のダミー変数が作成された後の予測子変数の数です。ダミー変数の作成の詳細については、CategoricalPredictors を参照してください。
thetakfcn についての制約がない r 行 1 列のパラメーター ベクトルです。

カーネル関数についての詳細は、カーネル (共分散) 関数のオプションを参照してください。

例: KernelFunction="matern32"

データ型: char | string | function_handle

カーネル パラメーターの初期値。数値ベクトルとして指定します。ベクトルのサイズと値は、名前と値の引数 KernelFunction で指定する共分散間数の形式によって異なります。

KernelFunction ValueKernelParameters Value
"exponential""squaredexponential""matern32"、または "matern52"2 行 1 列のベクトル phiphi(1) には長さスケールを、phi(2) には信号標準偏差を格納します。
長さスケール パラメーターの既定の初期値は予測子の標準偏差の平均です。信号標準偏差は応答の標準偏差を 2 の平方根で除算した値です。つまり、次のようになります。
phi = [mean(std(X));std(y)/sqrt(2)]
"rationalquadratic"3 行 1 列のベクトル phiphi(1) には長さスケールを、phi(2) にはスケール混合パラメーターを、phi(3) には信号標準偏差を格納します。
長さスケール パラメーターの既定の初期値は予測子の標準偏差の平均です。信号標準偏差は応答の標準偏差を 2 の平方根で除算した値です。スケール混合パラメーターの既定の初期値は 1 です。つまり、次のようになります。
phi = [mean(std(X));1;std(y)/sqrt(2)]
"ardexponential""ardsquaredexponential""ardmatern32"、または "ardmatern52"(d+1) 行 1 列のベクトル phiphi(i) には予測子 i の長さスケールを、phi(d+1) には信号標準偏差を格納します。d は、カテゴリカル変数用にダミー変数が作成された後の予測子変数の数です。ダミー変数の作成に関する詳細については、CategoricalPredictors を参照してください。
長さスケール パラメーターの既定の初期値は予測子の標準偏差です。信号標準偏差は応答の標準偏差を 2 の平方根で除算した値です。つまり、次のようになります。
phi = [std(X)';std(y)/sqrt(2)]
"ardrationalquadratic"(d+2) 行 1 列のベクトル phiphi(i) には予測子 i の長さスケール、phi(d+1) にはスケール混合パラメーターを、phi(d+2) には信号標準偏差を格納します。d は、カテゴリカル変数用にダミー変数が作成された後の予測子変数の数です。ダミー変数の作成の詳細については、CategoricalPredictors を参照してください。
長さスケール パラメーターの既定の初期値は予測子の標準偏差です。信号標準偏差は応答の標準偏差を 2 の平方根で除算した値です。スケール混合パラメーターの既定の初期値は 1 です。つまり、次のようになります。
phi = [std(X)';1;std(y)/sqrt(2)]
関数ハンドルカスタム カーネル関数 kfcn の非制約パラメーター ベクトル phi の初期値の r 行 1 列のベクトル。
KernelFunction が関数ハンドルの場合、カーネル パラメーターの初期値を指定しなければなりません。

カーネル関数についての詳細は、カーネル (共分散) 関数のオプションを参照してください。

例: KernelParameters=phi

データ型: double | single

組み込みカーネル関数を評価するために点間の距離を計算する方式。"fast" または "accurate" として指定します。"fast" を指定すると、学習関数は (xy)2x2+y22*x*y として計算します。"accurate" を指定すると、学習関数は (xy)2 を計算します。

例: DistanceMethod="accurate"

アクティブ セットの選択

すべて折りたたむ

アクティブ セットのサイズ。整数 m (1 ≤ m ≤ n) として指定します。ここで、n は観測値の数です。この引数は、FitMethod"sd""sr"、または "fic" の場合に有効です。

既定値は、FitMethod"sr" または "fic" の場合は min(1000,n)、それ以外の場合は min(2000,n) です。

例: ActiveSetSize=100

データ型: double

アクティブ セット選択法。次の値のいずれかとして指定します。

説明
"random"無作為選択
"sgma"スパース グリーディ行列近似
"entropy"微分エントロピーに基づく選択
"likelihood"回帰変数サブセットの対数尤度に基づく選択

("random" を除く) すべてのアクティブ セット選択法で、格納場所として n 行 m 列の行列が必要です。ここで、m はアクティブ セットのサイズ、n は観測値の数です。

例: ActiveSetMethod="entropy"

アクティブ セットを選択するためのグリーディな包含におけるランダム探索セットのサイズ。整数値として指定します。

例: RandomSearchSetSize=30

データ型: double

アクティブ セットの選択を終了させるための相対許容誤差。正のスカラーとして指定します。

例: ToleranceActiveset=0.0002

データ型: double

ActiveSetMethod"random" ではない場合の、インターリーブ方式によるアクティブ セット選択とパラメーター推定における反復の数。整数値として指定します。

例: NumActiveSetRepeats=5

データ型: double

予測

すべて折りたたむ

与えられたパラメーターに対してガウス過程モデルで予測を行うために使用する方式。次の値のいずれかとして指定します。

説明
"exact"厳密ガウス過程回帰法。この値は n ≤ 10,000 の場合の既定値です。
"bcd"ブロック座標降下 (BCD)。この値は n > 10,000 の場合の既定値です。
"sd"データ点サブセット近似
"sr"回帰変数サブセット近似
"fic"完全独立条件近似

例: PredictMethod="bcd"

ブロック座標降下法 ("bcd") のブロック サイズ。1 から n までの範囲の整数として指定します。ここで、n は観測値の数です。

例: BlockSizeBCD=1500

データ型: double

ブロック座標降下法 ("bcd") のグリーディ選択の数。1 から BlockSizeBCD までの範囲の整数として指定します。

例: NumGreedyBCD=150

データ型: double

ブロック座標降下法 ("bcd") の反復を終了させるための勾配ノルムの相対許容誤差。正のスカラーとして指定します。

例: ToleranceBCD=0.002

データ型: double

ブロック座標降下法 ("bcd") の反復を終了させるためのステップ サイズの絶対許容誤差。正のスカラーとして指定します。

例: StepToleranceBCD=0.002

データ型: double

ブロック座標降下法 ("bcd") の最大反復数。正の整数として指定します。

例: IterationLimitBCD=10000

データ型: double

最適化

すべて折りたたむ

パラメーター推定に使用するオプティマイザー。次の表にある値のいずれかを指定します。

説明
"quasinewton"ヘッシアンに対する、密で対称的なランク 1 に基づく準ニュートン近似
"lbfgs"ヘッシアンに対する、LBFGS に基づく準ニュートン近似
"fminsearch"Lagarias らのシンプレックス探索法 [5] を使用する、制約がない非線形最適化
"fminunc"制約がない非線形最適化 (Optimization Toolbox™ のライセンスが必要)
"fmincon"制約がある非線形最適化 (Optimization Toolbox のライセンスが必要)

オプティマイザーの詳細については、アルゴリズムを参照してください。

例: Optimizer="fmincon"

名前と値の引数 Optimizer で設定されるオプティマイザーのオプション。optimsetstatset("fitrgp")、または optimoptions によって作成された構造体またはオブジェクトとして指定します。

オプティマイザーオプティマイザーのオプションを作成する関数
"fminsearch"optimset (構造体)
"quasinewton" または "lbfgs"statset("fitrgp") (構造体)
"fminunc" または "fmincon"optimoptions (オブジェクト)

既定のオプションは、指定されたオプティマイザーによって異なります。

例: OptimizerOptions=opt

初期ステップ サイズ。正の実数スカラーまたは "auto" として指定します。

InitialStepSize は、オプティマイザーが "quasinewton" または "lbfgs" である場合の最初の最適化ステップにおける近似値の絶対値の最大値です。初期ステップ サイズにより、最適化におけるヘッシアンの初期近似を決定できます。

既定では、学習関数はヘッシアンの初期近似の決定に初期ステップ サイズを使用しません。初期ステップ サイズを使用するには、名前と値の引数 InitialStepSize の値を設定するか、InitialStepSize="auto" を指定して値を自動的に決定させます。"auto" の詳細については、アルゴリズムを参照してください。

例: InitialStepSize="auto"

その他

すべて折りたたむ

詳細レベル。0 または 1 として指定します。

  • 0 — 学習関数は、アクティブ セットの選択とブロック座標降下に関連する診断メッセージを表示しませんが、OptimizerOptionsDisplay の値によってはパラメーター推定に関連するメッセージを表示します。

  • 1 ― 学習関数は、パラメーター推定、アクティブ セットの選択、およびブロック座標降下に関連する診断メッセージを繰り返し表示します。

例: Verbose=1

メガバイト (MB) 単位のキャッシュ サイズ。正のスカラーとして指定します。キャッシュ サイズは、当てはめとアクティブ セット選択に必要とされるメモリに加えて使用可能な追加のメモリです。学習関数は次の目的に CacheSize を使用します。

  • パラメーター推定時に点間の距離をキャッシュするかどうかの決定。

  • ブロック座標降下法および予測実施における行列ベクトル積の計算方法の決定。

例: CacheSize=2000

データ型: double

出力引数

すべて折りたたむ

回帰モデルの学習に適したガウス過程学習器テンプレート。テンプレート オブジェクトとして返されます。学習関数 (directforecaster など) による学習時、空のオプションには既定値が使用されます。

詳細

すべて折りたたむ

アクティブ セットの選択とパラメーターの推定

データ サブセット近似法、回帰変数サブセット近似法、または完全独立条件近似法の場合 (FitMethod"sd""sr"、または "fic" に等しい場合)、一連の反復でアクティブ セットが選択されてパラメーター推定が計算されます。

1 回目の反復では、ベクトル η0 = [β000] の初期パラメーター値を使用して、アクティブ セット A1 を選択します。η0 (初期値) と A1 を使用して GPR の周辺対数尤度または近似を最大化することにより、新しいパラメーター推定 η1 を計算します。次に、η1 と A1 を使用して、新しい対数尤度 L1 を計算します。

2 回目の反復では、η1 のパラメーター値を使用して、アクティブ セット A2 を選択します。次に、η1 (初期値) と A2 を使用して、GPR の周辺対数尤度または近似を最大化し、新しいパラメーター値 η2 を推定します。さらに、η2 と A2 を使用して、新しい対数尤度値 L2 を計算します。

次の表は、各反復とその計算をまとめたものです。

反復数アクティブ セットパラメーター ベクトル対数尤度
1A1η1L1
2A2η2L2
3A3η3L3

指定した回数の繰り返しについて、同様に反復処理が行われます。アクティブ セット選択の反復回数は、名前と値の引数 NumActiveSetRepeats を使用して指定できます。

アルゴリズム

  • GPR モデルの当てはめでは、次のモデル パラメーターをデータから推定します。

    名前と値の引数 KernelParameters の値は、信号標準偏差 σf と特性長スケール σl の初期値から構成されるベクトルです。これらの値を使用してカーネル パラメーターが決定されます。同様に、名前と値の引数 Sigma にはノイズ標準偏差 σ の初期値が格納されます。

  • 最適化時に、ノイズ標準偏差とカーネル パラメーターの初期値を使用して、制約がない初期パラメーター値のベクトル η0 が作成されます。

  • 名前と値の引数 Beta によって指定された明示的な基底係数 βθσ2 の推定値から解析的に決定されます。したがって、数値最適化を初期化するときに β はベクトル η0 に現れません。

    メモ

    GPR モデルのパラメーター推定を指定しなかった場合、名前と値の引数 Beta の値と他の初期パラメーター値が既知の GPR パラメーター値として使用されます (Beta を参照)。他のすべてのケースでは、Beta の値は目的関数から解析的に最適化されます。

  • 準ニュートン オプティマイザーでは、密で対称的なランク 1 に基づく (SR1) 準ニュートン近似による信頼領域法をヘッシアンに対して使用します。LBFGS オプティマイザーでは、メモリ制限 Broyden-Fletcher-Goldfarb-Shanno (LBFGS) 準ニュートン近似による標準的な直線探索法をヘッシアンに対して使用します。Nocedal および Wright [6] を参照してください。

  • 名前と値の引数 InitialStepSize"auto" に設定した場合、s0=0.5η0+0.1 を使用して初期ステップ サイズ s0 が決定されます。

    s0 は初期ステップ ベクトル、η0 は制約がない初期パラメーター値のベクトルです。

  • 最適化時に、初期ステップ サイズ s0 が次のように使用されます。

    Optimizer="quasinewton" と初期ステップ サイズを指定した場合、ヘッシアンの初期近似は g0s0I になります。

    Optimizer="lbfgs" と初期ステップ サイズを指定した場合、逆ヘッシアンの初期近似は s0g0I になります。

    g0 は初期勾配ベクトル、I は単位行列です。

参照

[1] Nash, W.J., T. L. Sellers, S. R. Talbot, A. J. Cawthorn, and W. B. Ford. "The Population Biology of Abalone (Haliotis species) in Tasmania. I. Blacklip Abalone (H. rubra) from the North Coast and Islands of Bass Strait." Sea Fisheries Division, Technical Report No. 48, 1994.

[2] Waugh, S. "Extending and Benchmarking Cascade-Correlation: Extensions to the Cascade-Correlation Architecture and Benchmarking of Feed-forward Supervised Artificial Neural Networks." University of Tasmania Department of Computer Science thesis, 1995.

[3] Lichman, M. UCI Machine Learning Repository, Irvine, CA: University of California, School of Information and Computer Science, 2013. http://archive.ics.uci.edu/ml.

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

[5] Lagarias, J. C., J. A. Reeds, M. H. Wright, and P. E. Wright. "Convergence Properties of the Nelder-Mead Simplex Method in Low Dimensions." SIAM Journal of Optimization. vol. 9, no. 1, January 1998, pp. 112–147.

[6] Nocedal, J. and S. J. Wright. Numerical Optimization, Second Edition. Springer Series in Operations Research, Springer Verlag, 2006.

[7] Foster, L., et. al. "Stable and Efficient Gaussian Process Calculations", Journal of Machine Learning Research. vol. 10, no. 31, April 2009, pp. 857–882.

バージョン履歴

R2023b で導入