incrementalLearner

Преобразуйте линейную модель для бинарной классификации инкрементному ученику

Описание

пример

IncrementalMdl = incrementalLearner(Mdl) возвращает бинарную классификацию линейная модель для пошагового обучения, IncrementalMdl, с помощью гиперпараметров и коэффициентов традиционно обученной линейной модели для бинарной классификации, Mdl. Поскольку его значения свойств отражают знание, полученное от Mdl, IncrementalMdl может предсказать метки, данные новые наблюдения, и это - warm, означая, что его прогнозирующая эффективность прослежена.

пример

IncrementalMdl = incrementalLearner(Mdl,Name,Value) дополнительные опции использования заданы одним или несколькими аргументами пары "имя-значение". Некоторые опции требуют, чтобы вы обучили IncrementalMdl прежде чем его прогнозирующая эффективность прослежена. Например, 'MetricsWarmupPeriod',50,'MetricsWindowSize',100 задает предварительный инкрементный период подготовки 50 наблюдений, прежде чем показатели производительности будут прослежены, и задает обработку 100 наблюдений прежде, чем обновить показатели производительности.

Примеры

свернуть все

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

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

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

load humanactivity

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

Ответы могут быть одним из пяти классов: Sitting, Standing, Walking, Running, или Dancing. Разделите пополам ответ путем идентификации, перемещается ли предмет (actid > 2).

Y = actid > 2;

Обучите линейную модель классификации

Подбирайте линейную модель классификации к целому набору данных.

TTMdl = fitclinear(feat,Y)
TTMdl = 
  ClassificationLinear
      ResponseName: 'Y'
        ClassNames: [0 1]
    ScoreTransform: 'none'
              Beta: [60×1 double]
              Bias: -0.2005
            Lambda: 4.1537e-05
           Learner: 'svm'


  Properties, Methods

TTMdl ClassificationLinear объект модели, представляющий традиционно обученную линейную модель классификации.

Преобразуйте обученную модель

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

IncrementalMdl = incrementalLearner(TTMdl)
IncrementalMdl = 
  incrementalClassificationLinear

            IsWarm: 1
           Metrics: [1×2 table]
        ClassNames: [0 1]
    ScoreTransform: 'none'
              Beta: [60×1 double]
              Bias: -0.2005
           Learner: 'svm'


  Properties, Methods

IncrementalMdl incrementalClassificationLinear объект модели, подготовленный к пошаговому обучению с помощью SVM.

  • incrementalLearner функция Инициализирует инкрементного ученика путем передачи изученных коэффициентов ему, наряду с другой информацией TTMdl извлеченный из обучающих данных.

  • IncrementalMdl является теплым (IsWarm 1), что означает, что функции пошагового обучения могут начать отслеживать показатели производительности.

  • incrementalLearner функция обучает модель с помощью адаптивного инвариантного к масштабу решателя, тогда как fitclinear обученный TTMdl использование решателя BFGS.

Предскажите ответы

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

Предскажите классификационные оценки для всех наблюдений с помощью обеих моделей.

[~,ttscores] = predict(TTMdl,feat);
[~,ilscores] = predict(IncrementalMdl,feat);
compareScores = norm(ttscores(:,1) - ilscores(:,1))
compareScores = 0

Различие между баллами, сгенерированными моделями, 0.

Если вы обучаете линейную модель классификации использование SGD или решателя ASGD, incrementalLearner сохраняет решатель, линейный тип модели и сопоставленные гиперзначения параметров, когда это преобразует линейную модель классификации.

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

load humanactivity

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

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

Y = actid > 2;

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

n = numel(Y);
rng(1) % For reproducibility
cvp = cvpartition(n,'Holdout',0.5);
idxtt = training(cvp);
idxil = test(cvp);

% First half of data 
Xtt = feat(idxtt,:);
Ytt = Y(idxtt);

% Second half of data
Xil = feat(idxil,:);
Yil = Y(idxil);

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

