Main Content

このページは前リリースの情報です。該当の英語のページはこのリリースで削除されています。

resubPredict

単純ベイズ分類器の使用による観測値の分類

説明

label = resubPredict(Mdl) は、予測子データ Mdl.X を使用して、学習させた単純ベイズ分類器 Mdl の再代入予測クラス ラベルのベクトル (label) を返します。

[label,Posterior,Cost] = resubPredict(Mdl) はさらに、事後確率 (Posterior) と、Mdl.X の観測値 (行) に対応する予測 (推定) 誤分類コスト (Cost) を返します。

すべて折りたたむ

fisheriris データセットを読み込みます。150 本のアヤメについて 4 つの花弁の測定値が含まれる数値行列 X を作成します。対応するアヤメの種類が含まれる文字ベクトルの cell 配列 Y を作成します。

load fisheriris
X = meas;
Y = species;
rng('default')  % for reproducibility

予測子 X とクラス ラベル Y を使用して、単純ベイズ分類器に学習させます。クラス名を指定することが推奨されます。fitcnb は、各予測子が条件付き正規分布に従うと仮定しています。

Mdl = fitcnb(X,Y,'ClassNames',{'setosa','versicolor','virginica'})
Mdl = 
  ClassificationNaiveBayes
              ResponseName: 'Y'
     CategoricalPredictors: []
                ClassNames: {'setosa'  'versicolor'  'virginica'}
            ScoreTransform: 'none'
           NumObservations: 150
         DistributionNames: {'normal'  'normal'  'normal'  'normal'}
    DistributionParameters: {3x4 cell}


  Properties, Methods

Mdl は学習させた ClassificationNaiveBayes 分類器です。

学習標本のラベルを予測します。

label = resubPredict(Mdl);

10 件の観測値の無作為なセットについて結果を表示します。

idx = randsample(size(X,1),10);
table(Y(idx),label(idx),'VariableNames', ...
    {'TrueLabel','PredictedLabel'})
ans=10×2 table
      TrueLabel       PredictedLabel
    ______________    ______________

    {'virginica' }    {'virginica' }
    {'setosa'    }    {'setosa'    }
    {'virginica' }    {'virginica' }
    {'versicolor'}    {'versicolor'}
    {'virginica' }    {'virginica' }
    {'versicolor'}    {'versicolor'}
    {'virginica' }    {'virginica' }
    {'setosa'    }    {'setosa'    }
    {'virginica' }    {'virginica' }
    {'setosa'    }    {'setosa'    }

真のラベル Y と予測ラベル label から混同チャートを作成します。

cm = confusionchart(Y,label);

単純ベイズ分類器を使用して、標本内事後確率と誤分類コストを推定します。

fisheriris データセットを読み込みます。150 本のアヤメについて 4 つの花弁の測定値が含まれる数値行列 X を作成します。対応するアヤメの種類が含まれる文字ベクトルの cell 配列 Y を作成します。

load fisheriris
X = meas;
Y = species;
rng('default')  %for reproducibility

予測子 X とクラス ラベル Y を使用して、単純ベイズ分類器に学習させます。クラス名を指定することが推奨されます。fitcnb は、各予測子が条件付き正規分布に従うと仮定しています。

Mdl = fitcnb(X,Y,'ClassNames',{'setosa','versicolor','virginica'});

Mdl は学習させた ClassificationNaiveBayes 分類器です。

事後確率と学習データの予測誤分類コストを推定します。

[label,Posterior,MisclassCost] = resubPredict(Mdl);
Mdl.ClassNames
ans = 3x1 cell
    {'setosa'    }
    {'versicolor'}
    {'virginica' }

無作為に選択した 10 個の観測値の結果を表示します。

idx = randsample(size(X,1),10);
table(Y(idx),label(idx),Posterior(idx,:),MisclassCost(idx,:),'VariableNames', ...
    {'TrueLabel','PredictedLabel','PosteriorProbability','MisclassificationCost'})
