Преобразовать наивную модель классификации Байеса в инкрементного ученика
возвращает наивную модель классификации Байеса для инкрементного обучения, IncrementalMdl = incrementalLearner(Mdl)IncrementalMdl, используя гиперпараметры традиционно обученной наивной модели классификации Байеса, Mdl. Потому что его имущественные ценности отражают знания, полученные от Mdl, IncrementalMdl может прогнозировать метки с учетом новых наблюдений, и это тепло, что означает, что его прогностическая производительность отслеживается.
использует дополнительные параметры, заданные одним или несколькими аргументами пары имя-значение. Некоторые варианты требуют обучения IncrementalMdl = incrementalLearner(Mdl,Name,Value)IncrementalMdl перед отслеживанием его прогностической эффективности. Например, 'MetricsWarmupPeriod',50,'MetricsWindowSize',100 определяет предварительный период инкрементного обучения из 50 наблюдений до отслеживания метрик производительности и определяет обработку 100 наблюдений перед обновлением метрик производительности.
Тренировать наивную модель Байеса с помощью fitcnb, а затем преобразовать его в добавочного учащегося.
Загрузка и предварительная обработка данных
Загрузите набор данных о деятельности персонала.
load humanactivityДля получения подробной информации о наборе данных введите Description в командной строке.
Модель Трейна Наива Байеса
Поместите наивную модель классификации Байеса во весь набор данных.
TTMdl = fitcnb(feat,actid);
TTMdl является ClassificationNaiveBayes объект модели, представляющий традиционно обученную наивную модель классификации Байеса.
Преобразовать обученную модель
Преобразуйте традиционно обученную наивную модель классификации Байеса для инкрементного обучения.
IncrementalMdl = incrementalLearner(TTMdl)
IncrementalMdl =
incrementalClassificationNaiveBayes
IsWarm: 1
Metrics: [1x2 table]
ClassNames: [1 2 3 4 5]
ScoreTransform: 'none'
DistributionNames: {1x60 cell}
DistributionParameters: {5x60 cell}
Properties, Methods
IncrementalMdl является incrementalClassificationNaiveBayes объект модели, подготовленный для инкрементного обучения с использованием наивной классификации Байеса.
incrementalLearner Функция инициализирует добавочного учащегося, передавая ему изученные параметры распределения условного предиктора вместе с другой информацией TTMdl извлекается из данных обучения.
IncrementalMdl теплый (IsWarm является 1), что означает, что функции инкрементного обучения могут отслеживать метрики производительности и делать прогнозы.
Прогнозирование ответов
Добавочный ученик, созданный из преобразования традиционно обученной модели, может генерировать прогнозы без дальнейшей обработки.
Предсказать оценки классификации (апостериорные вероятности класса) для всех наблюдений с использованием обеих моделей.
[~,ttscores] = predict(TTMdl,feat); [~,ilcores] = predict(IncrementalMdl,feat); compareScores = norm(ttscores - ilcores)
compareScores = 0
Разница между оценками, сгенерированными моделями, равна 0.
Используйте обученную наивную модель Байеса для инициализации добавочного ученика. Подготовьте дополнительного учащегося, указав период прогрева метрик, в течение которого updateMetricsAndFit функция подходит только для модели. Укажите размер окна метрик, равный 500 наблюдениям.
Загрузите набор данных о деятельности персонала.
load humanactivityДля получения подробной информации о наборе данных введите Description в командной строке
Случайное разделение данных пополам: первая половина для обучения модели традиционно, и вторая половина для инкрементного обучения.
n = numel(actid); rng(1) % For reproducibility cvp = cvpartition(n,'Holdout',0.5); idxtt = training(cvp); idxil = test(cvp); % First half of data Xtt = feat(idxtt,:); Ytt = actid(idxtt); % Second half of data Xil = feat(idxil,:); Yil = actid(idxil);
Подгоните наивную модель Байеса к первой половине данных.
TTMdl = fitcnb(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"]); mc = array2table(zeros(nchunk,2),'VariableNames',["Cumulative" "Window"]); mu12 = 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",:}; mc{j,:} = IncrementalMdl.Metrics{"MinimalCost",:}; mu12(j + 1) = IncrementalMdl.DistributionParameters{1,2}(1); end
IncrementalMdl является incrementalClassificationNaiveBayes объект модели обучен всем данным в потоке. Во время инкрементного обучения и после разогрева модели updateMetricsAndFit проверяет производительность модели на входящем наблюдении, а затем подгоняет модель под это наблюдение.
Чтобы увидеть, как во время обучения развивались показатели производительности и мк12, постройте их график на отдельных вложенных графиках.
figure; subplot(3,1,1) plot(mu12) ylabel('\mu_{12}') 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(mc.Variables); xlim([0 nchunk]); ylabel('Minimal Cost') xline(IncrementalMdl.MetricsWarmupPeriod/numObsPerChunk,'r-.'); legend(h,mc.Properties.VariableNames,'Location','northwest') xlabel('Iteration')

