Main Content

RegressionPartitionedGP

交差検証ガウス過程回帰 (GPR) モデル

R2022b 以降

    説明

    RegressionPartitionedGP は、交差検証分割で学習させたガウス過程回帰モデルのセットです。"kfold" 関数の kfoldPredictkfoldLosskfoldfun を 1 つ以上使用して、交差検証回帰の品質を評価します。

    すべての kfold オブジェクト関数では、学習分割 (分割内) 観測値で学習させたモデルを使用して検証分割 (分割外) 観測値に対する応答を予測します。たとえば、データを 5 つに分割して交差検証を行うとします。ほぼ等しいサイズの 5 つのグループに各観測値が無作為に割り当てられます。"学習分割" にはグループのうち 4 つ (データの約 4/5) が含まれ、"検証分割" には他のグループ (データの約 1/5) が含まれます。この場合、交差検証は次のように処理されます。

    1. (CVMdl.Trained{1} に格納されている) 1 番目のモデルの学習には最後の 4 つのグループの観測値が使用され、1 番目のグループの観測値は検証用に確保されます。

    2. (CVMdl.Trained{2} に格納されている) 2 番目のモデルの学習には、1 番目のグループと最後の 3 つのグループの観測値が使用されます。2 番目のグループの観測値は、検証用に予約されます。

    3. 3 番目、4 番目および 5 番目のモデルに対しても同様に続けられます。

    kfoldPredict を使用して検証する場合、i 番目のモデルを使用してグループ i の観測値について予測が計算されます。つまり、それぞれの観測値に対する応答は、その観測値を使用せずに学習させたモデルによって推定されます。

    作成

    RegressionPartitionedGP オブジェクトは 2 つの方法で作成できます。

    • オブジェクト関数 crossval を使用して、GPR モデル オブジェクト RegressionGP から交差検証済みモデルを作成する。

    • 関数 fitrgp を使用し、名前と値の引数 CrossValCVPartitionHoldoutKFoldLeaveout のいずれかを指定して、交差検証済みモデルを作成する。

    最初に GPR モデルの完全なモデルと交差検証済みモデルのどちらに学習させるかに関係なく、fitrgp の呼び出しで ActiveSet の値を指定することはできません。

    プロパティ

    すべて展開する

    交差検証のプロパティ

    この プロパティ は読み取り専用です。

    交差検証済みモデルの名前。'GP' として指定されます。

    データ型: char

    この プロパティ は読み取り専用です。

    交差検証された分割の数。正の整数で指定します。

    データ型: double

    この プロパティ は読み取り専用です。

    交差検証パラメーター値。EnsembleParams オブジェクトとして指定します。パラメーター値は、GPR モデルの交差検証に使用した名前と値の引数の値に対応します。推定されたパラメーターは ModelParameters に含まれません。

    ドット表記を使用して ModelParameters のプロパティにアクセスできます。

    この プロパティ は読み取り専用です。

    データを交差検証分割に分割する方法を含むデータ分割。cvpartition モデルとして指定します。

    この プロパティ は読み取り専用です。

    交差検証分割で学習させたコンパクトなモデル。CompactRegressionGP モデル オブジェクトの cell 配列として指定されます。Trained には k 個のセルがあります。k は分割数です。

    データ型: cell

    他の回帰のプロパティ

    この プロパティ は読み取り専用です。

    カテゴリカル予測子のインデックス。正の整数のベクトルとして指定します。CategoricalPredictors には、対応する予測子がカテゴリカルであることを示すインデックス値が格納されます。インデックス値の範囲は 1 ~ p です。p はモデルの学習に使用した予測子の数です。どの予測子もカテゴリカルではない場合、このプロパティは空 ([]) になります。

    データ型: double

    この プロパティ は読み取り専用です。

    X および Y に格納されている学習データ内の観測値の個数。数値スカラーを指定します。

    データ型: double

    この プロパティ は読み取り専用です。

    予測子変数の名前。文字ベクトルの cell 配列を指定します。PredictorNames の要素の順序は、予測子名が学習データに現れる順序に対応します。

    データ型: cell

    この プロパティ は読み取り専用です。

    応答変数名。文字ベクトルを指定します。

    データ型: char

    応答変換関数。'none' または関数ハンドルとして指定します。一般に、ResponseTransform は生の応答値を変換する方法を表します。

    GPR モデル オブジェクトの場合、ResponseTransform は既定で 'none' です。ResponseTransform の値に関係なく、予測を行うときに応答変換は使用されません。

    データ型: char | function_handle

    この プロパティ は読み取り専用です。

    観測値の重み。n 行 1 列の数値ベクトルとして指定します。ここで、n は観測値の数 (NumObservations) です。観測値の重みは、W の要素の合計が 1 になるように正規化されます。

    GPR モデル オブジェクトの場合、モデルの学習や予測を行うときに観測値の重みは無視されます。

    データ型: double

    この プロパティ は読み取り専用です。

    モデルの交差検証に使用された予測子。数値行列または table として指定されます。

    X の各行は 1 つの観測値に対応し、各列は 1 つの変数に対応します。

    データ型: single | double | table

    この プロパティ は読み取り専用です。

    モデルの交差検証に使用された応答。数値ベクトルとして指定されます。

    Y の各行は、X の対応する行の観測された応答を表します。

    データ型: single | double

    オブジェクト関数

    kfoldLoss交差検証された分割済みの回帰モデルの損失
    kfoldPredict交差検証済み回帰モデル内の観測値に対する応答の予測
    kfoldfun回帰での関数の交差検証

    すべて折りたたむ

    ガウス過程回帰 (GPR) モデルの交差検証平均二乗誤差を計算します。予測応答値を実際の応答値と比較します。

    モデル y=1+0.05x+sin(x)/x+0.2ϵ から 1000 個の観測値をシミュレートします。ここで、次のようになります。

    • x は、-10 ~ 10 の等間隔の値の 1000 行 1 列のベクトルです。

    • ϵ は、平均が 0、標準偏差が 0.2 のランダムな正規誤差の 1000 行 1 列のベクトルです。

    rng("default"); % For reproducibility
    n = 1000;
    x = linspace(-10,10,n)';
    y = 1 + 0.05*x + sin(x)./x + 0.2*randn(n,1);

    5 分割交差検証 GPR モデルを作成します。線形基底関数を使用し、モデル パラメーターの推定には厳密近似法、予測には厳密法を使用します。

    cvMdl = fitrgp(x,y,Basis="linear", ...
          FitMethod="exact",PredictMethod="exact", ...
          KFold=5);

    cvMdl は、学習済みの 5 つの CompactRegressionGP モデル オブジェクト (cvMdl.Trained) を含む RegressionPartitionedGP オブジェクトです。5 つの GPR モデルのそれぞれに x の観測値の約 4/5 を使用して学習させてあります。

    平均二乗誤差の平均を計算します。

    kfoldLoss(cvMdl)
    ans = 0.0401
    

    交差検証済みモデルを使用して応答値を予測します。予測された応答値はホールドアウト (検証) 観測値に対する予測です。つまり、ソフトウェアでは、対応する観測値を使用せずに学習させたモデルを使用して各予測値を取得します。

    ypred = kfoldPredict(cvMdl);

    交差検証済みモデルの実際の応答値と予測応答値をプロットします。

    plot(x,y,".");
    hold on
    plot(x,ypred,".");
    xlabel("x")
    ylabel("y")
    title("Cross-Validation Predictions")
    legend(["True","Predicted"])
    hold off

    Figure contains an axes object. The axes object with title Cross-Validation Predictions, xlabel x, ylabel y contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent True, Predicted.

    5 つの CompactRegressionGP モデルはおおむね一致しているように見えますが、予測子のデータ範囲の端点 (–10 と 10) の近くで予測の一部に相違が見られます。

    この交差検証済みモデルを新しいデータの予測にそのまま使用することはできません。新しいデータ セットの応答値を予測する場合は、新しい GPR モデルに x のすべてのデータを使用して学習させてから、オブジェクト関数 predict を使用できます。たとえば、-10 ~ 10 のそれぞれの偶数の整数について応答値を予測します。

    mdl = fitrgp(x,y,Basis="linear", ...
        FitMethod="exact",PredictMethod="exact");
    xnew = (-10:2:10)';
    prednew = predict(mdl,xnew)
    prednew = 11×1
    
        0.5473
        0.7012
        0.6395
        0.5945
        1.3450
        2.0073
        1.5643
        0.9842
        1.2214
        1.4962
          ⋮
    
    

    代わりに、交差検証済みモデルの Trained プロパティで個々のコンパクトなモデルを使用し、予測を (平均化などで) 組み合わせることもできます。たとえば、-10 ~ 10 のそれぞれの偶数の整数について応答値の平均を予測します。

    preds = zeros(length(xnew),cvMdl.KFold);
    for i = 1:cvMdl.KFold
        preds(:,i) = predict(cvMdl.Trained{i},xnew);
    end
    meanpreds = mean(preds,2)
    meanpreds = 11×1
    
        0.5462
        0.7012
        0.6395
        0.5949
        1.3451
        2.0067
        1.5640
        0.9851
        1.2213
        1.4963
          ⋮
    
    

    バージョン履歴

    R2022b で導入