loss
説明
は、回帰損失 (L
= loss(Mdl
,Tbl
,ResponseVarName
)L
) を返します。これは、Tbl.ResponseVarName
内の真の応答値と比較して、一般化加法モデル Mdl
が Tbl
内の予測子データをどの程度の精度で予測するかを表すスカラーです。
L
の解釈は損失関数 ('LossFun'
) と加重スキーム ('Weights'
) によって異なります。一般に、優れたモデルの方が回帰損失値が小さくなります。'LossFun'
の既定値は 'mse'
(平均二乗誤差) です。
では、前の構文におけるいずれかの入力引数の組み合わせに加えて、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、損失関数や観測値の重みを指定できます。L
= loss(___,Name,Value
)
例
テスト標本回帰損失の判定
一般化加法モデルのテスト標本回帰損失 (平均二乗誤差) を判定します。複数のモデルで同じタイプの損失を比較した場合、損失が低い方が予測モデルとして優れていることになります。
patients
データ セットを読み込みます。
load patients
予測子変数 (Age
、Diastolic
、Smoker
、Weight
、Gender
、SelfAssessedHealthStatus
) と応答変数 (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");
テスト標本回帰損失を推定して、アルゴリズムの一般化の精度を特定します。既定では、RegressionGAM
の関数 loss
は平均二乗誤差を推定します。
L = loss(Mdl,tbl(testInds,:))
L = 35.7540
回帰損失の検査による GAM の比較
予測子の線形項と交互作用項の両方が格納されている一般化加法モデル (GAM) に学習させ、学習データとテスト データについて交互作用項を含める場合と含めない場合の回帰損失 (平均二乗誤差、MSE) を推定します。回帰損失を推定する際に交互作用項を含めるかどうかを指定します。
carbig
データ セットを読み込みます。このデータ セットには、1970 年代と 1980 年代初期に製造された自動車の測定値が格納されています。
load carbig
予測子変数 (X
) として Acceleration
、Displacement
、Horsepower
および 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');
Mdl
は RegressionGAM
モデル オブジェクトです。
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);
CMdl
は CompactRegressionGAM
モデル オブジェクトです。
l = loss(CMdl,XNew,YNew)
l = 12.8604
l_nointeraction = loss(CMdl,XNew,YNew,'IncludeInteractions',false)
l_nointeraction = 15.6741
学習データ セットとテスト データ セットのいずれについても、交互作用項を含めた方が誤差が小さくなります。
入力引数
Mdl
— 一般化加法モデル
RegressionGAM
モデル オブジェクト | CompactRegressionGAM
モデル オブジェクト
一般化加法モデル。RegressionGAM
または CompactRegressionGAM
モデル オブジェクトとして指定します。
Tbl
— 標本データ
table
標本データ。テーブルとして指定します。Tbl
の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。文字ベクトルの cell 配列ではない cell 配列と複数列の変数は使用できません。
Tbl
には、Mdl
に学習させるために使用したすべての予測子が含まれていなければなりません。必要に応じて、Tbl
に応答変数用の列と観測値の重み用の列を含めることができます。
応答変数は、数値ベクトルでなければなりません。
Tbl
に含まれる応答変数がMdl
の学習に使用した応答変数と同じ名前である場合、ResponseVarName
を指定する必要はありません。重みの値は数値ベクトルでなければなりません。
Tbl
内の観測値の重みは'Weights'
を使用して指定しなければなりません。
table に格納されている標本データを使用して Mdl
に学習をさせた場合、loss
の入力データも table に含まれていなければなりません。
データ型: table
ResponseVarName
— 応答変数名
Tbl
内の変数の名前
応答変数名。Tbl
内の応答変数の名前を含む文字ベクトルまたは string スカラーとして指定します。たとえば、応答変数 Y
が Tbl.Y
に格納されている場合、'Y'
として指定します。
データ型: char
| string
X
— 予測子データ
数値行列
予測子データ。数値行列として指定します。X
の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。
行列に格納されている標本データを使用して Mdl
に学習させた場合、loss
の入力データも行列でなければなりません。
データ型: single
| double
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: 'IncludeInteractions',false,'Weights',w
は、モデルから交互作用項を除外し、観測値の重み w
を使用するように指定します。
IncludeInteractions
— 交互作用項を含むというフラグ
true
| false
モデルの交互作用項を含むというフラグ。true
または false
として指定します。
Mdl
に交互作用項が含まれる場合、'IncludeInteractions'
の既定値は true
です。モデルに交互作用項が含まれない場合、値は false
でなければなりません。
例: 'IncludeInteractions',false
データ型: logical
LossFun
— 損失関数
'mse'
(既定値) | 関数ハンドル
損失関数。'mse'
または関数ハンドルとして指定します。
例: 'LossFun',@
lossfun
データ型: char
| string
| function_handle
Weights
— 観測値の重み
ones(size(X,1),1)
(既定値) | スカラー値のベクトル | Tbl
内の変数の名前
観測値の重み。スカラー値のベクトルまたは Tbl
内の変数の名前として指定します。X
または Tbl
の各行に含まれている観測値には、Weights
の対応する値で重みが付けられます。Weights
のサイズは、X
または Tbl
の行数と同じでなければなりません。
入力データをテーブル Tbl
として指定した場合、Weights
は数値ベクトルが含まれている Tbl
内の変数の名前にすることができます。この場合、Weights
には文字ベクトルまたは string スカラーを指定しなければなりません。たとえば、重みのベクトル W
が Tbl.W
として格納されている場合、'W'
として指定します。
loss
は、合計が 1 になるように Weights
の値を正規化します。
データ型: single
| double
| char
| string
詳細
重み付けされた平均二乗誤差
重み付けされた平均二乗誤差は、回帰モデルの予測誤差を測定します。複数のモデルで同じタイプの損失を比較した場合、誤差が小さい方が予測モデルとして優れていることになります。
重み付けされた平均二乗誤差は、次のように計算されます。
ここで
n は、データの行数です。
xj は、データの j 番目の行です。
yj は、xj に対する真の応答です。
f(xj) は、xj に対するモデル
Mdl
の応答予測です。w は、観測値の重みのベクトルです。
バージョン履歴
R2021a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)