Реализуйте пошаговое обучение для классификации Используя сжатый рабочий процесс

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

  1. Создайте модель пошагового обучения по умолчанию для бинарной классификации.

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

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

Несмотря на то, что этот пример обрабатывает приложение как бинарную проблему классификации, можно реализовать пошаговое обучение мультикласса с помощью наивного алгоритма Бейеса вместо этого следующим этот тот же рабочий процесс. Смотрите incrementalClassificationNaiveBayes объект.

Создайте объект модели по умолчанию

Создайте модель пошагового обучения по умолчанию для бинарной классификации.

Mdl = incrementalClassificationLinear()
Mdl = 
  incrementalClassificationLinear

            IsWarm: 0
           Metrics: [1x2 table]
        ClassNames: [1x0 double]
    ScoreTransform: 'none'
              Beta: [0x1 double]
              Bias: 0
           Learner: 'svm'


  Properties, Methods

Mdl incrementalClassificationLinear объект модели. Все его свойства только для чтения.

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

Загрузите и предварительно обработайте данные

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

load humanactivity
n = numel(actid);
rng(1); % For reproducibility
idx = randsample(n,n);
X = feat(idx,:);
Y = actid(idx);

Для получения дополнительной информации на наборе данных, введите Description в командной строке.

Ответы могут быть одним из пяти классов: Нахождение, Положение, Обход, Выполнение или Танец. Разделите пополам ответ путем идентификации, перемещается ли предмет (actid > 2).

Y = Y > 2;

Реализуйте пошаговое обучение

Используйте сжатый рабочий процесс, чтобы обновить метрики производительности модели и подбирать инкрементную модель к обучающим данным путем вызова updateMetricsAndFit функция. В каждой итерации:

  • Процесс 50 наблюдений, чтобы симулировать поток данных.

  • Перезапишите предыдущую инкрементную модель с новой, адаптированной к входящему наблюдению.

  • Сохраните совокупные метрики, метрики окна и первый коэффициент β1 чтобы видеть, как они развиваются во время пошагового обучения.

% Preallocation
numObsPerChunk = 50;
nchunk = floor(n/numObsPerChunk);
ce = array2table(zeros(nchunk,2),'VariableNames',["Cumulative" "Window"]);
beta1 = zeros(nchunk,1);    

% Incremental fitting
for j = 1:nchunk
    ibegin = min(n,numObsPerChunk*(j-1) + 1);
    iend   = min(n,numObsPerChunk*j);
    idx = ibegin:iend;    
    Mdl = updateMetricsAndFit(Mdl,X(idx,:),Y(idx));
    ce{j,:} = Mdl.Metrics{"ClassificationError",:};
    beta1(j + 1) = Mdl.Beta(1);
end

IncrementalMdl incrementalClassificationLinear объект модели, обученный на всех данных в потоке. Во время пошагового обучения и после того, как модель подогревается, updateMetricsAndFit проверяет эффективность модели на входящем наблюдении, и затем подбирает модель к тому наблюдению.

Смотрите эволюцию модели

Чтобы видеть, как показатели производительности и β1 развитый во время обучения, постройте их на отдельных подграфиках.

figure;
subplot(2,1,1)
plot(beta1)
ylabel('\beta_1')
xlim([0 nchunk]);
xline(Mdl.EstimationPeriod/numObsPerChunk,'r-.');
subplot(2,1,2)
h = plot(ce.Variables);
xlim([0 nchunk]);
ylabel('Classification Error')
xline(Mdl.EstimationPeriod/numObsPerChunk,'r-.');
xline((Mdl.EstimationPeriod + Mdl.MetricsWarmupPeriod)/numObsPerChunk,'g-.');
legend(h,ce.Properties.VariableNames)
xlabel('Iteration')

Figure contains 2 axes. Axes 1 contains 2 objects of type line, constantline. Axes 2 contains 4 objects of type line, constantline. These objects represent Cumulative, Window.

График предлагает тот updateMetricsAndFit делает следующее:

  • Подгонка β1 во время всех итераций пошагового обучения.

  • Вычислите показатели производительности после метрического периода прогрева только.

  • Вычислите совокупные метрики во время каждой итерации.

  • Вычислите метрики окна после обработки 200 наблюдений (4 итерации).

Смотрите также

Объекты

Функции

Похожие темы