Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

predict

一般化加法モデル (GAM) の使用による応答の予測

    説明

    yFit = predict(Mdl,X) は、回帰用の一般化加法モデル Mdl に基づいて、table または行列 X 内の予測子データに対する予測応答のベクトルを返します。学習済みのモデルは、完全でもコンパクトでもかまいません。

    yFit = predict(Mdl,X,'IncludeInteractions',includeInteractions) は、計算に交互作用項を含めるかどうかを指定します。

    すべて折りたたむ

    学習標本を使用して一般化加法モデルに学習させてから、検定標本応答を予測します。

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

    load patients

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

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

    観測値を学習セットと検定セットに無作為に分割します。検定用に 10% のホールドアウト標本を指定します。

    rng('default') % For reproducibility
    cv = cvpartition(size(tbl,1),'HoldOut',0.10);

    学習インデックスと検定インデックスを抽出します。

    trainInds = training(cv);
    testInds = test(cv);

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

    Mdl = fitrgam(tbl(trainInds,:),'Systolic')
    Mdl = 
      RegressionGAM
               PredictorNames: {1x6 cell}
                 ResponseName: 'Systolic'
        CategoricalPredictors: [3 5 6]
            ResponseTransform: 'none'
                    Intercept: 122.7444
              NumObservations: 90
    
    
      Properties, Methods
    
    

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

    検定セットの応答を予測します。

    yFit = predict(Mdl,tbl(testInds,:));

    観測応答値と予測応答値を格納する table を作成します。

    table(tbl.Systolic(testInds),yFit, ...
        'VariableNames',{'Observed Value','Predicted Value'})
    ans=10×2 table
        Observed Value    Predicted Value
        ______________    _______________
    
             124              126.58     
             121              123.95     
             130              116.72     
             115              117.35     
             121              117.45     
             116               118.5     
             123              126.16     
             132              124.14     
             125              127.36     
             124              115.99     
    
    

    予測子の線形項と交互作用項の両方が格納されている一般化加法モデルを使用して、新しい観測値の応答を予測します。メモリ効率の高いモデル オブジェクトを使用し、応答を予測する際に交互作用項を含めるかどうかを指定します。

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

    load carbig

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

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

    データ セットを 2 つのセットに分割します。1 つは学習データを含め、もう 1 つは新しい未観測の検定データを含めます。新しい検定データ セットの 10 件の観測値を保持します。

    rng('default')
    n = size(X,1);
    newInds = randsample(n,10);
    inds = ~ismember(1:n,newInds);
    XNew = X(newInds,:);
    YNew = Y(newInds);

    X 内の使用可能なすべての線形項と交互作用項が格納されている GAM に学習させます。

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

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

    学習させたモデルのサイズを減らし、メモリの消費量を抑えます。

    CMdl = compact(Mdl);
    whos('Mdl','CMdl')
      Name      Size              Bytes  Class                                          Attributes
    
      CMdl      1x1             1228122  classreg.learning.regr.CompactRegressionGAM              
      Mdl       1x1             1262143  RegressionGAM                                            
    

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

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

    yFit = predict(CMdl,XNew);
    yFit_nointeraction = predict(CMdl,XNew,'IncludeInteractions',false);

    観測応答値と予測応答値を格納する table を作成します。

    t = table(YNew,yFit,yFit_nointeraction, ...
        'VariableNames',{'Observed Response', ...
        'Predicted Response','Predicted Response Without Interactions'})
    t=10×3 table
        Observed Response    Predicted Response    Predicted Response Without Interactions
        _________________    __________________    _______________________________________
    
              27.9                  23.04                          23.649                 
               NaN                 37.163                          35.779                 
               NaN                 25.876                          21.978                 
                13                 12.786                          14.141                 
                36                 28.889                          27.281                 
              19.9                 22.199                          18.451                 
              24.2                 23.995                          24.885                 
                12                 14.247                          13.982                 
                38                 33.797                          33.528                 
                13                 12.225                          11.127                 
    
    

    入力引数

    すべて折りたたむ

    一般化加法モデル。RegressionGAM または CompactRegressionGAM モデル オブジェクトとして指定します。

    予測子データ。数値行列またはテーブルとして指定します。

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

    • 数値行列の場合

      • X の列を構成する変数の順序は、Mdl に学習させた予測子変数の順序と同じでなければなりません。

      • table を使用して Mdl に学習をさせた場合、table に含まれている予測子変数がすべて数値変数であれば、X を数値行列にすることができます。

    • テーブルの場合

      • table (たとえば Tbl) を使用して Mdl に学習をさせた場合、X 内のすべての予測子変数は変数名およびデータ型が Tbl 内の変数と同じでなければなりません。ただし、X の列の順序が Tbl の列の順序に対応する必要はありません。

      • 数値行列を使用して Mdl に学習をさせた場合、Mdl.PredictorNames 内の予測子名と X 内の対応する予測子変数名が同じでなければなりません。学習時に予測子の名前を指定するには、名前と値の引数 'PredictorNames' を使用します。X 内の予測子変数はすべて数値ベクトルでなければなりません。

      • X に追加の変数 (応答変数や観測値の重みなど) を含めることができますが、predict はこれらを無視します。

      • predict は、文字ベクトルの cell 配列ではない cell 配列や複数列の変数をサポートしません。

    データ型: table | double | single

    モデルの交互作用項を含むというフラグ。true または false として指定します。

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

    データ型: logical

    出力引数

    すべて折りたたむ

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

    R2021a で導入