Contents

Description of demo_multiclass_ECOC.m

Demonstration of multiclass classification task using error-correcting codes where a binaryclass subclassifier is trained for each bit position unique code representation of each class.

clear all
close all
generateData_4grid

usage of ECOC using 1-vs-all coding matrix

options_ec1 = [];
options_ec1.codeDesign = 'ova';
options_ec1.decodeDesign = 'hm';
options_ec1.subModel = @ml_binaryclass_logistic;
model_ec1 = ml_multiclass_ECOC(Xtrain, ytrain, options_ec1);
yhat_ec1 = model_ec1.predict(model_ec1, Xtest);
testError_ec1 = mean(yhat_ec1 ~= ytest);
fprintf('Averaged misclassification test error with %s is: %.3f\n', ...
        model_ec1.name, testError_ec1);
figure;
plotClassifier(Xtrain, ytrain, model_ec1);
Averaged misclassification test error with Classification using Error-Correcting Output Codes is: 0.262

usage of ECOC using 1-vs-1 coding matrix

options_ec2 = [];
options_ec2.codeDesign = 'ovo';
options_ec2.decodeDesign = 'hm';
options_ec2.subModel = @ml_binaryclass_logistic;
model_ec2 = ml_multiclass_ECOC(Xtrain, ytrain, options_ec2);
yhat_ec2 = model_ec2.predict(model_ec2, Xtest);
testError_ec2 = mean(yhat_ec2 ~= ytest);
fprintf('Averaged misclassification test error with %s is: %.3f\n', ...
        model_ec2.name, testError_ec2);
figure;
plotClassifier(Xtrain, ytrain, model_ec2);
Averaged misclassification test error with Classification using Error-Correcting Output Codes is: 0.076

usage of ECOC using exhaustive coding matrix

options_ec3 = [];
options_ec3.codeDesign = 'exh';
options_ec3.decodeDesign = 'hm';
options_ec3.subModel = @ml_binaryclass_logistic;
model_ec3 = ml_multiclass_ECOC(Xtrain, ytrain, options_ec3);
yhat_ec3 = model_ec3.predict(model_ec3, Xtest);
testError_ec3 = mean(yhat_ec3 ~= ytest);
fprintf('Averaged misclassification test error with %s is: %.3f\n', ...
        model_ec3.name, testError_ec3);
figure;
plotClassifier(Xtrain, ytrain, model_ec3);
Averaged misclassification test error with Classification using Error-Correcting Output Codes is: 0.156

usage of ECOC using random coding matrix

options_ec4 = [];
options_ec4.codeDesign = 'rnd';
options_ec4.decodeDesign = 'hm';
options_ec4.subModel = @ml_binaryclass_logistic;
model_ec4 = ml_multiclass_ECOC(Xtrain, ytrain, options_ec4);
yhat_ec4 = model_ec4.predict(model_ec4, Xtest);
testError_ec4 = mean(yhat_ec4 ~= ytest);
fprintf('Averaged misclassification test error with %s is: %.3f\n', ...
        model_ec4.name, testError_ec4);
figure;
plotClassifier(Xtrain, ytrain, model_ec4);
Averaged misclassification test error with Classification using Error-Correcting Output Codes is: 0.164