メインコンテンツ

kfoldLoss

交差検証済みカーネル分類モデルの分類損失

説明

loss = kfoldLoss(CVMdl) は、交差検証済みのバイナリ カーネル モデル (ClassificationPartitionedKernel) CVMdl によって取得した分類損失を返します。kfoldLoss は、すべての分割について、学習分割観測値に対して学習をさせたモデルを使用して、検証分割観測値の分類損失を計算します。

既定では、kfoldLoss は分類誤差を返します。

loss = kfoldLoss(CVMdl,Name,Value) は、1 つ以上の名前と値のペアの引数で指定された追加オプションを使用して、分類損失を返します。たとえば、分類損失関数、分割数、または集約レベルを指定します。

すべて折りたたむ

ionosphere データ セットを読み込みます。このデータ セットには、レーダー反射についての 34 個の予測子と、不良 ('b') または良好 ('g') というラベルが付いた 351 個の二項反応が含まれています。

load ionosphere

このデータを使用して、バイナリ カーネル分類モデルを交差検証します。

CVMdl = fitckernel(X,Y,'Crossval','on')
CVMdl = 
  ClassificationPartitionedKernel
    CrossValidatedModel: 'Kernel'
           ResponseName: 'Y'
        NumObservations: 351
                  KFold: 10
              Partition: [1×1 cvpartition]
             ClassNames: {'b'  'g'}
         ScoreTransform: 'none'


  Properties, Methods

CVMdlClassificationPartitionedKernel モデルです。既定では、10 分割交差検証が実行されます。異なる分割数を指定するには、'Crossval' ではなく名前と値のペアの引数 'KFold' を指定します。

交差検証分類損失を推定します。既定では、分類誤差が計算されます。

loss = kfoldLoss(CVMdl)
loss = 
0.0940

または、名前と値のペアの引数 'Mode','individual'kfoldLoss で指定することにより、分割ごとの分類誤差を取得できます。

ionosphere データ セットを読み込みます。このデータ セットには、レーダー反射についての 34 個の予測子と、不良 ('b') または良好 ('g') というラベルが付いた 351 個の二項反応が含まれています。

load ionosphere

このデータを使用して、バイナリ カーネル分類モデルを交差検証します。

CVMdl = fitckernel(X,Y,'Crossval','on')
CVMdl = 
  ClassificationPartitionedKernel
    CrossValidatedModel: 'Kernel'
           ResponseName: 'Y'
        NumObservations: 351
                  KFold: 10
              Partition: [1×1 cvpartition]
             ClassNames: {'b'  'g'}
         ScoreTransform: 'none'


  Properties, Methods

CVMdlClassificationPartitionedKernel モデルです。既定では、10 分割交差検証が実行されます。異なる分割数を指定するには、'Crossval' ではなく名前と値のペアの引数 'KFold' を指定します。

次の線形損失を評価する無名関数を作成します。

L=j-wjyjfjjwj.

wj は観測値 j の重み、yj は応答 j (陰性クラスの場合は –1、それ以外の場合は 1)、fj は観測値 j の生の分類スコアです。

linearloss = @(C,S,W,Cost)sum(-W.*sum(S.*C,2))/sum(W);

カスタム損失関数は特定の形式で記述しなければなりません。カスタム損失関数の記述に関するルールについては、名前と値のペアの引数 'LossFun' を参照してください。

線形損失関数を使用して交差検証分類損失を推定します。

loss = kfoldLoss(CVMdl,'LossFun',linearloss)
loss = 
-0.7792

入力引数

すべて折りたたむ

交差検証済みのバイナリ カーネル分類モデル。ClassificationPartitionedKernel モデル オブジェクトを指定します。ClassificationPartitionedKernel モデルは、fitckernel を使用し、交差検証の名前と値のペアの引数のいずれかを指定することにより作成できます。

推定値を取得するため、kfoldLoss はカーネル分類モデルの交差検証に使用したものと同じデータ (X および Y) を適用します。

名前と値の引数

すべて折りたたむ

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

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

例: kfoldLoss(CVMdl,'Folds',[1 3 5]) は、分類損失の計算に 1 番目、3 番目および 5 番目の分割のみを使用することを指定します。

予測の分割インデックス。'Folds' および正の整数の数値ベクトルで構成されるコンマ区切りのペアとして指定します。Folds の要素は 1 から CVMdl.KFold の範囲でなければなりません。

予測用の Folds で指定された分割のみが使用されます。

例: 'Folds',[1 4 10]

データ型: single | double

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

  • 次の表は、使用できる損失関数の一覧です。対応する値を使用していずれかを指定します。

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

    'mincost' は、事後確率である分類スコアに適しています。カーネル分類モデルの場合、既定の設定ではロジスティック回帰学習器は事後確率を分類スコアとして返しますが、SVM 学習器はそうではありません (kfoldPredict を参照)。

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

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

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

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

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

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

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

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

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

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

例: 'LossFun',@lossfun

データ型: char | string | function_handle

出力の集約レベル。'Mode''average' または 'individual' から構成されるコンマ区切りのペアとして指定します。

次の表は値を説明します。

説明
'average'出力は、すべての分割の平均を表すスカラー値です。
'individual'出力は、分割ごとに 1 つずつの値が含まれている長さ k のベクトルです。k は分割数です。

例: 'Mode','individual'

出力引数

すべて折りたたむ

分類損失。数値スカラーまたは数値列ベクトルとして返されます。

Mode'average' である場合、loss はすべての分割の平均分類損失です。それ以外の場合、loss は各分割の分類損失が含まれている k 行 1 列の数値列ベクトルです。k は分割数です。

詳細

すべて折りたたむ

拡張機能

すべて展開する

バージョン履歴

R2018b で導入

すべて展開する