Lambda = logspace(-6,-0.5,11);

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

Xtt = (Xtt - mean(Xtt))./std(Xtt);

Настройте параметр регуляризации L2 путем применения 5-кратной перекрестной проверки. Задайте стандартный решатель SGD.

TTCVMdl = fitclinear(Xtt,Ytt,'KFold',5,'Learner','logistic',...
    'Solver','sgd','Lambda',Lambda);

TTCVMdl ClassificationPartitionedLinear модель, представляющая эти пять моделей, создала во время перекрестной проверки (см. TTCVMdl.Trained). Процедура перекрестной проверки включает обучение с каждым заданным значением регуляризации.

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

cvloss = kfoldLoss(TTCVMdl)
cvloss = 1×11

    0.0054    0.0039    0.0034    0.0033    0.0030    0.0027    0.0027    0.0031    0.0036    0.0056    0.0077

cvloss содержит демонстрационную тестом потерю классификации для каждого значения регуляризации в Lamba.

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

[~,idxmin] = min(cvloss);
TTMdl = fitclinear(Xtt,Ytt,'Learner','logistic','Solver','sgd',...
    'Lambda',Lambda(idxmin));

TTMdl ClassificationLinear модель.

Преобразуйте традиционно обученную линейную модель классификации в бинарную классификацию линейная модель для пошагового обучения. Задайте стандартный решатель SGD. Подготовьте функции пошагового обучения, чтобы стандартизировать предикторы. Это действие требует начального периода для оценки средних значений предиктора и стандартных отклонений. Задайте период оценки 2000 наблюдения (значением по умолчанию является 1000 когда моменты предиктора требуются).

IncrementalMdl = incrementalLearner(TTMdl,'Standardize',true,'EstimationPeriod',2000);

IncrementalMdl incrementalClassificationLinear объект модели. incrementalLearner передает решатель и силу регуляризации, среди другой информации, усвоенной из учебного TTMdl, к IncrementalMdl.

Подбирайте инкрементную модель к второй половине данных при помощи fit функция. В каждой итерации:

  • Симулируйте поток данных путем обработки 10 наблюдений за один раз.

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

  • Хранилище β1 чтобы видеть, как это развивается во время обучения.

% Preallocation
nil = numel(Yil);
numObsPerChunk = 10;
nchunk = floor(nil/numObsPerChunk);
learnrate = [IncrementalMdl.LearnRate; zeros(nchunk,1)];
beta1 = [IncrementalMdl.Beta(1); zeros(nchunk,1)];

% Incremental fitting
for j = 1:nchunk
    ibegin = min(nil,numObsPerChunk*(j-1) + 1);
    iend   = min(nil,numObsPerChunk*j);
    idx = ibegin:iend;
    IncrementalMdl = fit(IncrementalMdl,Xil(idx,:),Yil(idx));
    beta1(j + 1) = IncrementalMdl.Beta(1);
end

IncrementalMdl incrementalClassificationLinear объект модели, обученный на всех данных в потоке.

График β1 чтобы видеть, как это развилось.

plot(beta1)
ylabel('\beta_1')
xline(IncrementalMdl.EstimationPeriod/numObsPerChunk,'r-.');
xlabel('Iteration')

Поскольку fit не подбирает модель к данным о потоковой передаче в период оценки, β1 является постоянным для первых 200 итераций (2 000 наблюдений). То, β1 изменения резко во время инкрементного подбора кривой.

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

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

load humanactivity

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

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

Y = actid > 2;

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

n = numel(Y);

rng(1) % For reproducibility
cvp = cvpartition(n,'Holdout',0.5);
idxtt = training(cvp);
idxil = test(cvp);
shuffidx = randperm(n);
X = feat(shuffidx,:);
Y = Y(shuffidx);

% First half of data
Xtt = X(idxtt,:);
Ytt = Y(idxtt);

% Second half of data
Xil = X(idxil,:);
Yil = Y(idxil);

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

