このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
loss
説明
は、table L
= loss(Mdl
,Tbl
,ResponseVarName
)Tbl
内の予測子データと table 変数 ResponseVarName
内の応答値を使用して、学習させた回帰ニューラル ネットワーク Mdl
の回帰損失を返します。
L
は、既定で平均二乗誤差 (MSE) を表すスカラー値として返されます。
では、前の構文におけるいずれかの入力引数の組み合わせに加えて、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、予測子データの列が観測値に対応するように指定したり、損失関数を指定したり、観測値の重みを与えることができます。L
= loss(___,Name,Value
)
例
ニューラル ネットワークのテスト セットの平均二乗誤差
回帰ニューラル ネットワーク モデルのテスト セットの平均二乗誤差 (MSE) を計算します。
patients
データ セットを読み込みます。データ セットから table を作成します。各行が 1 人の患者に対応し、各列が診断の変数に対応します。変数 Systolic
を応答変数として使用し、残りの変数を予測子として使用します。
load patients
tbl = table(Diastolic,Height,Smoker,Weight,Systolic);
非層化ホールドアウト分割を使用して、データを学習セット tblTrain
とテスト セット tblTest
に分割します。観測値の約 30% がテスト データ セット用に予約され、残りの観測値が学習データ セットに使用されます。
rng("default") % For reproducibility of the partition c = cvpartition(size(tbl,1),"Holdout",0.30); trainingIndices = training(c); testIndices = test(c); tblTrain = tbl(trainingIndices,:); tblTest = tbl(testIndices,:);
学習セットを使用して回帰ニューラル ネットワーク モデルに学習させます。tblTrain
の列 Systolic
を応答変数として指定します。数値予測子を標準化するための指定を行い、反復制限を 50 に設定します。
Mdl = fitrnet(tblTrain,"Systolic", ... "Standardize",true,"IterationLimit",50);
テスト セットの MSE を計算します。MSE の値が小さいほど、パフォーマンスが優れていることを示します。
testMSE = loss(Mdl,tblTest,"Systolic")
testMSE = 22.2447
回帰ニューラル ネットワークに含める特徴量の選択
テスト セットの損失と予測を比較することにより、特徴選択を実行します。すべての予測子を使用して学習させた回帰ニューラル ネットワーク モデルのテスト セット メトリクスを予測子のサブセットのみを使用して学習させたモデルのテスト セット メトリクスと比較します。
標本ファイル fisheriris.csv
を読み込みます。これには、アヤメについてのがく片の長さ、がく片の幅、花弁の長さ、花弁の幅、種の種類などのデータが格納されています。ファイルを table に読み込みます。
fishertable = readtable('fisheriris.csv');
非層化ホールドアウト分割を使用して、データを学習セット trainTbl
とテスト セット testTbl
に分割します。観測値の約 30% がテスト データ セット用に予約され、残りの観測値が学習データ セットに使用されます。
rng("default") c = cvpartition(size(fishertable,1),"Holdout",0.3); trainTbl = fishertable(training(c),:); testTbl = fishertable(test(c),:);
学習セット内のすべての予測子を使用して 1 つの回帰ニューラル ネットワーク モデルに学習させ、PetalWidth
を除くすべての予測子を使用してもう 1 つのモデルに学習させます。両方のモデルについて、PetalLength
を応答変数として指定し、予測子を標準化します。
allMdl = fitrnet(trainTbl,"PetalLength","Standardize",true); subsetMdl = fitrnet(trainTbl,"PetalLength ~ SepalLength + SepalWidth + Species", ... "Standardize",true);
2 つのモデルのテスト セットの平均二乗誤差 (MSE) を比較します。MSE の値が小さいほど、パフォーマンスが優れていることを示します。
allMSE = loss(allMdl,testTbl)
allMSE = 0.0834
subsetMSE = loss(subsetMdl,testTbl)
subsetMSE = 0.0884
各モデルについて、テスト セットの予測される花弁の長さと実際の花弁の長さを比較します。予測される花弁の長さを縦軸に、実際の花弁の長さを横軸に沿ってプロットします。基準線上にある点は予測が正しいことを示します。
tiledlayout(2,1) % Top axes ax1 = nexttile; allPredictedY = predict(allMdl,testTbl); plot(ax1,testTbl.PetalLength,allPredictedY,".") hold on plot(ax1,testTbl.PetalLength,testTbl.PetalLength) hold off xlabel(ax1,"True Petal Length") ylabel(ax1,"Predicted Petal Length") title(ax1,"All Predictors") % Bottom axes ax2 = nexttile; subsetPredictedY = predict(subsetMdl,testTbl); plot(ax2,testTbl.PetalLength,subsetPredictedY,".") hold on plot(ax2,testTbl.PetalLength,testTbl.PetalLength) hold off xlabel(ax2,"True Petal Length") ylabel(ax2,"Predicted Petal Length") title(ax2,"Subset of Predictors")
予測が基準線の近くに分布しており、両方のモデルが適切に機能しているようなので、PetalWidth
を除くすべての予測子を使用して学習させたモデルを使用することを検討します。
入力引数
Mdl
— 学習させた回帰ニューラル ネットワーク
RegressionNeuralNetwork
モデル オブジェクト | CompactRegressionNeuralNetwork
モデル オブジェクト
学習させた回帰ニューラル ネットワーク。fitrnet
によって返される RegressionNeuralNetwork
モデル オブジェクト、または compact
によって返される CompactRegressionNeuralNetwork
モデル オブジェクトとして指定します。
Tbl
— 標本データ
テーブル
標本データ。テーブルとして指定します。Tbl
の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。オプションとして、応答変数用の追加列を Tbl
に含めることができます。Tbl
には、Mdl
を学習させるために使用したすべての予測子が含まれていなければなりません。文字ベクトルの cell 配列ではない cell 配列と複数列の変数は使用できません。
Mdl
を学習させるために使用した応答変数がTbl
に含まれている場合、ResponseVarName
またはY
を指定する必要はありません。table に格納されている標本データを使用して
Mdl
に学習をさせた場合、loss
の入力データも table に含まれていなければなりません。Mdl
に学習させるときにfitrnet
で'Standardize',true
を設定した場合、予測子データの数値列が対応する平均および標準偏差を使用して標準化されます。
データ型: table
ResponseVarName
— 応答変数名
Tbl
内の変数の名前
応答変数の名前。Tbl
内の変数の名前で指定します。応答変数は、数値ベクトルでなければなりません。
ResponseVarName
を指定する場合は、文字ベクトルまたは string スカラーとして指定しなければなりません。たとえば、応答変数が Tbl.Y
として格納されている場合、ResponseVarName
として 'Y'
を指定します。それ以外の場合、Tbl
の列は Tbl.Y
を含めてすべて予測子として扱われます。
データ型: char
| string
X
— 予測子データ
数値行列
予測子データ。数値行列として指定します。既定では、loss
は、X
の各行が 1 つの観測値に、各列が 1 つの予測子変数に対応すると見なします。
メモ
観測値が列に対応するように予測子行列を配置して 'ObservationsIn','columns'
を指定すると、計算時間が大幅に短縮される可能性があります。
Y
の長さと X
の観測値数は同じでなければなりません。
Mdl
に学習させるときに fitrnet
で 'Standardize',true
を設定した場合、予測子データの数値列が対応する平均および標準偏差を使用して標準化されます。
データ型: single
| double
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: loss(Mdl,Tbl,"Response","Weights","W")
は、table Tbl
内の変数 Response
および W
をそれぞれ応答値および観測値の重みとして使用するように指定します。
LossFun
— 損失関数
'mse'
(既定値) | 関数ハンドル
損失関数。'mse'
または関数ハンドルとして指定します。
例: 'LossFun',@
lossfun
データ型: char
| string
| function_handle
ObservationsIn
— 予測子データにおける観測値の次元
'rows'
(既定値) | 'columns'
予測子データにおける観測値の次元。'rows'
または 'columns'
として指定します。
メモ
観測値が列に対応するように予測子行列を配置して 'ObservationsIn','columns'
を指定すると、計算時間が大幅に短縮される可能性があります。table の予測子データに対して 'ObservationsIn','columns'
を指定することはできません。
データ型: char
| string
PredictionForMissingValue
— 予測子に欠損値がある観測値に使用する予測した応答値
"median"
(既定値) | "mean"
| "omitted"
| 数値スカラー
R2023b 以降
予測子に欠損値がある観測値に使用する予測した応答値。"median"
、"mean"
、"omitted"
、または数値スカラーとして指定します。
値 | 説明 |
---|---|
"median" | loss は、予測子に欠損値がある観測値について予測した応答値として、学習データ内の観測された応答値の中央値を使用します。 |
"mean" | loss は、予測子に欠損値がある観測値について予測した応答値として、学習データ内の観測された応答値の平均値を使用します。 |
"omitted" | loss は、予測子に欠損値がある観測値を損失の計算から除外します。 |
数値スカラー | loss は、予測子に欠損値がある観測値について予測した応答値として、この値を使用します。 |
観測された応答値または観測値の重みが観測値にない場合、その観測値は loss
による損失の計算に使用されません。
例: "PredictionForMissingValue","omitted"
データ型: single
| double
| char
| string
Weights
— 観測値の重み
非負の数値ベクトル | Tbl
内の変数の名前
観測値の重み。非負の数値ベクトルまたは Tbl
内の変数の名前を指定します。ソフトウェアは、X
または Tbl
の各観測値に、Weights
の対応する値で重みを付けます。Weights
の長さは、X
または Tbl
の観測値の数と等しくなければなりません。
入力データをテーブル Tbl
として指定した場合、Weights
は数値ベクトルが含まれている Tbl
内の変数の名前にすることができます。この場合、Weights
には文字ベクトルまたは string スカラーを指定しなければなりません。たとえば、重みベクトル W
が Tbl.W
として格納されている場合、'W'
として指定します。
既定の設定では、Weights
は ones(n,1)
です。n
は X
または Tbl
の観測値数です。
重みを指定した場合、loss
は加重回帰損失を計算し、合計が 1 になるように重みを正規化します。
データ型: single
| double
| char
| string
バージョン履歴
R2021a で導入R2023b: 予測子に欠損値がある観測値に使用する予測した応答値の指定
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") の計算で省略されていました。
R2022a: 欠損値がある予測子データに対して loss
で NaN が返されることがある
関数 loss
で加重平均回帰損失を計算する際に、予測が NaN の観測値が省略されなくなりました。そのため、予測子データ X
または Tbl
内の予測子変数に欠損値がある場合に loss
で NaN が返されることがあります。ほとんどの場合、テスト セットの観測値に予測子の欠損がなければ、関数 loss
で NaN が返されることはありません。
この変更により、fitrauto
を使用する場合の回帰モデルの自動選択が改善されます。この変更の前は、NaN 以外の予測子が少ないモデルが選択される (新しいデータの応答の予測に最適であると予測される) ことがありました。
コードの loss
で NaN が返される場合、このような結果にならないようにコードを更新できます。rmmissing
または fillmissing
を使用して、欠損値を削除するか置き換えます。
次の表に、オブジェクト関数 loss
で NaN が返される可能性がある回帰モデルを示します。詳細については、それぞれの関数 loss
の「互換性の考慮事項」を参照してください。
モデル タイプ | 完全またはコンパクトなモデル オブジェクト | オブジェクト関数 loss |
---|---|---|
ガウス過程回帰 (GPR) モデル | RegressionGP , CompactRegressionGP | loss |
ガウス カーネル回帰モデル | RegressionKernel | loss |
線形回帰モデル | RegressionLinear | loss |
ニューラル ネットワーク回帰モデル | RegressionNeuralNetwork , CompactRegressionNeuralNetwork | loss |
サポート ベクター マシン (SVM) 回帰モデル | RegressionSVM , CompactRegressionSVM | loss |
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)