margin
単純ベイズ分類器の分類マージン
説明
は、table m
= margin(Mdl
,tbl
,ResponseVarName
)tbl
に含まれている予測子データと tbl.ResponseVarName
に含まれているクラス ラベルを使用して、学習済みの単純ベイズ分類器 Mdl
の分類マージン (m
) を返します。
例
単純ベイズ分類器のテスト標本分類マージンの推定
単純ベイズ分類器のテスト標本分類マージンを推定します。観測マージンは、観測された真のクラスのスコアから、該当するクラスのすべてのスコアの中で最大の偽のクラスのスコアを差し引いたものです。
fisheriris
データ セットを読み込みます。150 本のアヤメについて 4 つの花弁の測定値が含まれる数値行列 X
を作成します。対応するアヤメの種類が含まれる文字ベクトルの cell 配列 Y
を作成します。
load fisheriris X = meas; Y = species; rng('default') % for reproducibility
Y
のクラス情報を使用して、観測値を階層的に学習セットとテスト セットに無作為に分割します。テスト用の 30% のホールドアウト標本を指定します。
cv = cvpartition(Y,'HoldOut',0.30);
学習インデックスとテスト インデックスを抽出します。
trainInds = training(cv); testInds = test(cv);
学習データ セットとテスト データ セットを指定します。
XTrain = X(trainInds,:); YTrain = Y(trainInds); XTest = X(testInds,:); YTest = Y(testInds);
予測子 XTrain
とクラス ラベル YTrain
を使用して、単純ベイズ分類器に学習させます。クラス名を指定することが推奨されます。fitcnb
は、各予測子が条件付き正規分布に従うと仮定しています。
Mdl = fitcnb(XTrain,YTrain,'ClassNames',{'setosa','versicolor','virginica'})
Mdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 105 DistributionNames: {'normal' 'normal' 'normal' 'normal'} DistributionParameters: {3x4 cell}
Mdl
は学習させた ClassificationNaiveBayes
分類器です。
テスト標本分類マージンを推定します。
m = margin(Mdl,XTest,YTest); median(m)
ans = 1.0000
テスト標本分類マージンのヒストグラムを表示します。
histogram(m,length(unique(m)),'Normalization','probability') xlabel('Test Sample Margins') ylabel('Probability') title('Probability Distribution of the Test Sample Margins')
分類器のマージンは比較的大きいことが推奨されます。
テスト標本マージンの検査による単純ベイズ分類器の特徴量の選択
複数のモデルによるテスト標本マージンを比較することにより、特徴選択を実行します。この比較のみに基づくと、マージンが最大である分類器が最良のモデルです。
fisheriris
データ セットを読み込みます。予測子 X
とクラス ラベル Y
を指定します。
load fisheriris X = meas; Y = species; rng('default') % for reproducibility
Y
のクラス情報を使用して、観測値を階層的に学習セットとテスト セットに無作為に分割します。テスト用の 30% のホールドアウト標本を指定します。cvPartition
によりデータ セットの分割が定義されます。
cv = cvpartition(Y,'Holdout',0.30);
学習インデックスとテスト インデックスを抽出します。
trainInds = training(cv); testInds = test(cv);
学習データ セットとテスト データ セットを指定します。
XTrain = X(trainInds,:); YTrain = Y(trainInds); XTest = X(testInds,:); YTest = Y(testInds);
次の 2 つのデータ セットを定義します。
fullX
にはすべての予測子が含まれます。partX
には最後の 2 つの予測子が含まれます。
fullX = XTrain; partX = XTrain(:,3:4);
各予測子セットの単純ベイズ分類器に学習させます。
fullMdl = fitcnb(fullX,YTrain); partMdl = fitcnb(partX,YTrain);
fullMdl
および partMdl
は学習済みの ClassificationNaiveBayes
分類器です。
分類器ごとにテスト標本マージンを推定します。
fullM = margin(fullMdl,XTest,YTest); median(fullM)
ans = 1.0000
partM = margin(partMdl,XTest(:,3:4),YTest); median(partM)
ans = 1.0000
箱ひげ図を使用してモデルごとのマージンの分布を表示します。
boxplot([fullM partM],'Labels',{'All Predictors','Two Predictors'}) ylim([0.98 1.01]) % Modify the y-axis limits to see the boxes title('Boxplots of Test Sample Margins')
fullMdl
(すべての予測子のモデル) および partMdl
(2 つの予測子のモデル) のマージンは、同じ中央値で同様の分布を示しています。partMdl
では複雑度が低減されますが、外れ値が存在しています。
入力引数
Mdl
— 単純ベイズ分類モデル
ClassificationNaiveBayes
モデル オブジェクト | CompactClassificationNaiveBayes
モデル オブジェクト
単純ベイズ分類モデル。fitcnb
によって返される ClassificationNaiveBayes
モデル オブジェクト、または compact
によって返される CompactClassificationNaiveBayes
モデル オブジェクトとして指定します。
tbl
— 標本データ
テーブル
モデルを学習させるために使用する標本データ。テーブルとして指定します。tbl
の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。tbl
には、Mdl
の学習を行うために使用したすべての予測子が含まれていなければなりません。文字ベクトルの cell 配列ではない cell 配列と複数列の変数は使用できません。必要に応じて、tbl
に応答変数用および観測値の重み用の追加列を含めることができます。
テーブルに格納されている標本データを使用して Mdl
の学習を行った場合、margin
の入力データもテーブルに格納されていなければなりません。
ResponseVarName
— 応答変数名
tbl
内の変数の名前
応答変数の名前。tbl
内の変数の名前で指定します。
ResponseVarName
には文字ベクトルまたは string スカラーを指定しなければなりません。たとえば、応答変数 y
が tbl.y
として格納されている場合、'y'
として指定します。それ以外の場合、tbl
の列は y
を含めてすべて予測子として扱われます。
Mdl
を学習させるために使用した応答変数が tbl
に含まれている場合、ResponseVarName
を指定する必要はありません。
応答変数は、categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列でなければなりません。応答変数が文字配列の場合、各要素は配列の 1 つの行に対応しなければなりません。
データ型: char
| string
X
— 予測子データ
数値行列
予測子データ。数値行列として指定します。
X
の各行は 1 つの観測値 ("インスタンス" や "例" とも呼ばれます) に対応し、各列は 1 つの変数 ("特徴" とも呼ばれます) に対応します。X
の列内の変数は、分類器 Mdl
に学習させた変数と同じでなければなりません。
Y
の長さと X
の行数は等しくなければなりません。
データ型: double
| single
Y
— クラス ラベル
categorical 配列 | 文字配列 | string 配列 | logical ベクトル | 数値ベクトル | 文字ベクトルの cell 配列
詳細
分類エッジ
"分類エッジ" は、分類マージンの加重平均です。
重みを指定すると、この重みは正規化され、各クラスの事前確率の合計になります。正規化された重みを使用して、加重平均が計算されます。
複数の分類器を選択して特徴選択などのタスクを実行する場合は、最も高いエッジが得られる分類器を選択します。
分類マージン
各観測値の "分類マージン" は、真のクラスのスコアと偽のクラスの最大スコアの差です。マージンは分類の信頼尺度となります。つまり、複数の分類器がある場合、(同じスケールで) より大きいマージンが得られる分類器の方が優れています。
事後確率
"事後確率" はデータが与えられる場合に、観測値が特定のクラスに属している確率です。
単純ベイズの場合、与えられた観測値 (x1,...,xP) の分類が k になる事後確率は次のようになります。
ここで
は、予測子がクラス k に含まれる場合の条件付き同時密度です。予測子の分布名は
Mdl.DistributionNames
に格納します。π(Y = k) はクラスの事前確率の分布です。
Mdl.Prior
は事前分布を保存します。は予測子の同時密度です。各クラスは離散的なので、次のようになります。
事前確率
クラスの "事前確率" は、母集団内でそのクラスの観測値が出現すると考えられる相対頻度です。
スコア
単純ベイズの "スコア" は観測が与えられる場合のクラスの事後確率です。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
この関数は、tall 配列を完全にサポートします。詳細は、tall 配列を参照してください。
バージョン履歴
R2014b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)