TTMdl = fitclinear(Xtt,Ytt);

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

  • Период прогрева показателей производительности 2 000 наблюдений

  • Метрический размер окна 500 наблюдений

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

IncrementalMdl = incrementalLearner(TTMdl,'MetricsWarmupPeriod',2000,'MetricsWindowSize',500,...
    'Metrics',["classiferror" "hinge"]);

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

  • Симулируйте поток данных что, обработав фрагмент 20 наблюдений.

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

  • Хранилище β1, совокупные метрики и метрики окна, чтобы видеть, как они развиваются во время пошагового обучения.

% Preallocation
nil = numel(Yil);
numObsPerChunk = 20;
nchunk = ceil(nil/numObsPerChunk);
ce = array2table(zeros(nchunk,2),'VariableNames',["Cumulative" "Window"]);
hinge = array2table(zeros(nchunk,2),'VariableNames',["Cumulative" "Window"]);
beta1 = zeros(nchunk,1);    

% Incremental fitting
for j = 1:nchunk
    ibegin = min(nil,numObsPerChunk*(j-1) + 1);
    iend   = min(nil,numObsPerChunk*j);
    idx = ibegin:iend;    
    IncrementalMdl = updateMetricsAndFit(IncrementalMdl,Xil(idx,:),Yil(idx));
    ce{j,:} = IncrementalMdl.Metrics{"ClassificationError",:};
    hinge{j,:} = IncrementalMdl.Metrics{"HingeLoss",:};
    beta1(j + 1) = IncrementalMdl.Beta(1);
end

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

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

figure;
subplot(3,1,1)
plot(beta1)
ylabel('\beta_1')
xlim([0 nchunk]);
xline(IncrementalMdl.MetricsWarmupPeriod/numObsPerChunk,'r-.');
subplot(3,1,2)
h = plot(ce.Variables);
xlim([0 nchunk]);
ylabel('Classification Error')
xline(IncrementalMdl.MetricsWarmupPeriod/numObsPerChunk,'r-.');
legend(h,ce.Properties.VariableNames,'Location','northwest')
subplot(3,1,3)
h = plot(hinge.Variables);
xlim([0 nchunk]);
ylabel('Hinge Loss')
xline(IncrementalMdl.MetricsWarmupPeriod/numObsPerChunk,'r-.');
legend(h,hinge.Properties.VariableNames,'Location','northwest')
xlabel('Iteration')

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

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

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

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

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

Входные параметры

свернуть все

Традиционно обученная линейная модель для бинарной классификации в виде ClassificationLinear объект модели, возвращенный fitclinear.

Примечание

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

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

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'Solver','scale-invariant','MetricsWindowSize',100 задает адаптивный инвариантный к масштабу решатель для объективной оптимизации и задает обработку 100 наблюдений прежде, чем обновить показатели производительности.
Общие опции

свернуть все

Метод минимизации целевой функции в виде разделенной запятой пары, состоящей из 'Solver' и значение в этой таблице.

ЗначениеОписаниеПримечания
'scale-invariant'

Адаптивный инвариантный к масштабу решатель для пошагового обучения [1]

Этот алгоритм является свободным параметром и может адаптироваться к различиям в шкалах предиктора. Попробуйте этот алгоритм перед использованием SGD или ASGD.
'sgd'Stochastic gradient descent (SGD) [3][2]

Чтобы обучаться эффективно с SGD, стандартизируйте данные и задайте соответствующие значения для гиперпараметров с помощью опций, перечисленных в SGD и Опциях Решателя ASGD.

'asgd'Средний стохастический градиентный спуск (ASGD) [4]Чтобы обучаться эффективно с ASGD, стандартизируйте данные и задайте соответствующие значения для гиперпараметров с помощью опций, перечисленных в SGD и Опциях Решателя ASGD.

Пример: 'Solver','sgd'

Типы данных: char | string

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

