Main Content

perObservationLoss

インクリメンタル学習用モデルの観測値ごとの回帰誤差

R2022a 以降

    説明

    Err = perObservationLoss(Mdl,X,Y) は、X の予測子と Y の真のラベルを使用して学習させたモデル Mdl の観測値ごとの二乗誤差を返します。

    Err は n 行 1 列のベクトルで、n は観測値の数です。

    Err = perObservationLoss(Mdl,X,Y,Name=Value) は、1 つ以上の Name=Value の引数を使用して追加のオプションを指定します。

    すべて折りたたむ

    ロボット アームのデータ セットを読み込みます。標本サイズ n と予測子変数の数 p を取得します。

    load robotarm
    n = numel(ytrain);
    p = size(Xtrain,2);

    データ セットの詳細については、コマンド ラインで Description を入力してください。

    回帰用のインクリメンタル線形モデルを作成します。次のようにモデルを構成します。

    • メトリクスのウォームアップ期間を観測値 1000 個に指定。

    • メトリクス ウィンドウ サイズを観測値 500 個に指定。

    • すべての回帰係数およびバイアスを 0 に指定して、モデルを応答予測用に構成。

    Mdl = incrementalRegressionLinear('MetricsWarmupPeriod',1000,'MetricsWindowSize',500,...
       'Beta',zeros(p,1),'Bias',0,'EstimationPeriod',0)
    Mdl = 
      incrementalRegressionLinear
    
                   IsWarm: 0
                  Metrics: [1x2 table]
        ResponseTransform: 'none'
                     Beta: [32x1 double]
                     Bias: 0
                  Learner: 'svm'
    
    
    

    Mdl はインクリメンタル学習用に構成された incrementalRegressionLinear モデル オブジェクトです。プロパティはすべて読み取り専用です。

    データ ストリームの作成用に各チャンクの変数の数を事前に割り当てて、パフォーマンス メトリクスを格納するための変数の数も割り当てます。

    numObsPerChunk = 50;
    nchunk = floor(n/numObsPerChunk);
    L = zeros(nchunk,1); % To store loss values
    PoL = zeros(nchunk,50); % To store per observation loss values

    それぞれ 50 個の観測値の入力チャンクを使用して、データ ストリームをシミュレートします。各反復で次を行います。

    1. updateMetricsandFit を呼び出して、累積性能および観測値ウィンドウ内での性能を測定し、モデルを入力データに当てはめます。前のインクリメンタル モデルを新しいモデルで上書きします。

    2. loss を呼び出して入力データの平均二乗誤差を計算し、perObservationLoss を呼び出して観測値ごとの二乗誤差を計算し、パフォーマンス メトリクスを格納します。

    for j = 1:nchunk
        ibegin = min(n,numObsPerChunk*(j-1) + 1);
        iend   = min(n,numObsPerChunk*j);
        idx = ibegin:iend;    
        Mdl = updateMetricsAndFit(Mdl,Xtrain(idx,:),ytrain(idx));
        L(j) = loss(Mdl,Xtrain(idx,:),ytrain(idx));
        PoL(j,:) = perObservationLoss(Mdl,Xtrain(idx,:),ytrain(idx));
    end

    PerObservationLoss は、ウォーム アップ期間後 (IsWarm プロパティが 1 (または true) になった後) にデータの各チャンクに含まれる観測値ごとの回帰損失 (二乗誤差) を計算します。PoLnchunknumObsPerChunk 列の行列で、この例では 143 行 50 列の行列に対応します。各行はストリーム内の観測値ウィンドウに対応し、各列は対応するウィンドウ内の観測値に対応します。既定のウォームアップ期間は観測値 1000 個で、入力データ チャンク 20 個に対応します。したがって、PoL の最初の 19 行には NaN 値のみが含まれます。loss は、モデルがウォームかどうかに関係なく各データ ウィンドウの平均二乗誤差の計算を開始するため、最初の 19 個のチャンクについても回帰誤差を計算します。L は 143 行 1 列のベクトルです。L の各値は、PoL の各行に含まれる二乗誤差値の平均に対応します。

    LPoL の行平均の差を計算し、値 20 ~ 25 を表示します。

    diff = abs(L-mean(PoL,2));
    diff(20:25)
    ans = 6×1
    10-15 ×
    
        0.2220
             0
        0.2220
        0.1110
        0.1110
        0.2220
    
    

    2 つのベクトルの差はごくわずかです。

    入力引数

    すべて折りたたむ

    インクリメンタル学習モデル。incrementalRegressionKernel または incrementalRegressionLinear というモデル オブジェクトとして指定します。Mdl は、直接作成することも、サポートされている従来式の学習済み機械学習モデルを関数 incrementalLearner によって変換して作成することもできます。詳細については、対応するリファレンス ページを参照してください。

    観測値ごとの損失を計算するための予測子データのバッチ。n 個の観測値および Mdl.NumPredictors 個の予測子変数の浮動小数点行列として指定します。名前と値の引数 ObservationsIn の値は、変数と観測値の方向を決定します。

    観測値のラベル Y の長さと X の観測値の数は同じでなければなりません。Y(j)X 内の観測値 j (行または列) のラベルです。

    メモ

    perObservationLoss は、浮動小数点の入力予測子データのみをサポートしています。入力データに categorical データが含まれている場合は、エンコード バージョンの categorical データを準備する必要があります。dummyvar を使用して、各カテゴリカル変数をダミー変数で構成される数値行列に変換します。その後、すべてのダミー変数行列とその他の数値予測子を連結します。詳細については、ダミー変数を参照してください。

    データ型: single | double

    観測値ごとの損失を計算するための応答のバッチ。浮動小数点ベクトルとして指定します。

    Y の長さと X の観測値の数は同じでなければなりません。Y(j)X 内の観測値 j (行または列) の応答です。

    データ型: single | double

    名前と値の引数

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

    例: ObservationsIn="columns",LossFun="epsiloninsensitive" は、観測値が列単位であり、損失関数が組み込みのイプシロン不感応損失であることを指定します。

    X 内のデータの方向。"rows" または "columns" を指定します。

    例: ObservationsIn="columns"

    損失関数。組み込みの損失関数名または関数ハンドルとして指定します。

    回帰用の使用可能な組み込みの損失関数は "squarederror" または "epsiloninsensitive" です。

    カスタム損失関数を指定するには、関数ハンドル表記を使用します。関数は次の形式でなければなりません。

    lossval = lossfcn(Y,YFit)

    • 出力引数 lossval は浮動小数点スカラーです。

    • 関数名 (lossfcn) を指定します。

    • Y は、観測応答の長さ n の数値ベクトルです。

    • YFit は、対応する予測応答の長さ n の数値ベクトルです。

    例: LossFun="epsiloninsensitive"

    例: LossFun=@lossfcn

    データ型: char | string | function_handle

    バージョン履歴

    R2022a で導入