Main Content

resubLoss

    説明

    L = resubLoss(Mdl) は、Mdl.X に格納されている学習データと Mdl.Y に格納されている対応する応答を使用して、学習済み回帰モデル Mdl の再代入による回帰損失 (標本内回帰損失) L を返します。

    L の解釈は損失関数 ('LossFun') と加重スキーム (Mdl.W) によって異なります。一般に、優れたモデルの方が回帰損失値が小さくなります。'LossFun' の既定値は 'mse' (平均二乗誤差) です。

    L = resubLoss(Mdl,Name,Value) では、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、'IncludeInteractions',false は、一般化加法モデル Mdl から交互作用項を除外するように指定します。

    すべて折りたたむ

    一般化加法モデル (GAM) に学習させてから、平均二乗誤差 (MSE) を使用して再代入損失を計算します。

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

    load patients

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

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

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

    Mdl = fitrgam(tbl,"Systolic")
    Mdl = 
      RegressionGAM
                PredictorNames: {'Age'  'Diastolic'  'Smoker'  'Weight'  'Gender'  'SelfAssessedHealthStatus'}
                  ResponseName: 'Systolic'
         CategoricalPredictors: [3 5 6]
             ResponseTransform: 'none'
                     Intercept: 122.7800
        IsStandardDeviationFit: 0
               NumObservations: 100
    
    
    

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

    平均二乗誤差 (MSE) を使用して再代入損失を計算します。

    L = resubLoss(Mdl)
    L = 4.1957
    

    標本データを読み込んで table に格納します。

    load fisheriris
    tbl = table(meas(:,1),meas(:,2),meas(:,3),meas(:,4),species,...
    'VariableNames',{'meas1','meas2','meas3','meas4','species'});

    1 番目の測定値を応答として、他の変数を予測子として使用して、GPR モデルを当てはめます。

    mdl = fitrgp(tbl,'meas1');

    学習済みのモデルを使用して、応答を予測します。

    ypred = predict(mdl,tbl);

    平均絶対誤差を計算します。

    n = height(tbl);
    y = tbl.meas1;
    fun = @(y,ypred,w) sum(abs(y-ypred))/n;
    L = resubLoss(mdl,'lossfun',fun)
    L = 0.2345
    

    予測子の線形項と交互作用項の両方が格納されている一般化加法モデル (GAM) に学習させ、学習データとテスト データについて交互作用項を含める場合と含めない場合の回帰損失 (平均二乗誤差、MSE) を推定します。回帰損失を推定する際に交互作用項を含めるかどうかを指定します。

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

    load carbig

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

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

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

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

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

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

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

    Mdl に交互作用項を含める場合と含めない場合の両方の再代入 MSE (つまり標本内 MSE) を計算します。交互作用項を除外するには、'IncludeInteractions',false を指定します。

    resubl = resubLoss(Mdl)
    resubl = 0.0292
    
    resubl_nointeraction = resubLoss(Mdl,'IncludeInteractions',false)
    resubl_nointeraction = 4.7330
    

    テスト データ セットについて、交互作用項を含める場合と含めない場合の両方の回帰 MSE を計算します。メモリ効率の高いモデル オブジェクトを計算に使用します。

    CMdl = compact(Mdl);

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

    l = loss(CMdl,XNew,YNew)
    l = 12.8604
    
    l_nointeraction = loss(CMdl,XNew,YNew,'IncludeInteractions',false)
    l_nointeraction = 15.6741
    

    学習データ セットとテスト データ セットのいずれについても、交互作用項を含めた方が誤差が小さくなります。

    入力引数

    すべて折りたたむ

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

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

    名前と値の引数

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

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

    例: resubLoss(Mdl,'IncludeInteractions',false) は、一般化加法モデル Mdl から交互作用項を除外します。

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

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

    例: 'IncludeInteractions',false

    データ型: logical

    損失関数。'mse' または関数ハンドルとして指定します。

    • 'mse' — 重み付けされた平均二乗誤差。

    • 関数ハンドル — カスタム損失関数を指定するには、関数ハンドルを使用します。関数は次の形式でなければなりません。

      lossval = lossfun(Y,YFit,W)

      • 出力引数 lossval は浮動小数点スカラーです。

      • 関数名 (lossfun) を指定します。

      • Y は、観測応答の長さ n の数値ベクトルです。ここで、n は Tbl または X に含まれている観測値の個数です。

      • YFit は、対応する予測応答の長さ n の数値ベクトルです。

      • W は、観測値の重みの n 行 1 列の数値ベクトルです。

    例: 'LossFun',@lossfun

    データ型: char | string | function_handle

    R2023b 以降

    予測子に欠損値がある観測値に使用する予測した応答値。"median""mean""omitted"、または数値スカラーとして指定します。この引数は、ガウス過程回帰モデルまたはニューラル ネットワーク モデルに対してのみ有効です。つまり、この引数を指定できるのは、MdlRegressionGP オブジェクトまたは RegressionNeuralNetwork オブジェクトである場合だけです。

    説明
    "median"

    resubLoss は、予測子に欠損値がある観測値について予測した応答値として、学習データ内の観測された応答値の中央値を使用します。

    この値は、MdlRegressionGP オブジェクトまたは RegressionNeuralNetwork オブジェクトである場合の既定値です。

    "mean"resubLoss は、予測子に欠損値がある観測値について予測した応答値として、学習データ内の観測された応答値の平均値を使用します。
    "omitted"resubLoss は、予測子に欠損値がある観測値を損失の計算から除外します。
    数値スカラーresubLoss は、予測子に欠損値がある観測値について予測した応答値として、この値を使用します。

    観測された応答値または観測値の重みが観測値にない場合、その観測値は resubLoss による損失の計算に使用されません。

    例: "PredictionForMissingValue","omitted"

    データ型: single | double | char | string

    詳細

    すべて折りたたむ

    重み付けされた平均二乗誤差

    重み付けされた平均二乗誤差は、回帰モデルの予測誤差を測定します。複数のモデルで同じタイプの損失を比較した場合、誤差が小さい方が予測モデルとして優れていることになります。

    重み付けされた平均二乗誤差は、次のように計算されます。

    mse=j=1nwj(f(xj)yj)2j=1nwj,

    ここで、

    • n は、データの行数です。

    • xj は、データの j 番目の行です。

    • yj は、xj に対する真の応答です。

    • f(xj) は、xj に対するモデル Mdl の応答予測です。

    • w は、観測値の重みのベクトルです。

    アルゴリズム

    resubLoss は、オブジェクト (Mdl) の対応する関数 loss に従って回帰損失を計算します。モデル固有の説明については、次の表に示す関数 loss のリファレンス ページを参照してください。

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

    代替機能

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

    バージョン履歴

    R2015b で導入

    すべて展開する