Примечание

  • Если Mdl подготовлен к пошаговому обучению (все гиперпараметры, требуемые для обучения, заданы), incrementalLearner силы 'EstimationPeriod' к 0.

  • Если Mdl не подготовлен к пошаговому обучению, incrementalLearner наборы 'EstimationPeriod' к 1000.

Для получения дополнительной информации смотрите Период Оценки.

Пример: 'EstimationPeriod',100

Типы данных: single | double

Отметьте, чтобы стандартизировать данные о предикторе в виде разделенной запятой пары, состоящей из 'Standardize' и значение в этой таблице.

ЗначениеОписание
trueПрограммное обеспечение стандартизирует данные о предикторе. Для получения дополнительной информации смотрите, Стандартизируют Данные.
falseПрограммное обеспечение не стандартизирует данные о предикторе.

Пример: 'Standardize',true

Типы данных: логический

SGD и опции решателя ASGD

свернуть все

Мини-пакетный размер в виде разделенной запятой пары, состоящей из 'BatchSize' и положительное целое число. В каждой итерации во время обучения, incrementalLearner использование min(BatchSize,numObs) наблюдения, чтобы вычислить подградиент, где numObs количество наблюдений в обучающих данных, переданных fit или updateMetricsAndFit.

  • Если Mdl.ModelParameters.Solver 'sgd' или 'asgd', вы не можете установить 'BatchSize'. Вместо этого incrementalLearner наборы 'BatchSize' к Mdl.ModelParameters.BatchSize.

  • В противном случае, BatchSize 10.

Пример: 'BatchSize',1

Типы данных: single | double

Гребень (L 2) сила срока регуляризации в виде разделенной запятой пары, состоящей из 'Lambda' и неотрицательный скаляр.

Когда Mdl.Regularization 'ridge (L2)':

  • Если Mdl.ModelParameters.Solver 'sgd' или 'asgd', вы не можете установить 'Lambda'. Вместо этого incrementalLearner наборы 'Lambda' к Mdl.Lambda.

  • В противном случае, Lambda 1e-5.

Примечание

incrementalLearner не поддерживает регуляризацию лассо. Если Mdl.Regularization 'lasso (L1)', incrementalLearner регуляризация гребня использования и наборы 'Solver' аргумент пары "имя-значение" 'scale-invariant' по умолчанию.

Пример: 'Lambda',0.01

Типы данных: single | double

Скорость обучения в виде разделенной запятой пары, состоящей из 'LearnRate' и 'auto' или положительная скалярная величина. LearnRate управляет размером шага оптимизации путем масштабирования объективного подградиента.

  • Если Mdl.ModelParameters.Solver 'sgd' или 'asgd', вы не можете установить 'LearnRate'. Вместо этого incrementalLearner наборы 'LearnRate' к Mdl.ModelParameters.LearnRate.

  • В противном случае, LearnRate 'auto'.

Для 'auto':

  • Если EstimationPeriod 0, начальной скоростью обучения является 0.7.

  • Если EstimationPeriod> 0 , начальной скоростью обучения является 1/sqrt(1+max(sum(X.^2,obsDim))), где obsDim 1 если наблюдения составляют столбцы данных о предикторе и 2 в противном случае. fit и updateMetricsAndFit установите значение, когда вы передадите данные модели и обучающие данные к любой функции.

Аргумент пары "имя-значение" 'LearnRateSchedule' определяет скорость обучения для последующих циклов изучения.

Пример: 'LearnRate',0.001

Типы данных: single | double | char | string

Расписание скорости обучения в виде разделенной запятой пары, состоящей из 'LearnRateSchedule' и значение в этой таблице, где LearnRate задает начальную скорость обучения ɣ 0.

ЗначениеОписание
'constant'Скоростью обучения является ɣ 0 для всех циклов изучения.
'decaying'

Скорость обучения при изучении цикла t

