resubLoss
再代入回帰損失
説明
は、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、L = resubLoss(Mdl,Name=Value)IncludeInteractions=false は、一般化加法モデル Mdl から交互作用項を除外するように指定します。
例
一般化加法モデル (GAM) に学習させてから、平均二乗誤差 (MSE) を使用して再代入損失を計算します。
patients データ セットを読み込みます。
load patients予測子変数 (Age、Diastolic、Smoker、Weight、Gender、SelfAssessedHealthStatus) と応答変数 (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
Properties, Methods
Mdl は RegressionGAM モデル オブジェクトです。
平均二乗誤差 (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) として 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
学習データ セットとテスト データ セットのいずれについても、交互作用項を含めた方が誤差が小さくなります。
入力引数
回帰機械学習モデル。完全な回帰モデル オブジェクトとして指定します。サポートされるモデルは次の表に記載されています。
| モデル | 回帰モデル オブジェクト |
|---|---|
| ガウス過程回帰モデル | RegressionGP |
| 一般化加法モデル (GAM) | RegressionGAM |
| ニューラル ネットワーク モデル | RegressionNeuralNetwork |
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。
例: resubLoss(Mdl,IncludeInteractions=false) は、一般化加法モデル Mdl から交互作用項を除外します。
モデルの交互作用項を含むというフラグ。true または false として指定します。この引数は、一般化加法モデルの場合のみ有効です。つまり、この引数を指定できるのは、Mdl が RegressionGAM である場合だけです。
Mdl に交互作用項が含まれる場合、既定値は true です。モデルに交互作用項が含まれない場合、値は false でなければなりません。
例: IncludeInteractions=false
データ型: logical
損失関数。"mse" または関数ハンドルとして指定します。
"mse"— 重み付けされた平均二乗誤差。関数ハンドル — カスタム損失関数を指定するには、関数ハンドルを使用します。関数は次の形式でなければなりません。
lossval = lossfun(Y,YFit,W)
出力引数
lossvalは浮動小数点スカラーです。関数名 (
) を指定します。lossfunMdlが 1 つの応答変数をもつモデルの場合、Yは観測応答の長さ n の数値ベクトルです。ここで、n はTblまたはXの観測値の数です。Mdlが複数の応答変数をもつモデルの場合、Yは観測応答の n 行 k 列の数値行列です。ここで、k は応答変数の数です。YFitは、対応する予測応答の長さ n の数値ベクトルまたは n 行 k 列の数値行列です。YFitのサイズはYのサイズと一致していなければなりません。Wは、観測値の重みの n 行 1 列の数値ベクトルです。
例: LossFun=@lossfun
データ型: char | string | function_handle
R2024b 以降
出力損失のタイプ。"average" または "per-response" として指定します。この引数は、ニューラル ネットワーク モデルに対してのみ有効です。つまり、この引数を指定できるのは、Mdl が RegressionNeuralNetwork オブジェクトの場合だけです。
| 値 | 説明 |
|---|---|
"average" | resubLoss は、すべての応答変数で損失値の平均を求めてスカラー値を返します。 |
"per-response" | resubLoss は、1 つの応答変数の損失を各要素とするベクトルを返します。 |
例: OutputType="per-response"
データ型: char | string
R2023b 以降
予測子に欠損値がある観測値に使用する予測した応答値。"median"、"mean"、"omitted"、または数値スカラーとして指定します。この引数は、ガウス過程回帰モデルまたはニューラル ネットワーク モデルに対してのみ有効です。つまり、この引数を指定できるのは、Mdl が RegressionGP オブジェクトまたは RegressionNeuralNetwork オブジェクトである場合だけです。
| 値 | 説明 |
|---|---|
"median" |
この値は、 |
"mean" | resubLoss は、予測子に欠損値がある観測値について予測した応答値として、学習データ内の観測された応答値の平均値を使用します。 |
"omitted" | resubLoss は、予測子に欠損値がある観測値を損失の計算から除外します。 |
| 数値スカラー | resubLoss は、予測子に欠損値がある観測値について予測した応答値として、この値を使用します。 |
観測された応答値または観測値の重みが観測値にない場合、その観測値は resubLoss による損失の計算に使用されません。
例: PredictionForMissingValue="omitted"
データ型: single | double | char | string
R2024b 以降
損失の計算前に応答データを標準化するためのフラグ。数値または logical の 0 (false) または 1 (true) として指定します。この引数は、ニューラル ネットワーク モデルに対してのみ有効です。つまり、この引数を指定できるのは、Mdl が RegressionNeuralNetwork オブジェクトの場合だけです。
StandardizeResponses を true に設定すると、Mdl.Y の各応答変数が対応する列の平均値と標準偏差によってセンタリングおよびスケーリングされます。スケールが大きく異なる応答変数が複数あり、OutputType が "average" の場合、StandardizeResponses を true として指定します。応答変数が 1 つだけの場合は応答データを標準化しないでください。
例: StandardizeResponses=true
データ型: single | double | logical
出力引数
回帰損失。数値スカラーまたは数値ベクトルとして返されます。回帰損失のタイプは LossFun によって異なります。
Mdl が 1 つの応答変数をもつモデルの場合、L は数値スカラーです。Mdl が複数の応答変数をもつモデルの場合、L のサイズと解釈は OutputType によって異なります。
詳細
重み付けされた平均二乗誤差は、回帰モデルの予測誤差を測定します。複数のモデルで同じタイプの損失を比較した場合、誤差が小さい方が予測モデルとして優れていることになります。
重み付けされた平均二乗誤差は、次のように計算されます。
ここで
n は、データの行数です。
xj は、データの j 番目の行です。
yj は、xj に対する真の応答です。
f(xj) は、xj に対するモデル
Mdlの応答予測です。w は、観測値の重みのベクトルです。
アルゴリズム
resubLoss は、オブジェクト (Mdl) の対応する関数 loss に従って回帰損失を計算します。モデル固有の説明については、次の表に示す関数 loss のリファレンス ページを参照してください。
| モデル | 回帰モデル オブジェクト (Mdl) | オブジェクト関数 loss |
|---|---|---|
| ガウス過程回帰モデル | RegressionGP | loss |
| 一般化加法モデル | RegressionGAM | loss |
| ニューラル ネットワーク モデル | RegressionNeuralNetwork | loss |
代替機能
新しい予測子データの応答損失を計算するには、オブジェクト (Mdl) の対応する関数 loss を使用します。
拡張機能
この関数は、RegressionNeuralNetwork モデル オブジェクトの GPU 配列を完全にサポートします。詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2015b で導入fitrnet 関数を使用して、複数の応答変数をもつニューラル ネットワーク回帰モデルを作成できます。応答変数の数にかかわらず、関数は RegressionNeuralNetwork オブジェクトを返します。resubLoss オブジェクト関数を使用して再代入回帰損失を計算できます。
resubLoss を呼び出すときに、名前と値の引数 OutputType を使用して、平均損失を返すか各応答変数の損失を返すかを指定できます。名前と値の引数 StandardizeResponses を使用して、損失の計算前に応答データを標準化するかどうかを指定することもできます。
resubLoss で RegressionNeuralNetwork モデル オブジェクトの GPU 配列が完全にサポートされます。
R2023b 以降で損失を予測または計算する際、一部の回帰モデルでは、予測子に欠損値がある観測値について予測した応答値を指定できます。名前と値の引数 PredictionForMissingValue を指定して、予測値として数値スカラー、学習セットの中央値、または学習セットの平均値を使用します。損失を計算するときに、予測子に欠損値がある観測値を省略するように指定することもできます。
次の表は、名前と値の引数 PredictionForMissingValue をサポートするオブジェクト関数の一覧です。既定では、これらの関数は、予測子に欠損値がある観測値について予測した応答値として、学習セットの中央値を使用します。
| モデル タイプ | モデル オブジェクト | オブジェクト関数 |
|---|---|---|
| ガウス過程回帰 (GPR) モデル | RegressionGP, CompactRegressionGP | loss, predict, resubLoss, resubPredict |
RegressionPartitionedGP | kfoldLoss, kfoldPredict | |
| ガウス カーネル回帰モデル | RegressionKernel | loss, predict |
RegressionPartitionedKernel | kfoldLoss, kfoldPredict | |
| 線形回帰モデル | RegressionLinear | loss, predict |
RegressionPartitionedLinear | kfoldLoss, kfoldPredict | |
| ニューラル ネットワーク回帰モデル | RegressionNeuralNetwork, CompactRegressionNeuralNetwork | loss, predict, resubLoss, resubPredict |
RegressionPartitionedNeuralNetwork | kfoldLoss, kfoldPredict | |
| サポート ベクター マシン (SVM) 回帰モデル | RegressionSVM, CompactRegressionSVM | loss, predict, resubLoss, resubPredict |
RegressionPartitionedSVM | kfoldLoss, kfoldPredict |
以前のリリースでは、上記の回帰モデル関数 loss および predict は、予測子に欠損値がある観測値について予測した応答値として NaN を使用していました。予測子に欠損値がある観測値は、予測と損失の再代入 ("resub") と交差検証 ("kfold") の計算で省略されていました。
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)