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 番目のものは、拳と同じ結果になるppriorset toでトレーニングされます (クラス ラベルのアルファベット順であるため)。3 つ目は、アルファベット順ではない順序でトレーニングされ、最初の 2 つとは異なる結果を示しています。truepriortrueprior
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'});
AdaBoosM12 つ以上のクラスをサポートしない証明として、ここでは 2 つのクラスのみで問題なく機能します。