このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
loss
サポート ベクター マシン回帰モデルの回帰誤差
構文
L = loss(mdl,Tbl,ResponseVarName)
L = loss(mdl,Tbl,Y)
L = loss(mdl,X,Y)
L = loss(___,Name,Value)
説明
は、table L
= loss(mdl
,Tbl
,ResponseVarName
)Tbl
に含まれている予測子データと Tbl.ResponseVarName
に含まれている真の応答値に基づいて、サポート ベクター マシン (SVM) 回帰モデル mdl
の予測の損失を返します。
は、table L
= loss(mdl
,Tbl
,Y
)X
に含まれている予測子データとベクトル Y
に含まれている真の応答値に基づいて、サポート ベクター マシン (SVM) 回帰モデル mdl
の予測の損失を返します。
は、L
= loss(mdl
,X
,Y
)X
に含まれている予測子データと Y
に含まれている真の応答に基づいて、サポート ベクター マシン (SVM) 回帰モデル mdl
の予測の損失を返します。
は、前の構文のいずれかを使用し、1 つ以上の名前と値の引数で指定された追加オプションを使用して損失を返します。たとえば、損失関数や観測値の重みを指定できます。L
= loss(___,Name,Value
)
入力引数
mdl
— SVM 回帰モデル
RegressionSVM
モデル | CompactRegressionSVM
モデル
SVM 回帰モデル。それぞれ fitrsvm
または compact
によって返される RegressionSVM
モデルまたは CompactRegressionSVM
モデルとして指定します。
Tbl
— 標本データ
テーブル
標本データ。テーブルとして指定します。tbl
の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。必要に応じて、応答変数用および観測値の重み用の追加列を Tbl
に含めることができます。Tbl
には、mdl
を学習させるために使用したすべての予測子が含まれていなければなりません。文字ベクトルの cell 配列ではない cell 配列と複数列の変数は使用できません。
table
に含まれている標本データを使用して mdl
を学習させた場合、このメソッドの入力データも table に格納されていなければなりません。
データ型: table
ResponseVarName
— 応答変数名
Tbl
内の変数の名前
応答変数の名前。Tbl
内の変数の名前で指定します。応答変数は、数値ベクトルでなければなりません。
ResponseVarName
には文字ベクトルまたは string スカラーを指定しなければなりません。たとえば、応答変数 Y
が Tbl.Y
として格納されている場合、ResponseVarName
として 'Y'
を指定します。それ以外の場合、モデルを学習させるときに、Tbl
の列は Y
を含めてすべて予測子として扱われます。
データ型: char
| string
Y
— 観測された応答値
数値ベクトル
観測された応答値。長さが n の数値ベクトルとして指定します。Y
の各エントリは、X
の対応する行の予測子データに基づく、観測された応答です。
データ型: single
| double
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
LossFun
— 損失関数
'mse'
(既定値) | 'epsiloninsensitive'
| 関数ハンドル
損失関数。'LossFun'
と 'mse'
、'epsiloninsensitive'
または関数ハンドルから構成されるコンマ区切りのペアとして指定します。
次の表は、使用可能な損失関数の一覧です。
値 損失関数 'mse'
重み付けされた平均二乗誤差 'epsiloninsensitive'
イプシロン不感応損失関数 関数ハンドル表記を使用して独自の関数を指定します。
関数には署名
lossvalue = lossfun(Y,Yfit,W)
がなければなりません。ここで、次のようになります。出力引数
lossvalue
はスカラー値です。関数名 (lossfun) を選択します。
Y
は、観測された応答値が含まれている n 行 1 列の数値ベクトルです。Yfit
は、予測した応答値が含まれている n 行 1 列の数値ベクトルです。(predict
の出力と同じように)X
の対応する予測子の値を使用して計算されます。W
は、観測値の重みの n 行 1 列の数値ベクトルです。W
を渡した場合、合計が 1 になるように正規化されます。
'LossFun',@lossfun
を使用して独自の関数を指定します。
例: 'LossFun','epsiloninsensitive'
データ型: char
| string
| function_handle
PredictionForMissingValue
— 予測子に欠損値がある観測値に使用する予測した応答値
"median"
(既定値) | "mean"
| "omitted"
| 数値スカラー
R2023b 以降
予測子に欠損値がある観測値に使用する予測した応答値。"median"
、"mean"
、"omitted"
、または数値スカラーとして指定します。
値 | 説明 |
---|---|
"median" | loss は、予測子に欠損値がある観測値について予測した応答値として、学習データ内の観測された応答値の中央値を使用します。 |
"mean" | loss は、予測子に欠損値がある観測値について予測した応答値として、学習データ内の観測された応答値の平均値を使用します。 |
"omitted" | loss は、予測子に欠損値がある観測値を損失の計算から除外します。 |
数値スカラー | loss は、予測子に欠損値がある観測値について予測した応答値として、この値を使用します。 |
観測された応答値または観測値の重みが観測値にない場合、その観測値は loss
による損失の計算に使用されません。
例: "PredictionForMissingValue","omitted"
データ型: single
| double
| char
| string
Weights
— 観測値の重み
ones(size(X,1),1)
(既定値) | 数値ベクトル
観測値の重み。'Weights'
と数値ベクトルから構成されるコンマ区切りのペアとして指定します。Weights
の長さは、X
の行数と同じでなければなりません。X
の各行に含まれている観測値には、Weights
の対応する重みが適用されます。
重みは、合計が 1 になるように正規化されます。
データ型: single
| double
出力引数
L
— 回帰損失
スカラー値
回帰損失。スカラー値として返されます。
例
SVM 回帰モデルのテスト標本損失の計算
SVM 回帰モデルのテスト セットの平均二乗誤差 (MSE) とイプシロン不感応誤差を計算します。
標本データ carsmall
を読み込みます。予測子変数 (X
) として Horsepower
と Weight
を、応答変数 (Y
) として MPG
を指定します。
load carsmall
X = [Horsepower,Weight];
Y = MPG;
配列 X
および Y
から、それぞれの配列で NaN
値が含まれている行を削除します。
R = rmmissing([X Y]); X = R(:,1:2); Y = R(:,end);
観測値の 10% をホールドアウト標本として予約し、学習インデックスとテスト インデックスを抽出します。
rng default % For reproducibility N = length(Y); cv = cvpartition(N,'HoldOut',0.10); trainInds = training(cv); testInds = test(cv);
学習データ セットとテスト データ セットを指定します。
XTrain = X(trainInds,:); YTrain = Y(trainInds); XTest = X(testInds,:); YTest = Y(testInds);
線形 SVM 回帰モデルに学習させ、データを標準化します。
mdl = fitrsvm(XTrain,YTrain,'Standardize',true)
mdl = RegressionSVM ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' Alpha: [68x1 double] Bias: 23.0248 KernelParameters: [1x1 struct] Mu: [108.8810 2.9419e+03] Sigma: [44.4943 805.1412] NumObservations: 84 BoxConstraints: [84x1 double] ConvergenceInfo: [1x1 struct] IsSupportVector: [84x1 logical] Solver: 'SMO'
mdl
は RegressionSVM
モデルです。
テスト標本の平均二乗誤差とイプシロン不感応誤差を推定することにより、学習済みのモデルが新しい予測子の値に対してどの程度一般化されているかを調べます。
lossMSE = loss(mdl,XTest,YTest)
lossMSE = 32.0268
lossEI = loss(mdl,XTest,YTest,'LossFun','epsiloninsensitive')
lossEI = 3.2919
詳細
重み付けされた平均二乗誤差
重み付けされた平均二乗誤差は、次のように計算されます。
ここで、
n は、データの行数
xj は、データの j 番目の行
yj は、xj に対する真の応答
f(xj) は、xj に対する SVM 回帰モデル
mdl
の応答予測w は、重みのベクトルです。
既定では、w の重みはすべて 1 です。名前と値のペアの引数 'Weights'
を使用することで、それぞれに異なる重みを指定できます。重みを指定した場合、正規化した重みの合計を 1 にするため、各値がすべての重みの合計で除算されます。
イプシロン不感応損失関数
イプシロン不感応損失関数は、関数値の距離がイプシロン (ε) 以内である誤差を無視します。形式としては、次のように表されます。
イプシロン不感応損失は、次のように計算されます。
ここで、
n は、データの行数
xj は、データの j 番目の行
yj は、xj に対する真の応答
f(xj) は、xj に対する SVM 回帰モデル
mdl
の応答予測w は、重みのベクトルです。
既定では、w の重みはすべて 1 です。名前と値のペアの引数 'Weights'
を使用することで、それぞれに異なる重みを指定できます。重みを指定した場合、正規化した重みの合計を 1 にするため、各値がすべての重みの合計で除算されます。
ヒント
mdl
が交差検証RegressionPartitionedSVM
モデルの場合、loss
ではなくkfoldLoss
を使用して回帰誤差を計算します。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
この関数は、tall 配列を完全にサポートします。詳細は、tall 配列を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。 (R2023a 以降)
この関数は、GPU 配列を完全にサポートします。詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2015b で導入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") の計算で省略されていました。
R2023a: GPU 配列のサポート
R2023a 以降では、loss
で GPU 配列が完全にサポートされます。
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)