γt=γ0(1+λγ0t)c.

  • λ является значением Lambda.

  • Если Solver 'sgd', затем c = 1.

  • Если Solver 'asgd', затем c 0.75 [4].

Если Mdl.ModelParameters.Solver 'sgd' или 'asgd', вы не можете установить 'LearnRateSchedule'.

Пример: 'LearnRateSchedule','constant'

Типы данных: char | string

Адаптивные инвариантные к масштабу опции решателя

свернуть все

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

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

Пример: 'Shuffle',false

Типы данных: логический

Опции показателей производительности

свернуть все

Метрики производительности модели, чтобы отследить во время пошагового обучения с updateMetrics или updateMetricsAndFit функция в виде разделенной запятой пары, состоящей из 'Metrics' и встроенное имя функции потерь, представьте вектор в виде строки из имен, указатель на функцию (@metricName), массив структур указателей на функцию или вектор ячейки из имен, указателей на функцию или массивов структур.

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

ИмяОписание
"binodeviance"Биномиальное отклонение
"classiferror"Ошибка классификации
"exponential"Экспоненциал
"hinge"Стержень
"logit"Логистический
"quadratic"Квадратичный

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

Пример: 'Metrics',["classiferror" "hinge"]

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

metric = customMetric(C,S)

  • Выходной аргумент metric n-by-1 числовой вектор, где каждым элементом является потеря соответствующего наблюдения в данных путем обработки функций пошагового обучения во время цикла изучения.

  • Вы задаете имя функции (customMetric).

  • C n-by-2 логическая матрица со строками, указывающими на класс, которому принадлежит соответствующее наблюдение. Порядок следования столбцов соответствует порядку класса в Mdl.ClassNames. Создайте C установкой C (pQ)= 1 , если наблюдение p находится в классе q, для каждого наблюдения в заданных данных. Установите другой элемент в строке p к 0.

  • S n-by-2 числовая матрица предсказанных классификационных оценок. S похоже на score выход predict, где строки соответствуют наблюдениям в данных, и порядок следования столбцов соответствует порядку класса в Mdl.ClassNames. S (pQ) классификационная оценка наблюдения p будучи классифицированным на класс q.

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

Пример: 'Metrics',struct('Metric1',@customMetric1,'Metric2',@customMetric2)

Пример: 'Metrics',{@customMetric1 @customeMetric2 'logit' struct('Metric3',@customMetric3)}

updateMetrics и updateMetricsAndFit сохраните заданные метрики в таблице в свойстве IncrementalMdl.Metrics. Тип данных Metrics определяет имена строки таблицы.

'Metrics' Тип данных значенияОписание Metrics Имя строки свойстваПример
Строка или вектор символовИмя соответствующей встроенной метрикиИмя строки для "classiferror" "ClassificationError"
Массив структурИмя поляИмя строки для struct('Metric1',@customMetric1) "Metric1"
Указатель на функцию, чтобы функционировать сохраненный в программном файлеИмя функцииИмя строки для @customMetric "customMetric"
Анонимная функцияCustomMetric_j, где j метрический j в MetricsИмя строки для @(C,S)customMetric(C,S)... CustomMetric_1

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

Типы данных: char | string | struct | cell | function_handle

Количество наблюдений, инкрементная модель должна быть подходящей к тому, прежде чем это отследит показатели производительности в своем Metrics свойство в виде разделенной запятой пары, состоящей из 'MetricsWarmupPeriod' и неотрицательное целое число. Инкрементная модель является теплой после того, как инкрементные подходящие функции будут соответствовать MetricsWarmupPeriod наблюдения к инкрементной модели (EstimationPeriod + MetricsWarmupPeriod наблюдения).

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

Типы данных: single | double

Количество наблюдений, чтобы использоваться для расчета показателей производительности окна в виде разделенной запятой пары, состоящей из 'MetricsWindowSize' и положительное целое число.

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

Типы данных: single | double

Выходные аргументы

свернуть все

