Преобразование линейной модели для двоичной классификации в инкрементную
возвращает линейную модель двоичной классификации для инкрементного обучения, IncrementalMdl = incrementalLearner(Mdl)IncrementalMdl, используя гиперпараметры и коэффициенты традиционно обученной линейной модели для двоичной классификации, Mdl. Потому что его имущественные ценности отражают знания, полученные от Mdl, IncrementalMdl может прогнозировать метки с учетом новых наблюдений, и это тепло, что означает, что его прогностическая производительность отслеживается.
использует дополнительные параметры, заданные одним или несколькими аргументами пары имя-значение. Некоторые варианты требуют обучения 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: [60x1 double]
Bias: -0.2005
Lambda: 4.1537e-05
Learner: 'svm'
Properties, Methods
TTMdl является ClassificationLinear объект модели, представляющий традиционно обученную модель линейной классификации.
Преобразовать обученную модель
Преобразование традиционно обученной модели линейной классификации в линейную модель двоичной классификации для инкрементного обучения.
IncrementalMdl = incrementalLearner(TTMdl)
IncrementalMdl =
incrementalClassificationLinear
IsWarm: 1
Metrics: [1x2 table]
ClassNames: [0 1]
ScoreTransform: 'none'
Beta: [60x1 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 в командной строке.
Отклики могут быть одним из пяти классов: Сидя, Стоя, Валинг, Бега или Танцы. Дихотомизировать ответ, определив, движется ли субъект (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 логарифмически разнесенных уровней регуляризации от до .
Lambda = logspace(-6,-0.5,11);
Поскольку переменные находятся в разных масштабах, используйте неявное расширение для стандартизации данных предиктора.
Xtt = (Xtt - mean(Xtt))./std(Xtt);
Настройте параметр регуляризации L2, применив пятикратную перекрестную проверку. Укажите стандартный решатель 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 наблюдений.
Перезаписать предыдущую инкрементную модель новой, установленной для входящего наблюдения.
Сохраните , чтобы увидеть, как он развивается во время обучения.
% 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 объект модели обучен всем данным в потоке.
Постройте график , чтобы увидеть, как он развивался.
plot(beta1) ylabel('\beta_1') xline(IncrementalMdl.EstimationPeriod/numObsPerChunk,'r-.'); xlabel('Iteration')

Поскольку fit не соответствует модели потоковым данным в течение периода оценки, является постоянной для первых 200 итераций (2000 наблюдений). Затем резко изменяется во время инкрементного фитинга.
Используйте обученную модель линейной классификации для инициализации добавочного ученика. Подготовьте дополнительного учащегося, указав период прогрева метрик, в течение которого 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);
Преобразование традиционно обученной модели линейной классификации в линейную модель двоичной классификации для инкрементного обучения. Укажите следующее:
Период прогрева показателей производительности, состоящий из 2000 наблюдений
Размер окна метрик 500 наблюдений
Использование ошибки классификации и потери шарнира для измерения производительности модели
IncrementalMdl = incrementalLearner(TTMdl,'MetricsWarmupPeriod',2000,'MetricsWindowSize',500,... 'Metrics',["classiferror" "hinge"]);
Поместите инкрементную модель во вторую половину данных с помощью updateMetricsAndFit функция. При каждой итерации:
Моделирование потока данных, который обрабатывает порцию из 20 наблюдений.
Перезаписать предыдущую инкрементную модель новой, установленной для входящего наблюдения.
Сохраните , кумулятивные метрики и оконные метрики, чтобы увидеть, как они развиваются во время инкрементного обучения.
% 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 проверяет производительность модели на входящем наблюдении, а затем подгоняет модель под это наблюдение.
Чтобы увидеть, как метрики производительности и развивались во время обучения, постройте их график на отдельных вложенных графиках.
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 выполняет следующее:
Вписать во все инкрементные итерации обучения.
Вычислите показатели производительности только после периода прогрева показателей.
Вычислите кумулятивные метрики во время каждой итерации.
Вычислите метрику окна после обработки 500 наблюдений (25 итераций).
Mdl - Традиционно обученная линейная модель для двоичной классификацииClassificationLinear объект моделиТрадиционно обученная линейная модель для двоичной классификации, указанная как 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' (по умолчанию) | 'sgd' | 'asgd'Метод минимизации целевой функции, указанный как пара, разделенная запятыми, состоящая из 'Solver' и значение в этой таблице.
| Стоимость | Описание | Примечания |
|---|---|---|
'scale-invariant' | Адаптивный инвариантный решатель масштаба для инкрементного обучения [1] |
|
'sgd' | Стохастический градиентный спуск (SGD) [3][2] |
|
'asgd' | Средний стохастический градиентный спуск (ASGD) [4] |
|
Пример: 'Solver','sgd'
Типы данных: char | string
'EstimationPeriod' - Количество наблюдений, обработанных для оценки гиперпараметровКоличество наблюдений, обработанных инкрементной моделью для оценки гиперпараметров перед обучением или отслеживанием метрик производительности, указанных как пара, разделенная запятыми, состоящая из 'EstimationPeriod' и неотрицательное целое число.
Примечание
Если Mdl подготовлен к инкрементному обучению (указаны все гиперпараметры, необходимые для обучения), incrementalLearner силы 'EstimationPeriod' кому 0.
Если Mdl не подготовлен к инкрементному обучению, incrementalLearner наборы 'EstimationPeriod' кому 1000.
Дополнительные сведения см. в разделе Период оценки.
Пример: 'EstimationPeriod',100
Типы данных: single | double
'Standardize' - Флаг для стандартизации данных предиктораfalse (по умолчанию) | trueФлаг для стандартизации данных предиктора, указанный как пара, разделенная запятыми, состоящая из 'Standardize' и значение в этой таблице.
| Стоимость | Описание |
|---|---|
true | Программное обеспечение стандартизирует данные предиктора. Дополнительные сведения см. в разделе Стандартизация данных. |
false | Программное обеспечение не стандартизирует данные предиктора. |
Пример: 'Standardize',true
Типы данных: logical
'BatchSize' - Размер мини-партииРазмер мини-партии, указанный как разделенная запятыми пара, состоящая из '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
'Lambda' - Сила термина регуляризации гребня (L2)Сила термина регуляризации гребня (L2), определяемая как разделенная запятыми пара, состоящая из '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' и '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' - График обучения'decaying' (по умолчанию) | 'constant'График скорости обучения, указанный как пара, разделенная запятыми, состоящая из 'LearnRateSchedule' и значение в этой таблице, где LearnRate определяет ɣ0 начальной скорости обучения.
| Стоимость | Описание |
|---|---|
'constant' | Уровень обучения является ɣ0 для всех циклов обучения. |
'decaying' | Скорость обучения в учебном цикле t составляет λ γ 0t) c.
|
Если Mdl.ModelParameters.Solver является 'sgd' или 'asgd', нельзя установить 'LearnRateSchedule'.
Пример: 'LearnRateSchedule','constant'
Типы данных: char | string
'Shuffle' - Флаг для тасования наблюдений в партииtrue (по умолчанию) | falseФлаг для тасования наблюдений в пакете на каждой итерации, указанный как разделенная запятыми пара, состоящая из 'Shuffle' и значение в этой таблице.
| Стоимость | Описание |
|---|---|
true | Программа выполняет тасование наблюдений в каждом входящем пакете данных перед обработкой аппарата. Это действие уменьшает смещение, вызванное схемой выборки. |
false | Программное обеспечение обрабатывает данные в полученном порядке. |
Пример: 'Shuffle',false
Типы данных: logical
'Metrics' - Модель показателей производительности для отслеживания во время инкрементного обучения"classiferror" (по умолчанию) | строковый вектор | дескриптор функции | вектор ячейки | массив структуры | "binodeviance" | "exponential" | "hinge" | "logit" | "quadratic" | ...Моделирование показателей производительности для отслеживания во время инкрементного обучения с помощью updateMetrics или updateMetricsAndFit функция, заданная как имя встроенной функции потери, строковый вектор имен, дескриптор функции (@metricName), структурный массив дескрипторов функций или вектор ячеек имен, дескрипторов функций или структурных массивов.
В следующей таблице перечислены имена встроенных функций потери. С помощью вектора строки можно указать несколько.
| Имя | Описание |
|---|---|
"binodeviance" | Биномиальное отклонение |
"classiferror" | Ошибка классификации |
"exponential" | Показательный |
"hinge" | Стержень |
"logit" | Логистический |
"quadratic" | Квадратный |
Дополнительные сведения о встроенных функциях потери см. в разделе loss.
Пример: 'Metrics',["classiferror" "hinge"]
Чтобы указать пользовательскую функцию, возвращающую метрику производительности, используйте нотацию дескриптора функции. Функция должна иметь следующую форму:
metric = customMetric(C,S)
Выходной аргумент metric является n-на-1 числовым вектором, где каждый элемент является потерей соответствующего наблюдения в данных путем обработки инкрементных функций обучения в течение цикла обучения.
Указывается имя функции (customMetric).
C - логическая матрица n-by-2 со строками, указывающими класс, которому принадлежит соответствующее наблюдение. Порядок столбцов соответствует порядку классов в Mdl.ClassNames. Создать C путем установки C( = p,q)1, если наблюдение находится в классе p, для каждого наблюдения в указанных данных. Установка другого элемента в строке q кому p0.
S представляет собой n-на-2 числовую матрицу прогнозируемых показателей классификации. S аналогичен score вывод predict, где строки соответствуют наблюдениям в данных, а порядок столбцов соответствует порядку классов в Mdl.ClassNames. S( - классификационный балл наблюдения p,q) классифицируется по классу 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_, где является метрикой в Metrics | Имя строки для @(C,S)customMetric(C,S)... является CustomMetric_1 |
Дополнительные сведения о параметрах показателей производительности см. в разделе Показатели производительности.
Типы данных: char | string | struct | cell | function_handle
'MetricsWarmupPeriod' - Количество наблюдений перед отслеживанием показателей производительности0 (по умолчанию) | неотрицательное целое число |...Количество наблюдений, которым должна соответствовать инкрементная модель, прежде чем она будет отслеживать метрики производительности в своей Metrics свойство, указанное как пара, разделенная запятыми, состоящая из 'MetricsWarmupPeriod' и неотрицательное целое число. Инкрементная модель нагревается после подгонки инкрементных функций фитинга MetricsWarmupPeriod наблюдения за инкрементной моделью (EstimationPeriod + MetricsWarmupPeriod наблюдения).
Дополнительные сведения о параметрах показателей производительности см. в разделе Показатели производительности.
Типы данных: single | double
'MetricsWindowSize' - Количество наблюдений, используемых для вычисления показателей производительности окна200 (по умолчанию) | положительное целое число |...Число наблюдений, используемых для вычисления метрик производительности окна, указанных как положительное целое число.
Дополнительные сведения о параметрах показателей производительности см. в разделе Показатели производительности.
Типы данных: single | double
IncrementalMdl - Линейная модель двоичной классификации для инкрементного обученияincrementalClassificationLinear объект моделиЛинейная модель двоичной классификации для инкрементного обучения, возвращенная как incrementalClassificationLinear объект модели. IncrementalMdl также сконфигурирован для генерации прогнозов с учетом новых данных (см. predict).
Инициализировать IncrementalMdl для инкрементного обучения, incrementalLearner передает значения Mdl свойства в этой таблице к конгруэнтным свойствам IncrementalMdl.
| Собственность | Описание |
|---|---|
Beta | Коэффициенты линейной модели, числовой вектор |
Bias | Перехват модели, числовой скаляр |
ClassNames | Метки классов для двоичной классификации, двухэлементный список |
ModelParameters.FitBias | Флаг включения пересечения линейной модели |
Learner | Тип модели линейной классификации |
Prior | Распределение меток предыдущего класса, числовой вектор |
Инкрементное обучение, или онлайн-обучение, - это ветвь машинного обучения, связанная с обработкой входящих данных из потока данных, возможно, без знания распределения переменных предиктора, аспектов предсказания или целевой функции (включая значения параметров настройки) или того, помечены ли наблюдения. Инкрементное обучение отличается от традиционного машинного обучения, когда достаточно помеченных данных доступно для соответствия модели, выполнения перекрестной проверки для настройки гиперпараметров и вывода распределения предиктора.
Учитывая поступающие наблюдения, модель инкрементного обучения обрабатывает данные любым из следующих способов, но обычно в таком порядке:
Прогнозировать метки.
Измерьте прогностическую производительность.
Проверьте наличие структурных разрывов или дрейфа в модели.
Подгоните модель к входящим наблюдениям.
Адаптивный инвариантный по масштабу решатель для инкрементного обучения, представленный в [1], представляет собой целевой решатель на основе градиентного спуска для обучения линейным прогностическим моделям. Решатель свободен от гиперпараметров, нечувствителен к различиям в шкалах переменных предиктора и не требует предварительного знания распределения переменных предиктора. Эти характеристики делают его хорошо подходящим для инкрементного обучения.
Стандартные решатели SGD и ASGD чувствительны к различным масштабам переменных предиктора, что приводит к моделям, которые могут работать плохо. Для достижения лучшей точности с использованием SGD и ASGD можно стандартизировать данные предиктора, а настройка параметров регуляризации и скорости обучения может потребовать настройки. Для традиционного машинного обучения доступно достаточно данных для настройки гиперпараметров путем перекрестной проверки и стандартизации предикторов. Однако для инкрементного обучения достаточное количество данных может быть недоступно (например, наблюдения могут быть доступны только по одному), и распределение предикторов может быть неизвестно. Эти характеристики делают настройку параметров и стандартизацию предиктора трудной или невозможной во время инкрементного обучения.
Инкрементные функции фитинга для классификации fit и updateMetricsAndFit использовать более агрессивную ScInOL2 версию алгоритма.
В течение периода оценки инкрементные фитинговые функции fit и updateMetricsAndFit использовать первый входящий EstimationPeriod наблюдения для оценки (настройки) гиперпараметров, необходимых для дополнительного обучения. В этой таблице описываются гиперпараметры и время их оценки или настройки.
| Гиперпараметр | Свойство модели | Использовать | Оценка гиперпараметров |
|---|---|---|---|
| Предикторные средства и стандартные отклонения |
| Стандартизация данных предиктора | При установке |
| Уровень обучения | LearnRate | Настройка размера шага решателя | Если применяются оба этих условия:
|
Функции соответствуют только последнему наблюдению периода оценки инкрементной модели, и они не используют ни одно из наблюдений для отслеживания производительности модели. В конце периода оценки функции обновляют свойства, хранящие гиперпараметры.
Если инкрементные функции обучения сконфигурированы для стандартизации переменных предиктора, они делают это, используя средства и стандартные отклонения, сохраненные в Mu и Sigma свойства модели инкрементного обучения IncrementalMdl.
При установке 'Standardize',true, и IncrementalMdl.Mu и IncrementalMdl.Sigma пусты, применяются следующие условия:
Если период оценки положительный (см. EstimationPeriod имущество IncrementalMdl), средства оценки инкрементных функций подгонки и стандартные отклонения с использованием наблюдений периода оценки.
Если период оценки равен 0, incrementalLearner заставляет период оценки 1000. Следовательно, функции инкрементной подгонки оценивают новые предикторные переменные средства и стандартные отклонения в течение периода принудительной оценки.
Когда функции инкрементной подгонки оценивают предикторные средства и стандартные отклонения, функции вычисляют взвешенные средства и взвешенные стандартные отклонения, используя наблюдения периода оценки. В частности, функции стандартизируют предиктор j (xj), используя
где
xj - предиктор j, и xjk - наблюдение k предиктора j в периоде оценки.
2.
где
pk - предшествующая вероятность класса k (Prior свойство инкрементной модели).
wj - наблюдаемый вес j.
updateMetrics и updateMetricsAndFit функции - это функции инкрементного обучения, отслеживающие метрики производительности модели ('Metrics') из новых данных, когда инкрементная модель является теплой (IsWarm свойство). Инкрементная модель нагревается после fit или updateMetricsAndFit вписать инкрементную модель в 'MetricsWarmupPeriod' наблюдения, которые являются периодом прогрева метрик.
Если '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)).
Инкрементные функции, отслеживающие метрики производительности в пределах окна, используют следующий процесс:
Для каждой заданной метрики сохраните буфер длиной MetricsWindowSize и буфер весов наблюдения.
Заполните элементы буфера метрик производительностью модели на основе пакетов входящих наблюдений и сохраните соответствующие веса наблюдений в буфере весов.
При заполнении буфера перезаписать IncrementalMdl.Metrics.Window со средневзвешенной производительностью в окне метрик. Если буфер переполнен, когда функция обрабатывает пакет наблюдений, последний входящий MetricsWindowSize наблюдения поступают в буфер, а самые ранние наблюдения удаляются из буфера. Например, предположим MetricsWindowSize равно 20, буфер метрик имеет 10 значений из ранее обработанного пакета, и 15 значений являются входящими. Для создания окна длины 20 используются измерения из 15 входящих наблюдений и 5 последних измерений из предыдущего пакета.
[1] Кемпка, Михал, Войцех Котловский и Манфред К. Вармут. «Адаптивный масштаб - инвариантные онлайн-алгоритмы для обучения линейным моделям». КоРР (февраль 2019). https://arxiv.org/abs/1902.07528.
[2] Лэнгфорд, Дж., Л. Ли и Т. Чжан. «Разреженное онлайн-обучение через усеченный градиент». Дж. Мач. Рес., т. 10, 2009, стр. 777-801.
[3] Шалев-Шварц, С., Я. Сингер и Н. Сребро. «Pegasos: Основной оценочный вычислитель субпогренов для SVM». Материалы 24-й Международной конференции по машинному обучению, ICML "07, 2007, стр. 807-814.
[4] Сюй, Вэй. «К оптимальному однопроходному крупномасштабному обучению со усредненным стохастическим градиентным спуском». CoRR, abs/1107.2490, 2011.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.