perObservationLoss
説明
例
ロボット アームのデータ セットを読み込みます。標本サイズ 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: [1×2 table] ResponseTransform: 'none' Beta: [32×1 double] Bias: 0 Learner: 'svm' Properties, Methods
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 個の観測値の入力チャンクを使用して、データ ストリームをシミュレートします。各反復で次を行います。
updateMetricsandFit
を呼び出して、累積性能および観測値ウィンドウ内での性能を測定し、モデルを入力データに当てはめます。前のインクリメンタル モデルを新しいモデルで上書きします。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
) になった後) にデータの各チャンクに含まれる観測値ごとの回帰損失 (二乗誤差) を計算します。PoL
は nchunk
行 numObsPerChunk
列の行列で、この例では 143 行 50 列の行列に対応します。各行はストリーム内の観測値ウィンドウに対応し、各列は対応するウィンドウ内の観測値に対応します。既定のウォームアップ期間は観測値 1000 個で、入力データ チャンク 20 個に対応します。したがって、PoL
の最初の 19 行には NaN
値のみが含まれます。loss
は、モデルがウォームかどうかに関係なく各データ ウィンドウの平均二乗誤差の計算を開始するため、最初の 19 個のチャンクについても回帰誤差を計算します。L
は 143 行 1 列のベクトルです。L
の各値は、PoL
の各行に含まれる二乗誤差値の平均に対応します。
L
と PoL
の行平均の差を計算し、値 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 (行または列) のラベルです。
データ型: 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 で導入
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)