logp
説明
例
ストリーミング データの外れ値の検出
fitcnb
を使用して単純ベイズ分類モデルに学習させ、それをインクリメンタル学習器に変換してから、そのインクリメンタル モデルを使用してストリーミング データの外れ値を検出します。
データの読み込みと前処理
人の行動のデータ セットを読み込みます。データをランダムにシャッフルします。
load humanactivity rng(1); % For reproducibility n = numel(actid); idx = randsample(n,n); X = feat(idx,:); Y = actid(idx);
データ セットの詳細については、コマンド ラインで Description
を入力してください。
単純ベイズ分類モデルの学習
単純ベイズ分類モデルをデータの約 25% の無作為標本に当てはめます。
idxtt = randsample([true false false false],n,true); TTMdl = fitcnb(X(idxtt,:),Y(idxtt))
TTMdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' NumObservations: 6167 DistributionNames: {1x60 cell} DistributionParameters: {5x60 cell}
TTMdl
は、従来式の学習済みモデルを表す ClassificationNaiveBayes
モデル オブジェクトです。
学習済みモデルの変換
従来式の学習済み分類モデルをインクリメンタル学習用の単純ベイズ分類モデルに変換します。
IncrementalMdl = incrementalLearner(TTMdl)
IncrementalMdl = incrementalClassificationNaiveBayes IsWarm: 1 Metrics: [1x2 table] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' DistributionNames: {1x60 cell} DistributionParameters: {5x60 cell}
IncrementalMdl
は incrementalClassificationNaiveBayes
オブジェクトです。IncrementalMdl
はインクリメンタル学習用の単純ベイズ分類モデルを表し、パラメーター値は TTMdl
のパラメーターと同じです。
外れ値の検出
従来式の学習済みモデルと学習データを使用して、外れ値の条件なし密度のしきい値を調べます。外れ値は、密度がしきい値より小さいストリーミング データの観測値です。
ttlp = logp(TTMdl,X(idxtt,:)); [~,lower] = isoutlier(ttlp)
lower = -336.0424
残りのデータでこれらの外れ値を検出します。観測値を一度に 1 個ずつ処理して、データ ストリームをシミュレートします。各反復で logp
を呼び出して観測値の対数条件なし確率密度を計算し、それぞれの値を保存します。
% Preallocation idxil = ~idxtt; nil = sum(idxil); numObsPerChunk = 1; nchunk = floor(nil/numObsPerChunk); lp = zeros(nchunk,1); iso = false(nchunk,1); Xil = X(idxil,:); Yil = Y(idxil); % Incremental processing for j = 1:nchunk ibegin = min(nil,numObsPerChunk*(j-1) + 1); iend = min(nil,numObsPerChunk*j); idx = ibegin:iend; lp(j) = logp(IncrementalMdl,Xil(idx,:)); iso(j) = lp(j) < lower; end
ストリーミング データの対数条件なし確率密度をプロットします。外れ値を特定します。
figure; h1 = plot(lp); hold on x = 1:nchunk; h2 = plot(x(iso),lp(iso),'r*'); h3 = yline(lower,'g--'); xlim([0 nchunk]); ylabel('Unconditional Density') xlabel('Iteration') legend([h1 h2 h3],["Log unconditional probabilities" "Outliers" "Threshold"]) hold off
入力引数
Mdl
— インクリメンタル学習用の単純ベイズ分類モデル
incrementalClassificationNaiveBayes
モデル オブジェクト
インクリメンタル学習用の単純ベイズ分類モデル。incrementalClassificationNaiveBayes
モデル オブジェクトとして指定します。Mdl
は、直接作成することも、サポートされている従来式の学習済み機械学習モデルを関数 incrementalLearner
によって変換して作成することもできます。詳細については、対応するリファレンス ページを参照してください。
Mdl
は、観測値のバッチで対数条件付き確率密度を計算するように構成しなければなりません。
Mdl
が従来式の学習済みモデルから変換される場合、いかなる修正も行うことなく対数条件付き確率を計算できます。それ以外の場合、
Mdl.DistributionParameters
は、列数がMdl.NumPredictors
> 0 で行数が 1 以上の cell 行列でなければなりません。各行はMdl.ClassNames
の各クラス名に対応します。
X
— 予測子データのバッチ
浮動小数点行列
対数条件付き確率密度を計算するための予測子データのバッチ。n 行 Mdl.NumPredictors
列の浮動小数点行列として指定します。
j
= 1 ~ n のそれぞれについて、X(
に j
,:)NaN
が少なくとも 1 つ含まれていると、lp(
は j
)NaN
になります。
データ型: single
| double
出力引数
詳細
条件なし確率密度
予測子の "条件なし確率密度" はクラスで重視されない密度の分布です。
つまり、条件なし確率密度は次のようになります。
ここで、π(Y = k) はクラスの事前確率です。クラス (P(X1,..,XP|y = k)) に対するデータの条件付き分布およびクラスの事前確率分布が、学習オプションになります (つまり、分類器を学習させるときにそれらを指定します)。
事前確率
クラスの "事前確率" は、母集団内でそのクラスの観測値が出現すると考えられる相対頻度です。
バージョン履歴
R2021a で導入
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)