メインコンテンツ

loss

k 最近傍分類器の損失

説明

L = loss(mdl,Tbl,ResponseVarName) は、真の分類が Tbl.ResponseVarName に含まれている場合に mdlTbl 内のデータをどの程度適切に分類するかを表すスカラーを返します。mdl を学習させるために使用した応答変数が Tbl に含まれている場合、ResponseVarName を指定する必要はありません。

関数 loss は、損失を計算するときに、mdlPrior プロパティに格納されている、学習に使用されたクラス確率に対して、Tbl.ResponseVarName のクラス確率を正規化します。

分類損失 (L) の意味は損失関数と重み付けの方式によって異なりますが、一般に優れた分類器の方が分類損失の値が小さくなります。詳細は、分類損失を参照してください。

L = loss(mdl,Tbl,Y) は、真の分類が Y に含まれている場合に mdlTbl 内のデータをどの程度適切に分類するかを表すスカラーを返します。

関数 loss は、損失を計算するときに、mdlPrior プロパティに格納されている、学習に使用されたクラス確率に対して、Y のクラス確率を正規化します。

L = loss(mdl,X,Y) は、真の分類が Y に含まれている場合に mdlX 内のデータをどの程度適切に分類するかを表すスカラーを返します。

関数 loss は、損失を計算するときに、mdlPrior プロパティに格納されている、学習に使用されたクラス確率に対して、Y のクラス確率を正規化します。

L = loss(___,Name,Value) では、前の構文の入力引数に加えて、1 つ以上の名前と値のペアの引数を使用してオプションを指定します。たとえば、損失関数や分類の重みを指定できます。

メモ

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

すべて折りたたむ

フィッシャーのアヤメのデータに対して k 最近傍分類器を作成します。ここで k = 5 です。

フィッシャーのアヤメのデータ セットを読み込みます。

load fisheriris

5 つの最近傍について分類器を作成します。

mdl = fitcknn(meas,species,'NumNeighbors',5);

'versicolor' として分類された平均観測値に対する分類器の損失を調べます。

X = mean(meas);
Y = {'versicolor'};
L = loss(mdl,X,Y)
L = 
0

5 つの最近傍はすべて 'versicolor' として分類されます。

入力引数

すべて折りたたむ

k 最近傍分類モデル。ClassificationKNN オブジェクトを指定します。

モデルを学習させるために使用する標本データ。table として指定します。Tbl の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。オプションとして、Tbl に応答変数用の列を 1 つ追加できます。文字ベクトルの cell 配列ではない cell 配列と複数列の変数は使用できません。

mdl を学習させるために使用した応答変数が Tbl に含まれている場合、ResponseVarName または Y を指定する必要はありません。

table に格納されている標本データを使用して mdl の学習を行う場合、loss の入力データも table に格納されていなければなりません。

データ型: table

応答変数の名前。Tbl 内の変数の名前で指定します。mdl を学習させるために使用した応答変数が Tbl に含まれている場合、ResponseVarName を指定する必要はありません。

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

応答変数は、categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列でなければなりません。応答変数が文字配列の場合、各要素は配列の 1 つの行に対応しなければなりません。

データ型: char | string

予測子データ。数値行列として指定します。X の各行は 1 つの観測値を、各列は 1 つの変数を表します。

データ型: single | double

クラス ラベル。categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。Y の各行は、X の対応する行の分類を表します。

データ型: categorical | char | string | logical | single | double | cell

名前と値の引数

すべて折りたたむ

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

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

例: loss(mdl,Tbl,'response','LossFun','exponential','Weights','w') は、mdlTbl 内のデータを分類する場合の重み付き指数損失を返します。ここで、Tbl.response は応答変数、Tbl.w は重みの変数です。

損失関数。'LossFun' と組み込みの損失関数名または関数ハンドルから構成されるコンマ区切りのペアとして指定します。

  • 次の表は、使用可能な損失関数の一覧です。

    説明
    "binodeviance"二項分布からの逸脱度
    "classifcost"観測誤分類コスト
    "classiferror"10 進数の誤分類率
    "exponential"指数損失
    "hinge"ヒンジ損失
    "logit"ロジスティック損失
    "mincost"最小予測誤分類コスト (事後確率である分類スコアの場合)
    "quadratic"二次損失

    'mincost' は、事後確率である分類スコアに適しています。既定では、k 最近傍モデルは分類スコアとして事後確率を返します (predict を参照)。

  • @lossfun のように @ を使用すると、カスタム損失関数用の関数ハンドルを指定できます。X 内の観測値の個数を n、異なるクラスの個数 (numel(mdl.ClassNames)) を K とします。カスタム損失関数は、次のような形式にしなければなりません。

    function lossvalue = lossfun(C,S,W,Cost)

    • CnK 列の logical 行列であり、対応する観測値が属するクラスを各行が示します。列の順序は mdl.ClassNames のクラスの順序に対応します。各行について観測値 p がクラス q に属する場合は C(p,q) = 1 を設定することにより、C を作成します。行 p の他のすべての要素を 0 に設定します。

    • S は、分類スコアの nK 列の行列です。列の順序は mdl.ClassNames のクラスの順序に対応します。引数 S は、predict の出力と同様の分類スコアの行列です。

    • W は、観測値の重みの n 行 1 列の数値ベクトルです。W を渡す場合、重みは合計が 1 になるように正規化されます。

    • Cost は、誤分類コストの、KK 列の数値行列です。たとえば、Cost = ones(K) – eye(K) は、正しい分類のコストとして 0 を、誤分類のコストとして 1 を指定します。

    • 出力引数 lossvalue はスカラーです。

損失関数の詳細については、分類損失を参照してください。

データ型: char | string | function_handle

観測値の重み。'Weights' と数値ベクトル、または Tbl に含まれる変数の名前から構成されるコンマ区切りのペアとして指定します。

数値ベクトルで Weights を指定する場合、Weights のサイズは X または Tbl の行数と等しくなければなりません。

Weights として Tbl 内の変数名を指定する場合、名前は文字ベクトルまたは string スカラーでなければなりません。たとえば、重みが Tbl.w として格納されている場合、Weights として 'w' を指定します。それ以外の場合、Tbl の列は Tbl.w を含めてすべて予測子として扱われます。

loss は、各クラスの観測値について重みの合計がそのクラスの事前確率になるように、重みを正規化します。Weights を指定した場合、loss は重み付きの分類損失を計算します。

例: 'Weights','w'

データ型: single | double | char | string

アルゴリズム

すべて折りたたむ

拡張機能

すべて展開する

バージョン履歴

R2012a で導入

すべて展開する