我一直在尝试使用随机生成的不平衡数据集测试 matlab 的集成方法,无论我设置什么先验/成本/权重参数,该方法都不会预测接近标签比率。
下面是我做的测试的一个例子。
prob = 0.9; %set label ratio to 90% 1 and 10% 0
y = (rand(100,1) < prob);
X = rand(100,3); %generate random training data with three features
X_test = rand(100,3); %generate random test data
%A few parameter sets I've tested
B = TreeBagger(100,X,y);
B2 = TreeBagger(100,X,y,'Prior','Empirical');
B3 = TreeBagger(100,X,y,'Cost',[0,9;1,0]);
B4 = TreeBagger(100,X,y,'Cost',[0,1;9,0]);
B5 = fitensemble(X,y,'RUSBoost', 20, 'Tree', 'Prior', 'Empirical');
在这里,我尝试在随机测试数据上预测训练有素的分类器。我的假设是,由于分类器是在随机数据上训练的,如果考虑到先验,它应该平均预测接近数据集比率(1/9)。但是每个分类器都预测 98-100% 支持“1”,而不是我正在寻找的 ~90%。
l1 = predict(B,X_test);
l2 = predict(B2,X_test);
l3 = predict(B3,X_test);
l4 = predict(B4,X_test);
l5 = predict(B5,X_test);
如何让集成方法考虑先验?还是我有根本的误解?