Main Content

resubPredict

学習済み回帰モデルを使用した学習データについての応答の予測

    説明

    yFit = resubPredict(Mdl) は、Mdl.X に格納されている予測子データを使用して、学習済み回帰モデル Mdl の予測応答のベクトルを返します。

    yFit = resubPredict(Mdl,Name,Value) では、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、'IncludeInteractions',true は、一般化加法モデルの計算に交互作用項を含めるために指定します。この構文は一般化加法モデルおよびガウス過程回帰モデルにのみ適用されます。

    [yFit,ySD,yInt] = resubPredict(___) は、前の構文におけるいずれかの入力引数の組み合わせを使用して、予測子データ Mdl.X 内の各観測値で評価した応答変数の標準偏差と予測区間も返します。この構文は、IsStandardDeviationFittrue である一般化加法モデルに、および PredictMethod'bcd' でないガウス過程回帰モデルにのみ適用されます。

    すべて折りたたむ

    一般化加法モデル (GAM) に学習させてから、学習データについて応答を予測します。

    patients データセットを読み込みます。

    load patients

    予測子変数 (AgeDiastolicSmokerWeightGenderSelfAssessedHealthStatus) と応答変数 (Systolic) を格納する table を作成します。

    tbl = table(Age,Diastolic,Smoker,Weight,Gender,SelfAssessedHealthStatus,Systolic);

    tbl 内の予測子の線形項が格納されている一変量の GAM に学習させます。

    Mdl = fitrgam(tbl,"Systolic")
    Mdl = 
      RegressionGAM
                PredictorNames: {1x6 cell}
                  ResponseName: 'Systolic'
         CategoricalPredictors: [3 5 6]
             ResponseTransform: 'none'
                     Intercept: 122.7800
        IsStandardDeviationFit: 0
               NumObservations: 100
    
    
      Properties, Methods
    
    

    MdlRegressionGAM モデル オブジェクトです。

    学習セットについて応答を予測します。

    yFit = resubPredict(Mdl);

    観測応答値と予測応答値を格納する table を作成します。table の最初の 8 行を表示します。

    t = table(tbl.Systolic,yFit, ...
        'VariableNames',{'Observed Value','Predicted Value'});
    head(t)
    ans=8×2 table
        Observed Value    Predicted Value
        ______________    _______________
    
             124              124.75     
             109              109.48     
             125              122.89     
             117              115.87     
             122              121.61     
             121              122.02     
             130              126.39     
             115              115.95     
    
    

    関数 fitrgp を使用してガウス過程回帰 (GPR) モデルを学習させます。次に、関数 resubPredict を使用して、学習データについて応答を予測し、学習データの各観測値における応答の予測区間を推定します。

    学習データ セットを生成します。

    rng(1) % For reproducibility
    n = 100000;
    X = linspace(0,1,n)';
    X = [X,X.^2];
    y = 1 + X*[1;2] + sin(20*X*[1;-2]) + 0.2*randn(n,1);

    二乗指数カーネル関数を使用して、GPR モデルに学習させます。回帰変数のサブセット ('sr') による近似法を使用してパラメーターを推定し、データ サブセット ('sd') 法を使用して予測を行います。アクティブ セットに含まれている 50 個の点を使用し、アクティブ セットの選択には、'sgma' (スパース グリーディ行列近似) 法を指定します。1 番目の予測子と 2 番目の予測子ではスケールが異なるので、データ セットを標準化します。

    gprMdl = fitrgp(X,y,'KernelFunction','squaredExponential', ...
        'FitMethod','sr','PredictMethod','sd', ...
        'ActiveSetSize',50,'ActiveSetMethod','sgma','Standardize',true);

    fitrgpは、近似法、予測法およびアクティブ セット選択法についてどのような組み合わせでも受け入れます。ただし、ブロック座標降下予測法 ('PredictMethod','bcd') を使用してモデルに学習させた場合、このモデルを使用しても予測応答の標準偏差は計算できません。そのため、このモデルは予測区間の計算にも使用できません。詳細については、ヒントを参照してください。

    学習済みのモデルを使用して、学習データの応答を予測し、予測した応答の予測区間を推定します。

    [ypred,~,yci] = resubPredict(gprMdl);

    真の応答、予測した応答および予測区間をプロットします。

    figure
    plot(y,'r')
    hold on
    plot(ypred,'b')
    plot(yci(:,1),'k--')
    plot(yci(:,2),'k--')
    legend('True responses','GPR predictions','95% prediction limits','Location','Best')
    xlabel('X')
    ylabel('y')
    hold off

    Figure contains an axes object. The axes object contains 4 objects of type line. These objects represent True responses, GPR predictions, 95% prediction limits.

    学習済みの GPR モデルを使用して、学習データの平均二乗誤差損失を計算します。

    L = resubLoss(gprMdl)
    L = 0.0523
    

    予測子の線形項と交互作用項の両方が格納されている一般化加法モデル (GAM) を使用して、学習データ セットについて応答を予測します。応答を予測する際に交互作用項を含めるかどうかを指定します。

    carbig データセットを読み込みます。このデータセットには、1970 年代と 1980 年代初期に製造された自動車の測定値が格納されています。

    load carbig

    予測子変数 (X) として AccelerationDisplacementHorsepower および Weight を、応答変数 (Y) として MPG を指定します。

    X = [Acceleration,Displacement,Horsepower,Weight];
    Y = MPG;

    X 内の使用可能なすべての線形項と交互作用項が格納されている一般化加法モデルに学習させます。

    Mdl = fitrgam(X,Y,'Interactions','all');

    MdlRegressionGAM モデル オブジェクトです。

    線形項と交互作用項の両方を使用して応答を予測してから、線形項のみを使用して応答を予測します。交互作用項を除外するには、'IncludeInteractions',false を指定します。

    yFit = resubPredict(Mdl);
    yFit_nointeraction = resubPredict(Mdl,'IncludeInteractions',false);

    観測応答値と予測応答値を格納する table を作成します。table の最初の 8 行を表示します。

    t = table(Mdl.Y,yFit,yFit_nointeraction, ...
        'VariableNames',{'Observed Response', ...
        'Predicted Response','Predicted Response Without Interactions'});
    head(t)
    ans=8×3 table
        Observed Response    Predicted Response    Predicted Response Without Interactions
        _________________    __________________    _______________________________________
    
               18                  18.026                           17.22                 
               15                  15.003                          15.791                 
               18                  17.663                           16.18                 
               16                  16.178                          15.536                 
               17                  17.107                          17.361                 
               15                  14.943                          14.424                 
               14                  14.119                          14.981                 
               14                  13.864                          13.498                 
    
    

    入力引数

    すべて折りたたむ

    回帰機械学習モデル。完全な回帰モデル オブジェクトとして指定します。サポートされるモデルは次の表に記載されています。

    モデル回帰モデル オブジェクト
    ガウス過程回帰モデルRegressionGP
    一般化加法モデル (GAM)RegressionGAM
    ニューラル ネットワーク モデルRegressionNeuralNetwork

    名前と値の引数

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

    R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

    例: 'Alpha',0.01,'IncludeInteractions',false は信頼度を 99% として指定し、一般化加法モデルの計算から交互作用項を除外します。

    予測区間 yInt の信頼度の有意水準。範囲 [0,1] の数値スカラーとして指定します。yInt の信頼度は 100(1 – Alpha)% と等しくなります。

    この引数は、標準偏差当てはめを含む一般化加法モデル オブジェクトの場合、または予測にブロック座標降下法を使用しないガウス過程回帰モデルの場合のみ有効です。つまり、この引数を指定できるのは、次のいずれかの状況のみです。

    例: 'Alpha',0.01

    データ型: single | double

    モデルの交互作用項を含むというフラグ。true または false として指定します。この引数は、一般化加法モデルの場合のみ有効です。つまり、この引数を指定できるのは、MdlRegressionGAM である場合だけです。

    Mdl に交互作用項が含まれる場合、既定値は true です。モデルに交互作用項が含まれない場合、値は false でなければなりません。

    データ型: logical

    出力引数

    すべて折りたたむ

    予測応答。長さが n のベクトルとして返されます。n は、予測子データ (Mdl.X) に含まれている観測値の個数です。

    予測子データ Mdl.X 内の各観測値で評価した応答変数の標準偏差。長さが n の列ベクトルとして返されます。n は、予測子データ Mdl.X に含まれている観測値の個数です。i 番目の要素 ySD(i) に、Mdl の学習済みの標準偏差モデルを使用して評価した i 番目の観測値 Mdl.X(i,:) に対する i 番目の応答の標準偏差が格納されます。

    この引数は、標準偏差当てはめを含む一般化加法モデル オブジェクトの場合、または予測にブロック座標降下法を使用しないガウス過程回帰モデルの場合のみ有効です。つまり、resubPredict がこの引数を返すのは、次のいずれかの状況のみです。

    予測子データ Mdl.X 内の各観測値で評価した応答変数の予測区間。n 行 2 列の行列として返されます。n は、予測子データ Mdl.X に含まれている観測値の個数です。i 番目の行 yInt(i,:) に、i 番目の観測値 Mdl.X(i,:) に対する i 番目の応答の 100(1 – Alpha)% の予測区間が格納されます。Alpha 値は、予測区間に真の応答値 Mdl.Y(i) が含まれない確率です。yInt の 1 列目には予測区間の下限が、2 列目には上限が格納されます。

    この引数は、標準偏差当てはめを含む一般化加法モデル オブジェクトの場合、または予測にブロック座標降下法を使用しないガウス過程回帰モデルの場合のみ有効です。つまり、resubPredict がこの引数を返すのは、次のいずれかの状況のみです。

    アルゴリズム

    resubPredict は、オブジェクト (Mdl) の対応する関数 predict に従って応答を予測します。モデル固有の説明については、次の表に示す関数 predict のリファレンス ページを参照してください。

    モデル回帰モデル オブジェクト (Mdl)オブジェクト関数 predict
    ガウス過程回帰モデルRegressionGPpredict
    一般化加法モデルRegressionGAMpredict
    ニューラル ネットワーク モデルRegressionNeuralNetworkpredict

    代替機能

    新しい予測子データの予測応答を計算するには、オブジェクト (Mdl) の対応する関数 predict を使用します。

    バージョン履歴

    R2021a で導入

    参考