Сюжет говорит о том, что updateMetricsAndFit выполняет следующее:
Подгоняйте во время всех инкрементных итераций обучения.
Вычислять метрики производительности только после периода прогрева метрик.
Вычислите кумулятивные метрики во время каждой итерации.
Вычислите метрику окна после обработки 500 наблюдений (25 итераций).
Поскольку данные упорядочены по активности, средние показатели и показатели производительности периодически резко изменяются.
Mdl - Традиционно обученная наивная модель Байеса для мультиклассовой классификацииClassificationNaiveBayes объект моделиТрадиционно обученная наивная модель Байеса для мультиклассовой классификации, указанная как ClassificationNaiveBayes объект модели, возвращенный fitcnb. Условное распределение каждой переменной предиктора, сохраненное в Mdl.DistributionNames, должно быть нормально.
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'Metrics',["classiferror" "mincost"],'MetricsWindowSize',100 задает отслеживание коэффициента неправильной классификации и минимальных затрат, а также определяет обработку 100 наблюдений перед обновлением метрик производительности.'Metrics' - Модель показателей производительности для отслеживания во время инкрементного обучения"mincost" (по умолчанию) | "classiferror" | вектор строки | дескриптор функции | вектор ячейки | массив структуры | "binodeviance" | "exponential" | "hinge" | "logit" | "quadratic" | ...Моделирование показателей производительности для отслеживания во время инкрементного обучения с помощью updateMetrics или updateMetricsAndFit функция, заданная как имя встроенной функции потери, строковый вектор имен, дескриптор функции (@metricName), структурный массив дескрипторов функций или вектор ячеек имен, дескрипторов функций или структурных массивов.
В следующей таблице перечислены имена встроенных функций потери. С помощью вектора строки можно указать несколько.
| Имя | Описание |
|---|---|
"binodeviance" | Биномиальное отклонение |
"classiferror" | Ошибка классификации |
"exponential" | Показательный |
"hinge" | Стержень |
"logit" | Логистический |
'"mincost" | Минимальная ожидаемая стоимость неправильной классификации (для классификационных оценок, которые являются задними вероятностями) |
"quadratic" | Квадратный |
Дополнительные сведения о встроенных функциях потери см. в разделе loss.
Пример: 'Metrics',["classiferror" "mincost"]
Чтобы указать пользовательскую функцию, возвращающую метрику производительности, используйте нотацию дескриптора функции. Функция должна иметь следующую форму:
metric = customMetric(C,S,Cost)
Выходной аргумент metric является n-на-1 числовым вектором, где каждый элемент является потерей соответствующего наблюдения в данных, обрабатываемых инкрементными функциями обучения в течение цикла обучения.
Выберите имя функции (customMetric).
C - логическая матрица n-by-K со строками, указывающими класс, которому принадлежит соответствующее наблюдение, где K - число классов. Порядок столбцов соответствует порядку классов в ClassNames собственность. Создать C путем установки C( = p,q)1, если наблюдение находится в классе p, для каждого наблюдения в указанных данных. Установка другого элемента в строке q кому p0.
S - числовая матрица n-by-K прогнозируемых классификационных оценок. S аналогичен Score вывод predict, где строки соответствуют наблюдениям в данных, а порядок столбцов соответствует порядку классов в ClassNames собственность. S( - классификационный балл наблюдения p,q) классифицируется по классу p.q
Cost является цифровой матрицей K-by-K затрат на неправильную классификацию. См. раздел 'Cost' аргумент «имя-значение».
Чтобы указать несколько пользовательских метрик и назначить каждому пользовательское имя, используйте массив структуры. Чтобы задать комбинацию встроенных и пользовательских метрик, используйте вектор ячейки.
Пример: '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,Cost)customMetric(C,S,Cost)... является CustomMetric_1 |
Дополнительные сведения о параметрах показателей производительности см. в разделе Показатели производительности.
Типы данных: char | string | struct | cell | function_handle
'MetricsWarmupPeriod' - Количество наблюдений перед отслеживанием показателей производительности1000 (по умолчанию) | неотрицательное целое числоЭто свойство доступно только для чтения.
Количество наблюдений, которым должна соответствовать инкрементная модель, прежде чем она будет отслеживать метрики производительности в своей Metrics , указанное как неотрицательное целое число.
Дополнительные сведения см. в разделе Показатели производительности.
Типы данных: single | double
'MetricsWindowSize' - Количество наблюдений, используемых для вычисления показателей производительности окна200 (по умолчанию) | положительное целое числоЭто свойство доступно только для чтения.
Число наблюдений, используемых для вычисления метрик производительности окна, указанных как положительное целое число.
Дополнительные сведения о параметрах показателей производительности см. в разделе Показатели производительности.
Типы данных: single | double
IncrementalMdl - Наивная классификация Байеса для инкрементного обученияincrementalClassificationNaiveBayes объект моделиНаивная модель классификации Байеса для инкрементного обучения, возвращенная как incrementalClassificationNaiveBayes объект модели. IncrementalMdl также сконфигурирован для генерации прогнозов с учетом новых данных (см. predict).
Инициализировать IncrementalMdl для инкрементного обучения, incrementalLearner передает значения свойств Mdl в этой таблице к конгруэнтным свойствам IncrementalMdl.
| Собственность | Описание |
|---|---|
ClassNames | Метки классов для двоичной классификации, список имен |
Cost | Затраты на неправильную классификацию, числовая матрица |
DistributionNames | Имена условных распределений переменных предиктора, массива ячеек, в котором каждая ячейка содержит 'normal |
DistributionParameters | Значения параметров условных распределений переменных предиктора, массива ячеек длиной 2 числовых вектора (подробнее см. DistributionParameters) |
Prior | Распределение меток предыдущего класса, числовой вектор |
ScoreTransform | Функция преобразования баллов, имя или дескриптор функции. |
Y | Этикетки классов, поставляемые fitcnb для вычисления весов класса для инкрементного обучения, хранящихся в виде массива меток (см. Y) |
Инкрементное обучение, или онлайн-обучение, - это ветвь машинного обучения, связанная с обработкой входящих данных из потока данных, возможно, без знания распределения переменных предиктора, аспектов предсказания или целевой функции (включая значения параметров настройки) или того, помечены ли наблюдения. Инкрементное обучение отличается от традиционного машинного обучения, когда достаточно помеченных данных доступно для соответствия модели, выполнения перекрестной проверки для настройки гиперпараметров и вывода распределения предиктора.
Учитывая поступающие наблюдения, модель инкрементного обучения обрабатывает данные любым из следующих способов, но обычно в таком порядке:
Прогнозировать метки.
Измерьте прогностическую производительность.
Проверьте наличие структурных разрывов или дрейфа в модели.
Подгоните модель к входящим наблюдениям.
updateMetrics и updateMetricsAndFit функции отслеживают показатели производительности модели ('Metrics') из новых данных, когда инкрементная модель является теплой (IsWarm свойство). Инкрементная модель является теплой, когда fit или updateMetricsAndFit выполните оба следующих действия:
Подгоните инкрементную модель к наблюдениям MetrityWarmupPeriod, которые являются периодом прогрева метрик.
Процесс MaxNumClasses классы или все имена классов, указанные ClassNames аргумент «имя-значение».
Metrics свойство инкрементной модели хранит две формы каждой метрики производительности в качестве переменных (столбцов) таблицы, Cumulative и Window, с отдельными метриками в строках. Когда инкрементная модель является теплой, updateMetrics и updateMetricsAndFit обновить метрики на следующих частотах:
Cumulative - Функции вычисляют кумулятивные метрики с момента начала отслеживания производительности модели. Функции обновляют метрики при каждом вызове функций и основывают расчет на всем предоставленном наборе данных.
Window - функции вычисляют метрику на основе всех наблюдений в пределах окна, определяемого аргументом пары имя-значение MetrityWindowSize. MetricsWindowSize также определяет частоту обновления программного обеспечения Window метрики. Например, если MetricsWindowSize 20, функции вычисляют метрики на основе последних 20 наблюдений в предоставленных данных (X((end – 20 + 1):end,:) и Y((end – 20 + 1):end)).
Инкрементные функции, отслеживающие метрики производительности в пределах окна, используют следующий процесс:
Для каждой заданной метрики сохраните буфер длиной MetricsWindowSize и буфер весов наблюдения.
Заполните элементы буфера метрик производительностью модели на основе пакетов входящих наблюдений и сохраните соответствующие веса наблюдений в буфере весов.
При заполнении буфера перезаписать Mdl.Metrics.Window со средневзвешенной производительностью в окне метрик. Если буфер переполнен, когда функция обрабатывает пакет наблюдений, последний входящий MetricsWindowSize наблюдения поступают в буфер, а самые ранние наблюдения удаляются из буфера. Например, предположим MetricsWindowSize равно 20, буфер метрик имеет 10 значений из ранее обработанного пакета, и 15 значений являются входящими. Для создания окна длины 20 используются измерения из 15 входящих наблюдений и 5 последних измерений из предыдущего пакета.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.