Бинарная классификация линейная модель для пошагового обучения, возвращенного как incrementalClassificationLinear объект модели. IncrementalMdl также сконфигурирован, чтобы сгенерировать предсказания, данные новые данные (см. predict).

Инициализировать IncrementalMdl для пошагового обучения, incrementalLearner передает значения Mdl свойства в этой таблице к конгруэнтным свойствам IncrementalMdl.

СвойствоОписание
BetaЛинейные коэффициенты модели, числовой вектор
BiasПрерывание модели, числовой скаляр
ClassNamesКласс помечает для бинарной классификации, двухэлементного списка
ModelParameters.FitBiasЛинейный флаг включения прерывания модели
LearnerЛинейный тип модели классификации
PriorПредшествующее распределение метки класса, числовой вектор

Больше о

свернуть все

Пошаговое обучение

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

Учитывая входящие наблюдения, модель пошагового обучения обрабатывает данные любым из следующих способов, но обычно этим порядком:

  • Предскажите метки.

  • Измерьте прогнозирующий уровень.

  • Проверяйте на структурные пропуски или дрейфуйте в модели.

  • Подбирайте модель к входящим наблюдениям.

Адаптивный инвариантный к масштабу решатель для пошагового обучения

adaptive scale-invariant solver for incremental learning, введенный в [1], является основанным на градиентном спуске объективным решателем для учебных линейных прогнозных моделей. Решатель является гиперпараметром, свободным, нечувствительным к различиям в шкалах переменного предиктора, и не требует предварительных знаний распределения переменных предикторов. Эти характеристики делают его хорошо подходящий для пошагового обучения.

Стандартный SGD и решатели ASGD чувствительны к отличающимся шкалам среди переменных предикторов, приводящих к моделям, которые могут выполнить плохо. Чтобы достигнуть лучшей точности с помощью SGD и ASGD, можно стандартизировать данные о предикторе и настроить регуляризацию, и параметры скорости обучения могут потребовать настройки. Для традиционного машинного обучения достаточно данных доступно, чтобы включить гиперпараметр, настраивающийся стандартизацией предиктора и перекрестной проверкой. Однако для пошагового обучения, достаточно данных не может быть доступным (например, наблюдения могут быть доступными только по одному), и распределение предикторов может быть неизвестным. Эти характеристики делают настройку параметра и стандартизацию предиктора трудными или невозможными сделать во время пошагового обучения.

Инкрементные подходящие функции для классификации fit и updateMetricsAndFit используйте более агрессивную версию ScInOL2 алгоритма.

Алгоритмы

свернуть все

Период оценки

В период оценки, инкрементные подходящие функции fit и updateMetricsAndFit используйте первый входящий EstimationPeriod наблюдения, чтобы оценить (настраивают) гиперпараметры, требуемые для инкрементного обучения. Эта таблица описывает гиперпараметры и когда они оцениваются или настраиваются.

ГиперпараметрСвойство моделиИспользованиеПредполагаемые гиперпараметры
Средние значения предиктора и стандартные отклонения

Mu и Sigma

Стандартизируйте данные о предикторе

Когда вы устанавливаете 'Standardize',true (см., стандартизируют данные),

Скорость обученияLearnRateНастройте размер шага решателя

Когда оба из этих условий применяются:

  • Вы изменяете решатель Mdl к SGD или ASGD (см. Solver).

  • Вы не устанавливаете 'LearnRate' аргумент пары "имя-значение".

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

