exponenta event banner

Внедрение инкрементного обучения для линейной регрессии с использованием краткого рабочего процесса

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

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

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

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

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

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

Mdl = incrementalRegressionLinear()
Mdl = 
  incrementalRegressionLinear

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


  Properties, Methods

Mdl.EstimationPeriod
ans = 1000

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

Mdl должны соответствовать данным, прежде чем их можно будет использовать для выполнения любых других операций. Программное обеспечение устанавливает период оценки равным 1000, поскольку половина ширины полосы нечувствительности к эпсилону Epsilon неизвестно. Можно задать Epsilon к положительному скаляру с плавающей запятой с помощью 'Epsilon' аргумент пары имя-значение. В результате этого действия период оценки по умолчанию равен 0.

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

Загрузите набор данных руки робота.

load robotarm

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

Внедрение инкрементного обучения

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

  • Обработка 50 наблюдений для моделирования потока данных.

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

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

% Preallocation
n = numel(ytrain);
numObsPerChunk = 50;
nchunk = floor(n/numObsPerChunk);
ei = 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,Xtrain(idx,:),ytrain(idx));
    ei{j,:} = Mdl.Metrics{"EpsilonInsensitiveLoss",:};
    beta1(j + 1) = Mdl.Beta(1);
end

IncrementalMdl является incrementalRegressionLinear объект модели обучен всем данным в потоке. Во время инкрементного обучения и после разогрева модели 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(ei.Variables);
xlim([0 nchunk]);
ylabel('Epsilon Insensitive Loss')
xline(Mdl.EstimationPeriod/numObsPerChunk,'r-.');
xline((Mdl.EstimationPeriod + Mdl.MetricsWarmupPeriod)/numObsPerChunk,'g-.');
legend(h,ei.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 выполняет следующее:

  • После периода оценки (первые 20 итераций) вписать β1 во все инкрементные итерации обучения.

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

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

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

См. также

Объекты

Функции

Связанные темы