ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

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) は、最小分類損失 (分類損失 を参照) を返します。これは、tbl.ResponseVarName 内の真のクラス ラベルと比較して、学習済みの単純ベイズ分類器 Mdl が table tbl 内の予測子データをどの程度適切に分類するかを表すスカラーです。

losstbl.ResponseVarName のクラス確率を、MdlPrior プロパティに格納されている学習用の事前クラス確率 fitcnb に正規化します。

L = loss(Mdl,tbl,Y) は最小分類損失 (L) を返します。これは、Y 内の真のクラス ラベルと比較して、学習済みの単純ベイズ分類器 Mdl が table tbl 内の予測子データをどの程度適切に分類するかを表すスカラーです。

lossY のクラス確率を、MdlPrior プロパティに格納されている学習用の事前クラス確率 fitcnb に正規化します。

L = loss(Mdl,X,Y) は最小分類損失 (L) を返します。これは、真のクラス ラベル (Y) と比較して、学習済みの単純ベイズ分類器 Mdl が予測子データ (X) をどの程度適切に分類するかを表すスカラーです。

lossY のクラス確率を、MdlPrior プロパティに格納されている学習用の事前クラス確率 fitcnb に正規化します。

L = loss(___,Name,Value) は、前の構文のいずれかを使用し、1 つ以上の Name,Value ペア引数で指定されたオプションを追加して、分類損失を返します。

入力引数

すべて展開する

単純ベイズ分類器。それぞれ fitcnb または compact により返される ClassificationNaiveBayes モデルまたは CompactClassificationNaiveBayes モデルとして指定します。

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

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

データ型: テーブル

応答変数の名前。tbl 内の変数の名前で指定します。

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

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

データ型: char | string

予測子データ。数値行列として指定します。

X の各行は 1 件の観測 (インスタンスや例とも呼ばれます) に対応し、各列は 1 個の変数 (特徴とも呼ばれます) に対応します。X の列を構成する変数は、Mdl の学習に使用した変数と同じである必要があります。

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

データ型: double | single

クラス ラベル。categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。Y のデータ型は Mdl.ClassNames と同じでなければなりません。(string 配列は文字ベクトルの cell 配列として扱われます)。

Y の長さと tbl または X の行数は、同じでなければなりません。

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

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で閉じなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

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

  • 次の表は、使用可能な損失関数の一覧です。対応する文字ベクトルまたは string スカラーを使用して、いずれかを指定します。

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

    'mincost' は、事後確率である分類スコアに適しています。既定の設定では、単純ベイズ モデルは分類スコアとして事後確率を返します (predict を参照)。

  • 関数ハンドル表記を使用して独自の関数を指定します。

    nX 内の観測値数、K を異なるクラスの数 (numel(Mdl.ClassNames)Mdl は入力モデル) とします。使用する関数のシグネチャは次のようになっていなければなりません。

    lossvalue = lossfun(C,S,W,Cost)
    ここで、

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

    • 関数名 (lossfun) を選択します。

    • CnK 列の logical 行列で、行は対応する観測値が属するクラスを示しています。列の順序は Mdl.ClassNames のクラスの順序に対応します。

      C を作成するには、各行について観測値 p がクラス q に含まれている場合に C(p,q) = 1 を設定します。行 p の他のすべての要素を 0 に設定します。

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

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

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

    'LossFun',@lossfun を使用して独自の関数を指定します。

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

データ型: char | string | 関数ハンドル

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

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

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

独自の損失関数を指定しない場合、Weights は最大 1 に正規化されます。

データ型: double | char | string

出力引数

すべて展開する

分類損失。スカラーとして返されます。L は汎化または再代入品質測定です。解釈は損失関数と加重スキームによって異なりますが、通常は、優れた分類器の方が損失値がより小さくなります。

すべて展開する

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

load fisheriris
X = meas;    % Predictors
Y = species; % Response
rng(1);      % For reproducibility

単純ベイズ分類器を学習させます。テスト用の 15% のホールドアウト標本を指定します。クラスの順序を指定することをお勧めします。各予測子は、ラベルに対して条件付きで正規分布すると仮定します。

CVMdl = fitcnb(X,Y,'ClassNames',{'setosa','versicolor','virginica'},...
    'Holdout',0.15);
CMdl = CVMdl.Trained{1}; % Extract the trained, compact classifier
testInds = test(CVMdl.Partition);   % Extract the test indices
XTest = X(testInds,:);
YTest = Y(testInds);

CVMdlClassificationPartitionedModel 分類器です。この分類器には Trained プロパティが含まれています。これは 1 行 1 列の cell 配列で、学習セットにより学習させた CompactClassificationNaiveBayes 分類器が格納されています。

検定標本最小コスト損失を推定して、アルゴリズムの一般化の精度を特定します。

L = loss(CMdl,XTest,YTest)
L = 0.0476

検定標本の平均分類コストは約 0.05 です。

より適切な予測子の分布を指定することで、分類器を学習させる場合の分類誤差を改善できる可能性があります。

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

load fisheriris
X = meas;    % Predictors
Y = species; % Response
rng(1); % For reproducibility

単純ベイズ分類器を学習させます。テスト用の 15% のホールドアウト標本を指定します。クラスの順序を指定することをお勧めします。各予測子は、ラベルに対して条件付きで正規分布すると仮定します。

CVMdl = fitcnb(X,Y,'ClassNames',{'setosa','versicolor','virginica'},...
    'Holdout',0.15);
CMdl = CVMdl.Trained{1}; % Extract the trained, compact classifier
testInds = test(CVMdl.Partition);   % Extract the test indices
XTest = X(testInds,:);
YTest = Y(testInds);

CVMdlClassificationPartitionedModel 分類器です。この分類器には Trained プロパティが含まれています。これは 1 行 1 列の cell 配列で、学習セットにより学習させた CompactClassificationNaiveBayes 分類器が格納されています。

検定標本分類誤差を推定して、アルゴリズムの一般化の精度を特定します。

L = loss(CMdl,XTest,YTest,'LossFun','classiferror')
L = 0.0476

分類器は、検定標本の観測のうち約 5% を誤分類しています。

詳細

すべて展開する

参照

[1] Hastie, T., R. Tibshirani, and J. Friedman. The Elements of Statistical Learning, second edition. Springer, New York, 2008.

拡張機能