Стандартизируйте данные

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

  • Когда вы устанавливаете 'Standardize',true, и IncrementalMdl.Mu и IncrementalMdl.Sigma пусты, следующие условия применяются:

    • Если период оценки положителен (см. EstimationPeriod свойство IncrementalMdl), инкрементные подходящие функции оценивают средние значения и стандартные отклонения с помощью наблюдений периода оценки.

    • Если период оценки 0, incrementalLearner обеспечивает период оценки к 1000. Следовательно, инкрементные подходящие функции оценивают новые средние значения переменного предиктора и стандартные отклонения в принудительный период оценки.

  • Когда инкрементные подходящие функции оценивают средние значения предиктора и стандартные отклонения, функции вычисляют взвешенные средние и взвешенные стандартные отклонения с помощью наблюдений периода оценки. А именно, функции стандартизируют предиктор j (xj) использование

    xj=xjμjσj.

    где

    • xj является предиктором j, и xjk является наблюдением k предиктора j в период оценки.

    • μj=1kwkkwkxjk.

    • (σj)2=1kwkkwk(xjkμj)2.

    • wj=wjjКласс kwjpk, где

      • p k является априорной вероятностью класса k (Prior свойство инкрементной модели).

      • wj является весом наблюдения j.

Показатели производительности

  • updateMetrics и updateMetricsAndFit функции являются функциями пошагового обучения, которые отслеживают метрики производительности модели ('Metrics') из новых данных, когда инкрементной моделью является warm (IsWarm свойство. Инкрементная модель является теплой после fit или updateMetricsAndFit подбирайте инкрементную модель к 'MetricsWarmupPeriod' наблюдения, который является metrics warm-up period.

    Если 'EstimationPeriod' > 0, функции оценивают гиперпараметры прежде, чем подбирать модель к данным. Поэтому функции должны обработать дополнительный EstimationPeriod наблюдения перед моделью запускают метрический период прогрева.

  • Metrics свойство инкрементной модели хранит две формы каждого показателя производительности как переменные (столбцы) таблицы, Cumulative и Window, с отдельными метриками в строках. Когда инкрементная модель является теплой, updateMetrics и updateMetricsAndFit обновите метрики на следующих частотах:

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

    • Window — Функции вычисляют метрики на основе всех наблюдений в окне, определенном 'MetricsWindowSize' аргумент пары "имя-значение". 'MetricsWindowSize' также определяет частоту в который обновления программного обеспечения Window метрики. Например, если MetricsWindowSize 20, функции вычисляют метрики на основе последних 20 наблюдений в данных, которыми снабжают (X((end – 20 + 1):end,:) и Y((end – 20 + 1):end)).

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

      1. Для каждой заданной метрики сохраните буфер длины MetricsWindowSize и буфер весов наблюдения.

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

      3. Когда буфер заполнен, перезапись IncrementalMdl.Metrics.Window со средневзвешенной эффективностью в метрическом окне. Если буфер переполнен когда функциональные процессы пакет наблюдений, последнего входящего MetricsWindowSize наблюдения вводят буфер, и самые ранние наблюдения удалены из буфера. Например, предположите MetricsWindowSize 20, метрический буфер имеет 10 значений от ранее обработанного пакета, и поступают 15 значений. Чтобы составить длину 20 окон, функции используют измерения от 15 входящих наблюдений и последние 5 измерений от предыдущего пакета.

Ссылки

[1] Kempka, Michał, Войцех Kotłowski и Манфред К. Вармут. "Адаптивные Инвариантные к масштабу Онлайновые Алгоритмы для Изучения Линейных Моделей". CoRR (февраль 2019). https://arxiv.org/abs/1902.07528.

[2] Лэнгфорд, J., Л. Ли и Т. Чжан. “Разреженное Дистанционное обучение Через Усеченный Градиент”. Дж. Мах. Учиться. Res., Издание 10, 2009, стр 777–801.

[3] Шалев-Шварц, S., И. Зингер и Н. Сребро. “Pegasos: Основной Предполагаемый Решатель Подградиента для SVM”. Продолжения 24-й Международной конференции по вопросам Машинного обучения, ICML ’07, 2007, стр 807–814.

[4] Сюй, Вэй. “К Оптимальному Один Крупный масштаб Передачи Изучение с Усредненным Стохастическим Градиентным спуском”. CoRR, abs/1107.2490, 2011.

Введенный в R2020b