exponenta event banner

Настройка модели инкрементного обучения

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

ЦельПодход к созданиюФункцияПоддерживаемые учащиеся
Двоичная классификацияОбъект вызоваincrementalClassificationLinear

Линейный SVM

Логистическая регрессия

Преобразовать модель

incrementalLearner преобразует линейную модель SVM (ClassificationSVM или CompactClassificationSVM)

incrementalLearner преобразует модель линейной классификации (ClassificationLinear)

Многоклассная классификацияОбъект вызоваincrementalClassificationNaiveBayes

Наивная классификация Байеса с нормально распределенными предикторными переменными, обусловленная классом

Преобразовать модель

incrementalLearner преобразует полную наивную модель классификации Байеса (ClassificationNaiveBayes)

РегрессОбъект вызоваincrementalRegressionLinear

Линейная регрессия SVM

Наименьшие квадраты

Преобразовать модель

incrementalLearner преобразует модель линейной регрессии SVM (RegressionSVM или CompactRegressionSVM)

incrementalLearner преобразует модель линейной регрессии (RegressionLinear)

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

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

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

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

    Дополнительные сведения см. в разделе Прямой вызов объекта.

  • Преобразовать модель: преобразовать традиционно обученную модель в инкрементную для инициализации модели для инкрементного обучения. incrementalLearner передает информацию, которую традиционно обученная модель извлекла из данных. Для линейных моделей передаваемая информация включает в себя оптимизированные оценки коэффициентов, характеристики данных и применимые значения гиперпараметров. Для наивных моделей классификации Байеса переданная информация включает в себя характеристики данных, такие как все ожидаемые имена классов и соответствующие моменты распределений условного предиктора. Однако для преобразования традиционно обученной модели необходимо иметь набор помеченных данных, к которым можно подогнать модель.

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

Независимо от используемого подхода к созданию инкрементной модели, рассмотрим следующие конфигурации.

  • Параметры оценки производительности модели, например, метрики производительности для измерения

  • Для линейных моделей:

    • Тип модели, например, SVM

    • Начальные значения коэффициентов

    • Решатель целевой функции, например, стандартный стохастический градиентный спуск (SGD)

    • Значения гиперпараметров решателя, такие как скорость обучения решателей SGD

Вызов непосредственно объекта

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

MdlLR = incrementalRegressionLinear();
MdlNB = incrementalClassificationNaiveBayes('MaxNumClasses',5)

Если имеются сведения об указываемых данных или требуется настроить параметры модели или оценки производительности, при вызове объекта используйте аргументы «имя-значение». (Все свойства модели доступны только для чтения; их нельзя настроить с помощью точечной нотации.) Например, следующий псевдокод создает инкрементную модель логистической регрессии для двоичной классификации, инициализирует коэффициенты линейной модели Beta и предвзятость Bias (полученные из предшествующего знания проблемы) и устанавливает период прогрева показателей производительности равным 500 наблюдения.

Mdl = incrementalClassificationLinear('Learner','logistic',...
    'Beta',Beta,'Bias',Bias,'MetricsWarmupPeriod',500);

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

Параметры модели и свойства данных

Эта таблица содержит важные опции модели и характеристики данных.

Тип моделиПараметры модели и свойства данныхОписание
Линейная классификация или регрессия'Beta'Линейные коэффициенты, которые также служат начальными значениями для инкрементного фитинга
'Bias'Пересечение модели, которое также служит начальным значением для инкрементного фитинга
'Learner'Тип модели, например линейный SVM или наименьшие квадраты
Наивная классификация Байеса'Cost'Матрица затрат на неправильную классификацию
Классификация'ClassNames'Для классификации ожидаемые имена классов в метках наблюдения

Параметры и свойства обучающего и решателя

Эта таблица содержит важные параметры обучения и решателя, а также свойства.

Тип моделиПараметры и свойства обучающего и решателяОписание
Линейная классификация или регрессия'EstimationPeriod'Расчетный период предварительной подготовки
'Solver'Алгоритм оптимизации целевой функции
'Standardize'Флаг для стандартизации данных предиктора
'Lambda'Штраф Ridge, гиперпараметр модели, который требует настройки для оптимизации SGD
'BatchSize'Размер мини-партии, гиперпараметр SGD
'LearnRate'Скорость обучения, гиперпараметр SGD
'Mu'Свойство только для чтения, содержащее значение переменной предиктора
'Sigma'Свойство «только для чтения», содержащее переменные стандартные отклонения предиктора
Наивная классификация Байеса'DistributionParameters'Подогнанные моменты каждого условного предикторного распределения, заданного для каждого класса

