Классификация случайных подпространств

Этот пример показывает, как использовать случайный ансамбль подпространства для повышения точности классификации. Это также показывает, как использовать перекрестную валидацию для определения хороших параметров как для слабого шаблона учащегося, так и для ансамбля.

Загрузите данные

Загрузите ionosphere данные. Эти данные имеют 351 двоичный ответ на 34 предиктора.

load ionosphere;
[N,D] = size(X)
N = 351
D = 34
resp = unique(Y)
resp = 2x1 cell
    {'b'}
    {'g'}

Выберите количество ближайших соседей

Найдите хороший выбор для kколичество ближайших соседей в классификаторе путем перекрестной валидации. Выберите количество соседей, примерно равномерно разнесенных по логарифмической шкале.

rng(8000,'twister') % for reproducibility
K = round(logspace(0,log10(N),10)); % number of neighbors 
cvloss = zeros(numel(K),1);
for k=1:numel(K)
    knn = fitcknn(X,Y,...
        'NumNeighbors',K(k),'CrossVal','On');
    cvloss(k) = kfoldLoss(knn);
end
figure; % Plot the accuracy versus k
semilogx(K,cvloss);
xlabel('Number of nearest neighbors');
ylabel('10 fold classification error');
title('k-NN classification');

Figure contains an axes. The axes with title k-NN classification contains an object of type line.

Самая низкая ошибка перекрестной проверки возникает для k = 2.

Создайте ансамбли

Создайте ансамбли для 2- ближайшая соседняя классификация с различным количеством размерностей и исследование перекрестно подтвержденных потерь полученных ансамблей.

Этот шаг занимает много времени. Чтобы отслеживать прогресс, печатайте сообщение по мере завершения каждой размерности.

NPredToSample = round(linspace(1,D,10)); % linear spacing of dimensions
cvloss = zeros(numel(NPredToSample),1);
learner = templateKNN('NumNeighbors',2);
for npred=1:numel(NPredToSample)
   subspace = fitcensemble(X,Y,'Method','Subspace','Learners',learner, ...
       'NPredToSample',NPredToSample(npred),'CrossVal','On');
   cvloss(npred) = kfoldLoss(subspace);
   fprintf('Random Subspace %i done.\n',npred);
end
Random Subspace 1 done.
Random Subspace 2 done.
Random Subspace 3 done.
Random Subspace 4 done.
Random Subspace 5 done.
Random Subspace 6 done.
Random Subspace 7 done.
Random Subspace 8 done.
Random Subspace 9 done.
Random Subspace 10 done.
figure; % plot the accuracy versus dimension
plot(NPredToSample,cvloss);
xlabel('Number of predictors selected at random');
ylabel('10 fold classification error');
title('k-NN classification with Random Subspace');

Figure contains an axes. The axes with title k-NN classification with Random Subspace contains an object of type line.

Ансамбли, которые используют пять и восемь предикторов на каждого учащегося, имеют самую низкую перекрестную ошибку. Вероятность ошибок для этих ансамблей составляет около 0,06, в то время как другие ансамбли имеют перекрестно подтвержденные частоты ошибок, которые составляют приблизительно 0,1 или более.

Найти хороший размер ансамбля

Найти наименьшее количество учащихся ансамбля, которые все еще дают хорошую классификацию.

ens = fitcensemble(X,Y,'Method','Subspace','Learners',learner, ...
       'NPredToSample',5,'CrossVal','on');
figure; % Plot the accuracy versus number in ensemble
plot(kfoldLoss(ens,'Mode','Cumulative'))
xlabel('Number of learners in ensemble');
ylabel('10 fold classification error');
title('k-NN classification with Random Subspace');

Figure contains an axes. The axes with title k-NN classification with Random Subspace contains an object of type line.

В ансамбле, в котором обучается более 50 человек, как представляется, нет никаких преимуществ. Вполне возможно, что 25 учащихся дают хорошие предсказания.

Создайте финальный ансамбль

Создайте финальный ансамбль с 50 учениками. Уплотните ансамбль и посмотрите, сохраняет ли компактная версия заметное количество памяти.

ens = fitcensemble(X,Y,'Method','Subspace','NumLearningCycles',50,...
    'Learners',learner,'NPredToSample',5);
cens = compact(ens);
s1 = whos('ens');
s2 = whos('cens');
[s1.bytes s2.bytes] % si.bytes = size in bytes
ans = 1×2

     1748467     1518820

Компактный ансамбль примерно на 10% меньше полного ансамбля. Оба дают одинаковые предсказания.

См. также

| | | |

Похожие темы