ens = fitensemble(X,Y,method,nlearn,learners) は、データへの応答を予測するアンサンブル モデルを作成します。アンサンブルは、学習者にリストされたモデルで構成されます。
前編
prior
クラス ラベルのアルファベット順に使用する必要があります。
したがって、ラベルが['A','B']
の場合は'prior',[P(A) P(B)]
、
または、ラベルが['true','false']
の場合は'prior',[P(false) P(true)]
、
または、ラベルが[-1 10]
の場合は、を使用します'prior',[P(-1) P(10)]
。
第二部
については、このオプションを使用して、データ内のより少ないクラスをclassnames
呼び出すことができます。fitensemble
あなたが4つのクラスを持っていると想像してA,B,C,D
ください。あなたY
は次のようになります:
Y = [A;A;B;D;B;A;C;A;A;A;D, ... ];
2 つのクラスだけが必要な場合は、次のように記述'classnames',['A';'B'],
できます。fitensemble
これは と同じになります'classnames',['B';'A'],
。
これが遅い答えであることは知っています。役に立てば幸いです。
例
setosa',
3 つのクラス ( versicolor ,
virginica`)を持つ「fisheriris」データベースを使用しました。
150
ケースと各クラスがあるため50
、データをランダム化し、100
サンプルを選択しました。
load fisheriris
rng(12);
idx = randperm(size(meas,1));
meas = meas(idx,:);
species = species(idx,:);
meas = meas(1 : 100,:);
species = species(1 : 100,:);
trueprior = [ sum(strcmp(species,'setosa')),...
sum(strcmp(species,'versicolor')),...
sum(strcmp(species,'virginica'))] / 100;
はtrueprior = [0.32,0.30,0.38]
、真の事前確率を示しています。
次のコードではfitensembles
、最初の 1 つをデフォルト オプションでトレーニングしたため、事前確率はempirical
(と同じtrueprior
です); 2 番目のものは、拳と同じ結果になるpprior
set toでトレーニングされます (クラス ラベルのアルファベット順であるため)。3 つ目は、アルファベット順ではない順序でトレーニングされ、最初の 2 つとは異なる結果を示しています。trueprior
trueprior
ada1 = fitensemble(meas,species,'AdaBoostM2',20,'tree');
subplot(311)
plot(resubLoss(ada1,'mode','individual'));
title('Resubstitution error for default prior (empirical)');
ada2 = fitensemble(meas,species,'AdaBoostM2',20,'tree','prior',trueprior);
subplot(312)
plot(resubLoss(ada2,'mode','individual'));
title('Resubstitution error for prior with alphabetical order of class labels');
ada3 = fitensemble(meas,species,'AdaBoostM2',20,'tree','prior',trueprior(end:-1:1));
subplot(313)
plot(resubLoss(ada3,'mode','individual'));
title('Resubstitution error for prior with random order');
オプションfitensemble
を使用して2つのクラスのみでトレーニングも行いましたclassnames
ada4 = fitensemble(meas,species,'AdaBoostM1',20,'tree','classnames',...
{'versicolor','virginica'});
AdaBoosM1
2 つ以上のクラスをサポートしない証明として、ここでは 2 つのクラスのみで問題なく機能します。