Main Content

loss

サポート ベクター マシン回帰モデルの回帰誤差

構文

L = loss(mdl,Tbl,ResponseVarName)
L = loss(mdl,Tbl,Y)
L = loss(mdl,X,Y)
L = loss(___,Name,Value)

説明

L = loss(mdl,Tbl,ResponseVarName) は、table Tbl に含まれている予測子データと Tbl.ResponseVarName に含まれている真の応答値に基づいて、サポート ベクター マシン (SVM) 回帰モデル mdl の予測の損失を返します。

L = loss(mdl,Tbl,Y) は、table X に含まれている予測子データとベクトル Y に含まれている真の応答値に基づいて、サポート ベクター マシン (SVM) 回帰モデル mdl の予測の損失を返します。

L = loss(mdl,X,Y) は、X に含まれている予測子データと Y に含まれている真の応答に基づいて、サポート ベクター マシン (SVM) 回帰モデル mdl の予測の損失を返します。

L = loss(___,Name,Value) は、前の構文のいずれかを使用し、1 つ以上の Name,Value ペア引数で指定されたオプションを追加して、損失を返します。たとえば、損失関数や観測値の重みを指定できます。

メモ

予測子データ X または Tbl 内の予測子変数に欠損値がある場合、関数 loss で NaN が返されることがあります。詳細については、欠損値がある予測子データに対して loss で NaN が返されることがあるを参照してください。

入力引数

すべて展開する

SVM 回帰モデル。それぞれ fitrsvm または compact によって返される RegressionSVM モデルまたは CompactRegressionSVM モデルとして指定します。

標本データ。テーブルとして指定します。tbl の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。必要に応じて、応答変数用および観測値の重み用の追加列を Tbl に含めることができます。Tbl には、mdl を学習させるために使用したすべての予測子が含まれていなければなりません。文字ベクトルの cell 配列ではない cell 配列と複数列の変数は使用できません。

table に含まれている標本データを使用して mdl を学習させた場合、このメソッドの入力データも table に格納されていなければなりません。

データ型: table

応答変数の名前。Tbl 内の変数の名前で指定します。応答変数は、数値ベクトルでなければなりません。

ResponseVarName には文字ベクトルまたは string スカラーを指定しなければなりません。たとえば、応答変数 YTbl.Y として格納されている場合、ResponseVarName として 'Y' を指定します。それ以外の場合、モデルを学習させるときに、Tbl の列は Y を含めてすべて予測子として扱われます。

データ型: char | string

予測子データ。数値行列またはテーブルとして指定します。X の各行は 1 件の観測 (インスタンスや例とも呼ばれます) に対応し、各列は 1 個の変数 (特徴とも呼ばれます) に対応します。

予測子の値の行列を使用して mdl を学習させた場合、X は p 列の数値行列でなければなりません。p は、mdl を学習させるために使用した予測子の数です。

Y の長さと X の行数は等しくなければなりません。

データ型: single | double

観測された応答値。長さが n の数値ベクトルとして指定します。Y の各エントリは、X の対応する行の予測子データに基づく、観測された応答です。

データ型: single | double

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

損失関数。'LossFun''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

観測値の重み。'Weights' と数値ベクトルから構成されるコンマ区切りのペアとして指定します。Weights の長さは、X の行数と同じでなければなりません。X の各行に含まれている観測値には、Weights の対応する重みが適用されます。

重みは、合計が 1 になるように正規化されます。

データ型: single | double

出力引数

すべて展開する

回帰損失。スカラー値として返されます。

すべて展開する

SVM 回帰モデルの検定セットの平均二乗誤差 (MSE) とイプシロン不感応誤差を計算します。

標本データ carsmall を読み込みます。予測子変数 (X) として HorsepowerWeight を、応答変数 (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'


  Properties, Methods

mdlRegressionSVM モデルです。

検定標本の平均二乗誤差とイプシロン不感応誤差を推定することにより、学習済みのモデルが新しい予測子の値に対してどの程度一般化されているかを調べます。

lossMSE = loss(mdl,XTest,YTest)
lossMSE = 32.0268
lossEI = loss(mdl,XTest,YTest,'LossFun','epsiloninsensitive')
lossEI = 3.2919

詳細

すべて展開する

ヒント

拡張機能

バージョン履歴

R2015b で導入

すべて展開する

R2022a での動作変更