ans=10×4 table
      TrueLabel       PredictedLabel              PosteriorProbability                       MisclassificationCost         
    ______________    ______________    _________________________________________    ______________________________________

    {'virginica' }    {'virginica' }    6.2514e-269     1.1709e-09              1             1             1    1.1709e-09
    {'setosa'    }    {'setosa'    }              1     5.5339e-19      2.485e-25    5.5339e-19             1             1
    {'virginica' }    {'virginica' }    7.4191e-249     1.4481e-10              1             1             1    1.4481e-10
    {'versicolor'}    {'versicolor'}     3.4472e-62        0.99997      3.362e-05             1     3.362e-05       0.99997
    {'virginica' }    {'virginica' }    3.4268e-229      6.597e-09              1             1             1     6.597e-09
    {'versicolor'}    {'versicolor'}     6.0941e-77         0.9998     0.00019663             1    0.00019663        0.9998
    {'virginica' }    {'virginica' }    1.3467e-167       0.002187        0.99781             1       0.99781      0.002187
    {'setosa'    }    {'setosa'    }              1     1.5776e-15     5.7172e-24    1.5776e-15             1             1
    {'virginica' }    {'virginica' }    2.0116e-232     2.6206e-10              1             1             1    2.6206e-10
    {'setosa'    }    {'setosa'    }              1     1.8085e-17     1.9639e-24    1.8085e-17             1             1

PosteriorMisclassCost の列の順序は Mdl.ClassNames 内のクラスの順序に一致します。

入力引数

すべて折りたたむ

完全な学習済み単純ベイズ分類器。fitcnb で学習させた ClassificationNaiveBayes モデルとして指定します。

出力引数

すべて折りたたむ

予測クラス ラベル。categorical ベクトル、文字配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列として返されます。

予測クラス ラベルは以下をもちます。

  • 観測されたクラス ラベル (Mdl.Y) と同じデータ型 (string 配列は文字ベクトルの cell 配列として扱われます)。

  • Mdl.X の行数と等しい長さ。

  • 予測誤分類コスト (Cost) が最低になるクラス。

クラスの事後確率。数値行列として返されます。Posterior は、Mdl.X の行数に等しい行と、学習データ (size(Mdl.ClassNames,1)) の個々のクラスの数に等しい列をもちます。

Posterior(j,k) は、Mdl.X の行 j の観測が与えられたクラス k (クラス Mdl.ClassNames(k) 内) の予測事後確率です。

予測誤分類コスト。数値行列として返されます。Cost は、Mdl.X の行数に等しい行と、学習データ (size(Mdl.ClassNames,1)) の個々のクラスの数に等しい列をもちます。

Cost(j,k) はクラス k (クラス Mdl.ClassNames(k) 内) で予測される Mdl.X の行 j の観測値の予測誤分類コストです。

詳細

すべて折りたたむ

誤分類コスト

"誤分類コスト" は、観測を誤ったクラスにラベル付けする分類器の相対的な重大度です。

誤分類コストには、真の誤分類コストと予測誤分類コストの 2 種類があります。K をクラスの数と仮定します。

  • "真の誤分類コスト" — K 行 K 列の行列で、真のクラスが i の場合、要素 (i,j) は観測値をクラス j 内で予測する誤分類コストを意味します。誤分類コストはプロパティ Mdl.Cost に格納され、計算に使用されます。既定の設定では、ij の場合に Mdl.Cost(i,j) = 1 で、i = j の場合Mdl.Cost(i,j) = 0 です。つまり、正しい分類のコストは 0 で、誤った分類では 1 です。

  • "予測誤分類コスト" — K 次元のベクトルで、ここで、要素 k はクラス事後確率で重み付けされるクラス k に観測値を分類する加重平均誤分類コストです。

    ck=j=1KP^(Y=j|x1,...,xP)Costjk.

    つまり、観測値は最も低い予測の誤分類コストに対応するクラスに分類されます。

事後確率

"事後確率" はデータが与えられる場合に、観測値が特定のクラスに属している確率です。

単純ベイズの場合、与えられた観測値 (x1,...,xP) の分類が k になる事後確率は次のようになります。

P^(Y=k|x1,..,xP)=P(X1,...,XP|y=k)π(Y=k)P(X1,...,XP),

ここで

  • P(X1,...,XP|y=k) は、予測子がクラス k に含まれる場合の条件付き同時密度です。予測子の分布名は Mdl.DistributionNames に格納します。

  • π(Y = k) はクラスの事前確率の分布です。Mdl.Prior は事前分布を保存します。

  • P(X1,..,XP) は予測子の同時密度です。各クラスは離散的なので、次のようになります。P(X1,...,XP)=k=1KP(X1,...,XP|y=k)π(Y=k).

事前確率

クラスの "事前確率" は、母集団内でそのクラスの観測値が出現すると考えられる相対頻度です。

R2014b で導入