perObservationLoss
説明
例
人の行動のデータ セットを読み込みます。データをランダムにシャッフルします。
load humanactivity n = numel(actid); rng(1); % For reproducibility idx = randsample(n,n); X = feat(idx,:); Y = actid(idx);
データ セットの詳細については、コマンド ラインで Description を入力してください。
応答は、次の 5 つのクラスのいずれかになります。座る、立つ、歩く、走る、または踊る。被験者が移動しているかどうか (actid > 2) を基準に、応答を二分します。
Y = Y > 2;
バイナリ分類用のインクリメンタル線形 SVM モデルを作成します。クラス名、事前クラス分布 (一様)、および任意の係数とバイアス値を指定して損失用にモデルを構成します。メトリクス ウィンドウ サイズを観測値 1000 個に指定します。
p = size(X,2); Beta = randn(p,1); Bias = randn(1); Mdl = incrementalClassificationLinear('Beta',Beta,'Bias',Bias,... 'ClassNames',unique(Y),'Prior','uniform','MetricsWindowSize',1000,'Metrics','classiferror');
Mdl は incrementalClassificationLinear モデルです。そのプロパティはすべて読み取り専用です。
データ ストリームの作成用に各チャンクの変数の数を事前に割り当てて、パフォーマンス メトリクスを格納するための変数の数も割り当てます。
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,X(idx,:),Y(idx)); L(j) = loss(Mdl,X(idx,:),Y(idx)); PoL(j,:) = perObservationLoss(Mdl,X(idx,:),Y(idx)); end
PerObservationLoss は、ウォーム アップ期間後 (IsWarm プロパティが 1 (または true) になった後) にデータの各チャンクに含まれる観測値ごとの損失を計算します。PoL は nchunk 行 numObsPerChunk 列の行列で、この例では 481 行 50 列の行列に対応します。各行はストリーム内の観測値のチャンクに対応し、各列は対応するチャンク内の観測値に対応します。既定のウォームアップ期間は観測値 1000 個で、入力データ チャンク 20 個に対応します。したがって、PoL の最初の 20 行には NaN 値のみが含まれます。loss は、モデルがウォームかどうかに関係なく各データ チャンクの分類誤差の計算を開始するため、L には最初の 20 個についての損失の値も含まれます。
入力引数
インクリメンタル学習モデル。incrementalClassificationKernel、incrementalClassificationLinear、incrementalClassificationECOC、または incrementalClassificationNaiveBayes のいずれかのモデル オブジェクトとして指定します。Mdl は、直接作成することも、サポートされている従来式の学習済み機械学習モデルを関数 incrementalLearner によって変換して作成することもできます。詳細については、対応するリファレンス ページを参照してください。
観測値ごとの損失を計算するための予測子データのチャンク。n 個の観測値および Mdl.NumPredictors 個の予測子変数の浮動小数点行列として指定します。名前と値の引数 ObservationsIn の値は、変数と観測値の方向を決定します。
観測値のラベル Y の長さと X の観測値の数は同じでなければなりません。Y( は j)X 内の観測値 j (行または列) のラベルです。
データ型: single | double
観測値ごとの損失を計算するためのラベルのチャンク。categorical 配列、文字配列、string 配列、logical ベクトル、または文字ベクトルの cell 配列として指定します。
観測値のラベル Y の長さと X の観測値の数は同じでなければなりません。Y( は j)X 内の観測値 j (行または列) のラベルです。
分類問題では次のようになります。
YがMdl.ClassNamesのメンバーではないラベルを含む場合、perObservationLossはエラーを生成します。YとMdl.ClassNamesのデータ型は同じでなければなりません。
データ型: char | string | cell | categorical | logical
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
例: ObservationsIn="columns",LossFun="hinge" は、観測値が列単位であり、損失関数が組み込みのヒンジ損失であることを指定します。
X 内のデータの方向。"rows" または "columns" を指定します。
例: ObservationsIn="columns"
損失関数。組み込みの損失関数名または関数ハンドルとして指定します。
次の表は、組み込みの損失関数名の一覧です。
| 名前 | 説明 |
|---|---|
"binodeviance" | 二項分布からの逸脱度 |
"classiferror" | 誤分類誤差率 |
"exponential" | 指数 |
"hinge" | ヒンジ |
"logit" | ロジスティック |
"quadratic" | 2 次 |
"mincost" | 最小予測誤分類コスト (incrementalClassificationNaiveBayes のみ) |
既定値は、incrementalClassificationNaiveBayes モデル オブジェクトの場合は "mincost"、その他のオブジェクトの場合は "classiferror" です。
メモ
incrementalClassificationECOC には "classiferror" のみを指定できます。
カスタム損失関数を指定するには、関数ハンドル表記を使用します。関数は次の形式でなければなりません。
lossval = lossfcn(C,S)
出力引数
lossvalは n 行 1 列の浮動小数点ベクトルです。n はX内の観測値の個数です。lossval(の値は観測値j)の分類損失です。j関数名 (
) を指定します。lossfcnCは n 行 K 列の logical 行列であり、対応する観測値が属するクラスを各行が示します。Kは異なるクラスの個数 (numel(Mdl.ClassNames)) で、列の順序はClassNamesプロパティのクラスの順序に対応します。Cを作成するには、指定されたデータの各観測値について観測値がクラスpに属する場合にqC(=p,q)1を設定します。行の他の要素をp0に設定します。Sは、予測分類スコアの n 行 K 列の数値行列です。Sはpredictの出力Scoreに似ています。ここで、行はデータの観測値に対応し、列の順序はClassNamesプロパティのクラスの順序に対応しています。S(は、クラスp,q)に分類されている観測値qの分類スコアです。p
例: LossFun="logit"
例: 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)