Преобразуйте наивную модель классификации Байеса в инкрементную обучающуюся
возвращает наивную модель классификации Байеса для инкрементного обучения, IncrementalMdl
= incrementalLearner(Mdl
)IncrementalMdl
, используя гиперпараметры традиционно обученной наивной классификационной модели Байеса, Mdl
. Потому что значения его свойств отражают знания, полученные от Mdl
, IncrementalMdl
может предсказывать метки, заданные новые наблюдения, и это warm, что означает, что его прогнозирующая эффективность отслеживается.
использует дополнительные опции, заданные одним или несколькими аргументами пары "имя-значение". Некоторые опции требуют от вас обучения 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
объект модели, подготовленный для инкрементного обучения с использованием наивной классификации Байеса.
The 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
проверяет эффективность модели при входящем наблюдении, а затем подбирает модель к этому наблюдению.
Чтобы увидеть, как метрики эффективности и развивался во время обучения, строил их на отдельных подграфиках.
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 классов
на p
0
.
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" |
Анонимная функция | , где метрический в 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 ) |
Incremental learning, или online learning, является ветвью машинного обучения, связанная с обработкой входящих данных из потока данных, возможно, практически не учитывая распределения переменных предиктора, аспектов предсказания или целевой функции (включая настройку значений параметров) или того, помечены ли наблюдения. Инкрементальное обучение отличается от традиционного машинного обучения, где доступно достаточно маркированных данных, чтобы соответствовать модели, выполнить перекрестную валидацию, чтобы настроить гиперпараметры и вывести распределение предиктора.
Учитывая входящие наблюдения, модель инкрементного обучения обрабатывает данные любым из следующих способов, но обычно в этом порядке:
Спрогнозируйте метки.
Измерьте прогнозирующую эффективность.
Проверьте наличие структурных пропусков или дрейфа в модели.
Подбор модели к входящим наблюдениям.
updateMetrics
и updateMetricsAndFit
функции отслеживают метрики производительности модели ('Metrics'
) из новых данных, когда инкрементальная модель warm (IsWarm
свойство). Инкрементальная модель тепла, когда fit
или updateMetricsAndFit
выполните оба из следующих действий:
Подгонка инкрементальной модели к наблюдениям 'MetricsWarmupPeriod', который является metrics warm-up period.
Обработка MaxNumClasses
классы или все имена классов, заданные ClassNames
аргумент имя-значение.
The Metrics
свойство инкрементальной модели хранит две формы каждой метрики эффективности как переменные (столбцы) таблицы, Cumulative
и Window
, с отдельными метриками в строках. Когда инкрементальная модель теплая, updateMetrics
и updateMetricsAndFit
обновлять метрики на следующих частотах:
Cumulative
- Функции вычисляют совокупные метрики с начала отслеживания производительности модели. Функции обновляют метрики каждый раз, когда вы вызываете функции и основываете вычисление на целом поставленном наборе данных.
Window
- функции вычисляют метрики на основе всех наблюдений в окне, определяемом аргументом пары "имя-значение" 'MetricsWindowSize'. 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.