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) に学習させ、学習データとテスト データについて交互作用項を含める場合と含めない場合の回帰損失 (平均二乗誤差、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
学習データ セットとテスト データ セットのいずれについても、交互作用項を含めた方が誤差が小さくなります。
入力引数
一般化加法モデル。RegressionGAM または CompactRegressionGAM モデル オブジェクトとして指定します。
標本データ。table として指定します。Tbl の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。文字ベクトルの cell 配列ではない cell 配列と複数列の変数は使用できません。
Tbl には、Mdl に学習させるために使用したすべての予測子が含まれていなければなりません。必要に応じて、Tbl に応答変数用の列と観測値の重み用の列を含めることができます。
応答変数は、数値ベクトルでなければなりません。
Tblに含まれる応答変数がMdlの学習に使用した応答変数と同じ名前である場合、ResponseVarNameを指定する必要はありません。重みの値は数値ベクトルでなければなりません。
Tbl内の観測値の重みは'Weights'を使用して指定しなければなりません。
table に格納されている標本データを使用して Mdl に学習をさせた場合、loss の入力データも table に含まれていなければなりません。
データ型: table
応答変数名。Tbl 内の応答変数の名前を含む文字ベクトルまたは string スカラーとして指定します。たとえば、応答変数 Y が Tbl.Y に格納されている場合、'Y' として指定します。
データ型: char | string
予測子データ。数値行列として指定します。X の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。
行列に格納されている標本データを使用して Mdl に学習させた場合、loss の入力データも行列でなければなりません。
データ型: single | double
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。
例: 'IncludeInteractions',false,'Weights',w は、モデルから交互作用項を除外し、観測値の重み w を使用するように指定します。
モデルの交互作用項を含むというフラグ。true または false として指定します。
Mdl に交互作用項が含まれる場合、'IncludeInteractions' の既定値は true です。モデルに交互作用項が含まれない場合、値は false でなければなりません。
例: 'IncludeInteractions',false
データ型: logical
損失関数。'mse' または関数ハンドルとして指定します。
例: 'LossFun',@lossfun
データ型: char | string | function_handle
観測値の重み。スカラー値のベクトルまたは Tbl 内の変数の名前として指定します。X または Tbl の各行に含まれている観測値には、Weights の対応する値で重みが付けられます。Weights のサイズは、X または Tbl の行数と同じでなければなりません。
入力データを table 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 Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)