ECG-Kit 1.0
(2,134 bytes)
%PREX_COST PRTools example on cost matrices and rejection
%
% Prtools example code to show the use of cost matrices and how
% to introduce a reject class.
help prex_cost
randstate = randreset;
echo on
% Generate a three class problem
randn('state',1);
rand('state',1);
n = 30;
class_labels = char('apple','pear','banana');
a = [gendatb([n,n]); gendatgauss(n,[-2 6])];
laba = genlab([n n n],class_labels);
a = setlabels(a,laba);
% Compute a simple ldc
w = ldc(a);
% Scatterplot and classifier
figure;
gridsize(30);
scatterd(a,'legend');
plotc(w);
% Define a classifier with a new cost matrix,
% which puts a high cost on misclassifying
% pears to apples
cost = [0.0 1.0 1.0;
9.0 0.0 1.0;
1.0 1.0 0.0];
wc = w*classc*costm([],cost,class_labels);
plotc(wc,'b');
% Define a classifier with a cost matrix where
% an outlier class is introduced. For this an
% extra column in the cost matrix has to be defined.
% Furthermore, the class labels have to be supplied
% to give the new class a name.
cost = [0.0 1.0 1.0 0.2;
9.0 0.0 1.0 0.2;
1.0 1.0 0.0 0.2];
class_labels = char('apple','pear','banana','reject');
wr = w*classc*costm([],cost,class_labels);
plotc(wr,'--')
echo off
randreset(randstate);
disp(' ')
disp(' The black decision boundary shows the standard ldc classifier');
disp(' for this data. When the misclassification cost of a pear to an');
disp(' apple is increased, we obtain the blue classifier. When on top');
disp(' of that a rejection class is introduced, we get the blue dashed');
disp(' classifier. In that case, all objects between the dashed lines');
disp(' are rejected.');
fprintf('\n');
fprintf(' Cost of basic classifier = %4.2f\n',...
a*w*testcost([],cost,class_labels));
fprintf(' Cost of cost classifier = %4.2f\n',...
a*wc*testcost([],cost,class_labels));
fprintf(' Cost of reject classifier = %4.2f\n',...
a*wr*testcost([],cost,class_labels));