loss
クラス: classreg.learning.regr.CompactRegressionSVM, RegressionSVM
名前空間: classreg.learning.regr
サポート ベクター マシン回帰モデルの回帰誤差
構文
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)
入力引数
SVM 回帰モデル。それぞれ fitrsvm または compact によって返される RegressionSVM モデルまたは CompactRegressionSVM モデルとして指定します。
標本データ。テーブルとして指定します。tbl の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。必要に応じて、応答変数用および観測値の重み用の追加列を Tbl に含めることができます。Tbl には、mdl を学習させるために使用したすべての予測子が含まれていなければなりません。文字ベクトルの cell 配列ではない cell 配列と複数列の変数は使用できません。
table に含まれている標本データを使用して mdl を学習させた場合、このメソッドの入力データも table に格納されていなければなりません。
データ型: table
応答変数の名前。Tbl 内の変数の名前で指定します。応答変数は、数値ベクトルでなければなりません。
ResponseVarName には文字ベクトルまたは string スカラーを指定しなければなりません。たとえば、応答変数 Y が Tbl.Y として格納されている場合、ResponseVarName として 'Y' を指定します。それ以外の場合、モデルを学習させるときに、Tbl の列は Y を含めてすべて予測子として扱われます。
データ型: char | string
観測された応答値。長さが n の数値ベクトルとして指定します。Y の各エントリは、X の対応する行の予測子データに基づく、観測された応答です。
データ型: single | double
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。
損失関数。'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
R2023b 以降
予測子に欠損値がある観測値に使用する予測した応答値。"median"、"mean"、"omitted"、または数値スカラーとして指定します。
| 値 | 説明 |
|---|---|
"median" | loss は、予測子に欠損値がある観測値について予測した応答値として、学習データ内の観測された応答値の中央値を使用します。 |
"mean" | loss は、予測子に欠損値がある観測値について予測した応答値として、学習データ内の観測された応答値の平均値を使用します。 |
"omitted" | loss は、予測子に欠損値がある観測値を損失の計算から除外します。 |
| 数値スカラー | loss は、予測子に欠損値がある観測値について予測した応答値として、この値を使用します。 |
観測された応答値または観測値の重みが観測値にない場合、その観測値は loss による損失の計算に使用されません。
例: PredictionForMissingValue="omitted"
データ型: single | double | char | string
観測値の重み。'Weights' と数値ベクトルから構成されるコンマ区切りのペアとして指定します。Weights の長さは、X の行数と同じでなければなりません。X の各行に含まれている観測値には、Weights の対応する重みが適用されます。
重みは、合計が 1 になるように正規化されます。
データ型: single | double
出力引数
回帰損失。スカラー値として返されます。
例
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: [68×1 double]
Bias: 23.0248
KernelParameters: [1×1 struct]
Mu: [108.8810 2.9419e+03]
Sigma: [44.4943 805.1412]
NumObservations: 84
BoxConstraints: [84×1 double]
ConvergenceInfo: [1×1 struct]
IsSupportVector: [84×1 logical]
Solver: 'SMO'
Properties, Methods
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を使用して回帰誤差を計算します。
拡張機能
loss 関数は、tall 配列を完全にサポートします。詳細は、tall 配列を参照してください。
この関数は、GPU 配列を完全にサポートします。詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2015b で導入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 以降では、loss で GPU 配列が完全にサポートされます。
関数 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 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)