Для линейной классификации и регрессионных моделей:

  • Период оценки, определяемый количеством наблюдений в EstimationPeriod, происходит до начала обучения (см. Дополнительные периоды обучения). В течение периода оценки функция инкрементной аппроксимации fit или updateMetricsAndFit вычисляет количества, необходимые для обучения, когда они неизвестны. Например, если задать 'Standardize',trueфункции инкрементного обучения требуют предикторных средств и стандартных отклонений для стандартизации данных предиктора. Следовательно, инкрементная модель требует положительного периода оценки (по умолчанию 1000).

  • Решателем по умолчанию является адаптивный инвариантный по масштабу решатель 'scale-invariant' [2], который является гиперпараметром свободным и нечувствительным к переменным масштабам предиктора; следовательно, стандартизация данных предиктора не требуется. Вместо этого можно указать стандартный или средний SGD. 'sgd' или 'asgd'. Тем не менее, SGD чувствителен к переменным масштабам предиктора и требует настройки гиперпараметров, что может быть трудно или невозможно сделать во время инкрементного обучения. Если планируется использовать решатель SGD, выполните следующие действия.

    1. Получение помеченных данных.

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

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

    4. Преобразование результирующей модели в добавочный ученик с помощью incrementalLearner.

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

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

Эта таблица содержит все параметры и свойства оценки производительности.

Параметры и свойства оценки производительностиОписание
'Metrics'Список метрик производительности или функций потери для инкрементного измерения
'MetricsWarmupPeiod'Количество наблюдений, которым должна соответствовать инкрементная модель перед отслеживанием метрик производительности
'MetricsWindowSize'Количество наблюдений, используемых для вычисления показателей производительности окна
'IsWarm'Свойство только для чтения, указывающее, является ли модель теплой (измеряет метрики производительности)
'Metrics'Свойство только для чтения, содержащее таблицу отслеживаемых кумулятивных и оконных метрик

Метрики, указанные 'Metrics' имя-значение из таблицы, хранящейся в Metrics свойство модели. Например, при указании 'Metrics',["Metric1" "Metric2"] при создании инкрементной модели Mdl, Metrics свойство -

>> Mdl.Metrics

ans =

  2×2 table
                Cumulative    Window
                __________    ______

    Metric1        NaN         NaN
    Metric2        NaN         NaN  

Укажите положительный период прогрева метрик, когда вы считаете, что модель имеет низкое качество и должна быть обучена до выполнения функции updateMetrics или updateMetricsAndFit отслеживает метрики производительности в Metrics собственность. В этом случае IsWarm свойство - false, и необходимо передать входящие данные и модель в инкрементную функцию фитинга fit или updateMetricsAndFit.

Когда функция инкрементной подгонки обрабатывает достаточно данных для удовлетворения оценок (для линейных моделей) и периодов прогрева метрик, IsWarm свойство становится trueТакже можно измерить производительность модели на входящих данных и дополнительно обучить модель. Для наивных моделей классификации Байеса инкрементные функции подгонки должны дополнительно соответствовать модели для всех ожидаемых классов, чтобы стать теплыми.

Когда модель теплая, updateMetrics или updateMetricsAndFit отслеживает все указанные метрики в совокупности (с начала оценки) и в пределах окна наблюдений, определенных MetricsWindowSize собственность. Кумулятивные метрики отражают производительность модели за всю историю инкрементного обучения; после начала периода оценки эффективности 1 кумулятивные показатели не зависят от периода оценки. Метрики окна отражают производительность модели только в течение указанного размера окна для каждого периода оценки производительности.

Преобразование традиционно обученной модели

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

Чтобы преобразовать традиционно обученную модель в добавочного учащегося, передайте модель и любые опции, указанные аргументами «имя-значение», в incrementalLearner. Например, следующий псевдокод инициализирует модель инкрементной классификации, используя всю информацию, которую линейная модель SVM для двоичной классификации получила из пакета данных.

Mdl = fitcsvm(X,Y);
IncrementalMdl = incrementalLearner(Mdl,Name,Value);

IncrementalMdl является инкрементным объектом ученика, связанным с целью машинного обучения.

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

Тип моделиСобственностьОписание
ВсеNumPredictorsЧисло переменных предиктора. Для моделей, которые фиктивные категориальные предикторные переменные кода, NumPredictors является numel(Mdl.ExpandedPredictorNames)и переменные предиктора, ожидаемые во время инкрементного обучения, соответствуют именам. Дополнительные сведения см. в разделе Фиктивные переменные.
КлассификацияClassNamesВсе метки классов, ожидаемые во время инкрементного обучения
PriorРаспределение по предыдущим классам
ScoreTransform

Функция, применяемая к классификационным баллам. Например, если настроить модель SVM для вычисления вероятности апостериорного класса, ScoreTransform (содержащий функцию оценки к апостериорной вероятности, полученную из данных) передается.

РегрессEpsilonДля учащегося SVM - половина ширины полосы, нечувствительной к эпсилону
ResponseTransformФункция, применяемая к прогнозируемым ответам
Линейная классификация или регрессияBetaКоэффициенты линейной модели
BiasПерехват модели
LearnerТип линейной модели
MuДля объекта модели SVM переменная предиктора означает
SigmaДля объекта модели SVM предиктор имеет переменные стандартные отклонения
Наивная классификация БайесаDistributionNamesA NumPredictors вектор ячейки длины с 'normal' в каждой ячейке. Если преобразовать наивную модель классификации Байеса, содержащую по крайней мере один ненормальный предиктор, incrementalLearner выдает ошибку.
DistributionParametersПодогнанные моменты каждого условного предикторного распределения, заданного для каждого класса

Примечание

  • NumTrainingObservations имущество IncrementalMdl не включает наблюдения, используемые для обучения Mdl.

  • При указании 'Standardize',true когда вы тренируетесь Mdl, IncrementalMdl сконфигурирован для стандартизации предикторов во время инкрементного обучения по умолчанию.

При преобразовании линейной классификации или регрессионной модели применяются следующие условия (ClassificationLinear и RegressionLinear, соответственно):

  • Инкрементные фитинговые функции поддерживают только регуляризацию гребня (L2).

  • Инкрементные фитинговые функции поддерживают спецификацию только одного значения регуляризации. Следовательно, если при вызове задается путь регуляризации (вектор значений регуляризации) fitclinear или fitrlinear, выберите модель, связанную с одним штрафом, передав ее selectModels.

  • При решении целевой функции с помощью стандартного или среднего SGD ('sgd' или 'asgd' для 'Solver' аргумент «имя-значение»), эти условия применяются при вызове incrementalLearner:

    • incrementalLearner передает решатель, используемый для оптимизации Mdl кому IncrementalMdl.

    • Можно задать адаптивный инвариантный решатель масштаба 'scale-invariant' вместо этого нельзя указать другой решатель SGD.

    • Если адаптивный решатель с инвариантным масштабом не задан, incrementalLearner передает значения гиперпараметров модели и решателя в объект инкрементной модели, например, скорость обучения LearnRate, размер мини-партии BatchSize, и штраф гребня Lambda. Невозможно изменить перенесенные свойства.

Если при создании инкрементной модели требуется больше гибкости, можно вызвать объект напрямую и инициализировать модель, индивидуально задав изученную информацию с помощью аргументов «имя-значение». Следующие псевдокод показывают два примера:

  • Инициализация инкрементной модели классификации из коэффициентов и имен классов, полученных путем подгонки линейной модели SVM для двоичной классификации к пакету данных Xc и Yc.

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

% Linear Classification
Mdl = fitcsvm(Xc,Yc);
IncrementalMdl = incrementalClassificationLinear('Beta',Mdl.Beta,...
    'Bias',Mdl.Bias,'ClassNames',Mdl.ClassNames);

% Linear Regression
Mdl = fitlm(Xr,Yr);
Bias = Mdl.Coefficients.Estimate(1);
Beta = Mdl.Coefficients.Estimate(2:end);
IncrementalMdl = incrementalRegressionLinear('Learner','leastsquares',...
    'Bias',Bias,'Beta',Beta);

Для наивных моделей классификации Байеса нельзя указать моменты условного распределения вероятности каждой переменной предиктора DistributionParameters; они должны быть адаптированы к данным, fit или fitcnb

Ссылки

[1] Бифет, Альберт, Рикард Гавальда, Джеффри Холмс и Бернхард Пфахрингер. Машинное обучение для потоков данных с практическим примером в MOA. Кембридж, Массачусетс: MIT Press, 2007.

[2] Кемпка, Михал, Войцех Котловский и Манфред К. Вармут. «Адаптивный масштаб - инвариантные онлайн-алгоритмы для обучения линейным моделям». КоРР (февраль 2019). https://arxiv.org/abs/1902.07528.

См. также

Объекты

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