Обновите показатели производительности в наивной модели классификации Бейеса для пошагового обучения, данного новые данные, и обучите модель
Учитывая потоковую передачу данных, updateMetricsAndFit
сначала оценивает эффективность сконфигурированной наивной модели классификации Бейеса для пошагового обучения (incrementalClassificationNaiveBayes
объект) путем вызова updateMetrics
на входящих данных. То updateMetricsAndFit
подбирает модель к тем данным путем вызова fit
. Другими словами, updateMetricsAndFit
выполняет prequential evaluation, потому что он обрабатывает каждый входящий фрагмент данных как набор тестов и отслеживает показатели производительности, измеренные кумулятивно и по заданному окну [1].
updateMetricsAndFit
обеспечивает простой способ обновить метрики производительности модели и обучить модель на каждом фрагменте данных. В качестве альтернативы можно выполнить операции отдельно путем вызова updateMetrics
и затем fit
, который допускает больше гибкости (например, можно решить, необходимо ли обучить основанное на модели на его эффективности на фрагменте данных).
возвращает наивную модель классификации Бейеса для пошагового обучения Mdl
= updateMetricsAndFit(Mdl
,X
,Y
)Mdl
, который является входом наивная модель классификации Бейеса для пошагового обучения Mdl
со следующими модификациями:
updateMetricsAndFit
измеряет производительность модели на входящем предикторе и данных об ответе, X
и Y
соответственно. Когда входной моделью является warm (Mdl.IsWarm
true
), updateMetricsAndFit
перезаписи ранее вычислили метрики, сохраненные в Metrics
свойство, с новыми значениями. В противном случае, updateMetricsAndFit
хранилища NaN
значения в Metrics
вместо этого.
updateMetricsAndFit
подбирает модифицированную модель к входящим данным путем обновления условного следующего среднего и стандартного отклонения каждого переменного предиктора, учитывая класс, и хранит новые оценки, среди других настроек, в выходной модели Mdl
.
Модели ввода и вывода имеют совпадающий тип данных.
Создайте наивную модель классификации Бейеса для пошагового обучения путем вызова incrementalClassificationNaiveBayes
и определение максимума 5 ожидаемых классов в данных.
Mdl = incrementalClassificationNaiveBayes('MaxNumClasses',5)
Mdl = incrementalClassificationNaiveBayes IsWarm: 0 Metrics: [1×2 table] ClassNames: [1×0 double] ScoreTransform: 'none' DistributionNames: 'normal' DistributionParameters: {} Properties, Methods
Mdl
incrementalClassificationNaiveBayes
объект модели. Все его свойства только для чтения.
Mdl
должно быть подходящим к данным, прежде чем можно будет использовать их, чтобы выполнить любые другие операции.
Загрузите набор данных деятельности человека. Случайным образом переставьте данные.
load humanactivity n = numel(actid); rng(1); % For reproducibility idx = randsample(n,n); X = feat(idx,:); Y = actid(idx);
Для получения дополнительной информации на наборе данных, введите Description
в командной строке.
Реализуйте пошаговое обучение путем выполнения следующих действий в каждой итерации:
Симулируйте поток данных путем обработки фрагмента 50 наблюдений.
Перезапишите предыдущую инкрементную модель с новой, адаптированной к входящему наблюдению.
Сохраните условное среднее значение первого предиктора в первом классе , совокупные метрики и метрики окна, чтобы видеть, как они развиваются во время пошагового обучения.
% Preallocation numObsPerChunk = 50; nchunk = floor(n/numObsPerChunk); mc = array2table(zeros(nchunk,2),'VariableNames',["Cumulative" "Window"]); mu11 = zeros(nchunk,1); % Incremental fitting for j = 1:nchunk ibegin = min(n,numObsPerChunk*(j-1) + 1); iend = min(n,numObsPerChunk*j); idx = ibegin:iend; Mdl = updateMetricsAndFit(Mdl,X(idx,:),Y(idx)); mc{j,:} = Mdl.Metrics{"MinimalCost",:}; mu11(j + 1) = Mdl.DistributionParameters{1,1}(1); end
Mdl
incrementalClassificationNaiveBayes
объект модели, обученный на всех данных в потоке. Во время пошагового обучения и после того, как модель подогревается, updateMetricsAndFit
проверяет эффективность модели на входящем наблюдении, и затем подбирает модель к тому наблюдению.
Чтобы видеть, как показатели производительности и развитый во время обучения, постройте их на отдельных подграфиках.
figure; subplot(2,1,1) plot(mu11) ylabel('\beta_1') xlim([0 nchunk]); subplot(2,1,2) h = plot(mc.Variables); xlim([0 nchunk]); ylabel('Minimal Cost') xline(Mdl.MetricsWarmupPeriod/numObsPerChunk,'r-.'); legend(h,mc.Properties.VariableNames) xlabel('Iteration')
График предлагает тот updateMetricsAndFit
делает следующее:
Подгонки во время всех итераций пошагового обучения.
Вычислите показатели производительности после метрического периода прогрева только.
Вычислите совокупные метрики во время каждой итерации.
Вычислите метрики окна после обработки 500 наблюдений.
Обучите наивную модель классификации Бейеса при помощи fitcnb
, преобразуйте его в инкрементного ученика, отследите его эффективность при потоковой передаче данных и соответствуйте ему к данным в одном вызове. Задайте веса наблюдения.
Загрузите и предварительно обработайте данные
Загрузите набор данных деятельности человека. Случайным образом переставьте данные.
load humanactivity rng(1); % For reproducibility n = numel(actid); idx = randsample(n,n); X = feat(idx,:); Y = actid(idx);
Для получения дополнительной информации на наборе данных, введите Description
в командной строке.
Предположим, что данные собрались, когда предмет не перемещался (Y
<= 2), имеет дважды качество чем тогда, когда предмет перемещался. Создайте переменную веса, которая приписывает 2 наблюдениям, собранным из все еще предмет, и 1 к движущемуся предмету.
W = ones(n,1) + ~Y;
Обучите наивную байесовую модель классификации
Подбирайте наивную модель классификации Бейеса к случайной выборке половины данных.
idxtt = randsample([true false],n,true);
TTMdl = fitcnb(X(idxtt,:),Y(idxtt),'Weights',W(idxtt))
TTMdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' NumObservations: 12053 DistributionNames: {1×60 cell} DistributionParameters: {5×60 cell} Properties, Methods
TTMdl
ClassificationNaiveBayes
объект модели, представляющий традиционно обученную наивную модель классификации Бейеса.
Преобразуйте обученную модель
Преобразуйте традиционно обученную модель в наивную классификацию Бейеса для пошагового обучения. Задайте отслеживание misclassification коэффициента ошибок во время пошагового обучения.
IncrementalMdl = incrementalLearner(TTMdl,'Metrics',"classiferror")
IncrementalMdl = incrementalClassificationNaiveBayes IsWarm: 1 Metrics: [2×2 table] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' DistributionNames: {1×60 cell} DistributionParameters: {5×60 cell} Properties, Methods
IncrementalMdl
incrementalClassificationNaiveBayes
модель. Поскольку имена классов заданы в Mdl.ClassNames
, метки, с которыми сталкиваются во время пошагового обучения, должны быть в Mdl.ClassNames
.
Отдельно отследите показатели производительности и подбирайте модель
Выполните пошаговое обучение на остальной части данных при помощи updateMetricsAndfit
функция. В каждой итерации:
Симулируйте поток данных путем обработки 50 наблюдений за один раз.
Вызовите updateMetricsAndFit
обновить совокупные показатели производительности и показатели производительности окна модели, учитывая входящий фрагмент наблюдений, и затем подбирать модель к данным. Перезапишите предыдущую инкрементную модель, чтобы обновить потери в Metrics
свойство. Задайте веса наблюдения.
Сохраните misclassification коэффициент ошибок.
% Preallocation idxil = ~idxtt; nil = sum(idxil); numObsPerChunk = 50; nchunk = floor(nil/numObsPerChunk); mc = array2table(zeros(nchunk,2),'VariableNames',["Cumulative" "Window"]); Xil = X(idxil,:); Yil = Y(idxil); Wil = W(idxil); % 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),... 'Weights',Wil(idx)); mc{j,:} = IncrementalMdl.Metrics{"ClassificationError",:}; end
IncrementalMdl
incrementalClassificationNaiveBayes
объект модели, обученный на всех данных в потоке.
Постройте график трассировки misclassification коэффициента ошибок.
h = plot(mc.Variables); xlim([0 nchunk]); ylabel('Classification Error') legend(h,mc.Properties.VariableNames) xlabel('Iteration')
Совокупная потеря первоначально переходит, но стабилизирует приблизительно 0,05, тогда как потеря окна переходит.
Mdl
— Наивная Байесова модель классификации для пошагового обучения, уровень которого измерен и подходящий к даннымincrementalClassificationNaiveBayes
объект моделиНаивная Байесова модель классификации для пошагового обучения, уровень которого измерен и затем модель, является подходящей к данным в виде incrementalClassificationNaiveBayes
объект модели. Можно создать Mdl
непосредственно или путем преобразования поддерживаемой, традиционно обученной модели машинного обучения использование incrementalLearner
функция. Для получения дополнительной информации смотрите соответствующую страницу с описанием.
Если Mdl.IsWarm
false
, updateMetricsAndFit
не отслеживает эффективность модели. Для получения дополнительной информации смотрите показатели производительности.
X
— Фрагмент данных о предиктореФрагмент данных о предикторе, с которыми можно измерить производительность модели и затем подбирать модель к в виде n-by-Mdl.NumPredictors
матрица с плавающей точкой.
Продолжительность наблюдения маркирует Y
и количество наблюдений в X
должно быть равным; Y (
метка наблюдения j (строка или столбец) в j
)X
.
Примечание
Если Mdl.NumPredictors
= 0, updateMetricsAndFit
выводит количество предикторов от X
, и устанавливает конгруэнтное свойство выходной модели. В противном случае, если количество переменных предикторов в данных о потоковой передаче изменяется от Mdl.NumPredictors
, updateMetricsAndFit
выдает ошибку.
Типы данных: single
| double
Y
— Фрагмент метокФрагмент меток, с которыми можно измерить производительность модели и затем подбирать модель к в виде категориального, символа, или массива строк, логического или вектора с плавающей точкой или массива ячеек из символьных векторов.
Продолжительность наблюдения маркирует Y
и количество наблюдений в X
должно быть равным; Y (
метка наблюдения j (строка или столбец) в j
)X
. updateMetricsAndFit
выдает ошибку, когда по крайней мере одно из условий соблюдают:
Y
содержит метку, с которой недавно сталкиваются, и максимальное количество классов было достигнуто ранее (см. MaxNumClasses
и ClassNames
аргументы incrementalClassificationNaiveBayes
).
Типы данных Y
и Mdl.ClassNames
отличаются.
Типы данных: char |
string
| cell
| categorical
| logical
| single
| double
Weights
— Фрагмент весов наблюденияФрагмент весов наблюдения в виде вектора с плавающей точкой из положительных значений. updateMetricsAndFit
взвешивает наблюдения в X
с соответствующими значениями в Weights
. Размер Weights
должен равняться n, который является количеством наблюдений в X
.
По умолчанию, Weights
единицы (
.n
,1)
Для получения дополнительной информации, включая схемы нормализации, смотрите Веса Наблюдения.
Типы данных: double |
single
Примечание
Если наблюдение (предиктор или метка) или вес Weight
содержит по крайней мере одно отсутствие (NaN
Значение, updateMetricsAndFit
игнорирует наблюдение. Следовательно, updateMetricsAndFit
использование меньше, чем наблюдения n, чтобы вычислить производительность модели.
Mdl
— Обновленная наивная модель классификации Бейеса для пошагового обученияincrementalClassificationNaiveBayes
объект моделиОбновленная наивная модель классификации Бейеса для пошагового обучения, возвращенного как объект модели пошагового обучения совпадающего типа данных как входная модель Mdl
, incrementalClassificationNaiveBayes
.
Если модель не является теплой, updateMetricsAndFit
не вычисляет показатели производительности. В результате Metrics
свойство Mdl
остается абсолютно составленным из NaN
значения. Если модель является теплой, updateMetricsAndFit
вычисляет совокупные показатели производительности и показатели производительности окна на новых данных X
и Y
, и перезаписывает соответствующие элементы Mdl.Metrics
. Все другие свойства входной модели Mdl
перенесите на выходную модель Mdl
. Для получения дополнительной информации смотрите показатели производительности.
В дополнение к обновлению параметров модели распределения, updateMetricsAndFit
выполняет следующие действия когда Y
содержит ожидаемый, но необработанный, классы:
Если вы не задаете все ожидаемые классы при помощи ClassNames
аргумент значения имени, когда вы создаете входную модель Mdl
использование incrementalClassificationNaiveBayes
, updateMetricsAndFit
:
Добавляет любые метки, с которыми недавно сталкиваются, в Y
к хвосту Mdl.ClassNames
.
Расширяет Mdl.Cost
к c-by-c матрица, где c является количеством классов Mdl.ClassNames
. Получившаяся матрица стоимости misclassification сбалансирована.
Расширяет Mdl.Prior
к длине вектор c из обновленного эмпирического распределения класса.
Если вы задаете все ожидаемые классы, когда вы создаете входную модель Mdl
или преобразуйте традиционно обученное наивное использование модели Bayes incrementalLearner
, но вы не указываете, что misclassification стоил матрицы (Mdl.Cost
), updateMetricsAndFit
наборы misclassification затраты на обработанные классы к 1
и необработанные классы к NaN
. Например, если updateMetricsAndFit
обрабатывает первые два класса возможных трех классы, Mdl.Cost
[0 1 NaN; 1 0 NaN; 1 1 0]
.
В модели сумки лексем значении предиктора j является неотрицательным количеством случаев маркерного j в наблюдении. Количество категорий (интервалы) в модели многочлена является количеством отличных лексем (количество предикторов).
Если переменный предиктор j
имеет условное нормальное распределение (см. DistributionNames
свойство), программное обеспечение соответствует распределению к данным путем вычисления специфичного для класса взвешенного среднего и смещенного (наибольшее правдоподобие) оценка взвешенного стандартного отклонения. Для каждого класса k:
Взвешенное среднее предиктора j
где wi является весом для наблюдения i. Программное обеспечение нормирует веса в классе, таким образом, что они суммируют к априорной вероятности для того класса.
Несмещенное средство оценки взвешенного стандартного отклонения предиктора j
Если все переменные предикторы составляют условное распределение многочлена (см. DistributionNames
свойство), программное обеспечение соответствует распределению с помощью Модели Сумки Лексем. Программное обеспечение хранит вероятность тот маркерный j
появляется в классе k
в свойстве DistributionParameters {
. С дополнением, сглаживающим [2], предполагаемая вероятностьk
J
}
где:
который является взвешенным количеством случаев маркерного j в классе k.
nk является количеством наблюдений в классе k.
вес для наблюдения i. Программное обеспечение нормирует веса в классе так, чтобы они суммировали к априорной вероятности для того класса.
который является общим взвешенным количеством случаев всех лексем в классе k.
Если переменный предиктор j
имеет условное многомерное распределение многочлена (см. DistributionNames
свойство), программное обеспечение выполняет эту процедуру:
Программное обеспечение собирает список уникальных уровней, хранит отсортированный список в CategoricalLevels
, и считает каждый уровень интервалом. Каждая комбинация предиктора и класса является отдельной, независимой случайной переменной многочлена.
Для каждого класса k, экземпляры программно-реализованных счетчиков каждого категориального уровня с помощью списка, сохраненного в CategoricalLevels {
.j
}
Программное обеспечение хранит вероятность тот предиктор j
в классе k
имеет уровень L в свойстве DistributionParameters {
, для всех уровней в k
J
}CategoricalLevels {
. С дополнением, сглаживающим [2], предполагаемая вероятностьj
}
где:
который является взвешенным количеством наблюдений, для которого предиктора j равняется L в классе k.
nk является количеством наблюдений в классе k.
если xij = L, и 0 в противном случае.
вес для наблюдения i. Программное обеспечение нормирует веса в классе так, чтобы они суммировали к априорной вероятности для того класса.
mj является количеством отличных уровней в предикторе j.
mk является взвешенным количеством наблюдений в классе k.
updateMetricsAndFit
метрики производительности модели дорожек, заданные метками строки таблицы в Mdl.Metrics
, из новых данных, когда инкрементной моделью является warm (IsWarm
свойством является true
). Инкрементная модель является теплой когда инкрементный подбор кривой, как updateMetricsAndFit
выполняет оба из следующих действий:
Подбирайте инкрементную модель к Mdl.MetricsWarmupPeriod
наблюдения, который является metrics warm-up period.
Подбирайте инкрементную модель ко всем ожидаемым классам (см. MaxNumClasses
и ClassNames
аргументы incrementalClassificationNaiveBayes
)
Mdl.Metrics
хранилища две формы каждого показателя производительности как переменные (столбцы) таблицы, Cumulative
и Window
, с отдельными метриками в строках. Когда инкрементная модель является теплой, updateMetricsAndFit
обновляет метрики на следующих частотах:
Cumulative
— Функция вычисляет совокупные метрики начиная с запуска отслеживания производительности модели. Функция обновляет метрики каждый раз, когда вы вызываете функцию, и основывает вычисление на целом предоставленном наборе данных.
Window
— Функция вычисляет метрики на основе всех наблюдений в окне, определенном Mdl.MetricsWindowSize
свойство. Mdl.MetricsWindowSize
также определяет частоту в который обновления программного обеспечения Window
метрики. Например, если Mdl.MetricsWindowSize
20, функция вычисляет метрики на основе последних 20 наблюдений в данных, которыми снабжают (X((end – 20 + 1):end,:)
и Y((end – 20 + 1):end)
).
Инкрементные функции, которые отслеживают показатели производительности в окне, используют следующий процесс:
Для каждой заданной метрики сохраните буфер длины Mdl.MetricsWindowSize
и буфер весов наблюдения.
Заполните элементы метрического буфера с производительностью модели на основе пакетов входящих наблюдений и сохраните соответствующие веса наблюдений в буфере весов.
Когда буфер заполнен, перезапись Mdl.Metrics.Window
со средневзвешенной эффективностью в метрическом окне. Если буфер переполнен когда функциональные процессы пакет наблюдений, последнего входящего Mdl.MetricsWindowSize
наблюдения вводят буфер, и самые ранние наблюдения удалены из буфера. Например, предположите Mdl.MetricsWindowSize
20, метрический буфер имеет 10 значений от ранее обработанного пакета, и поступают 15 значений. Чтобы составить длину 20 окон, функция использует измерения от 15 входящих наблюдений и последние 5 измерений от предыдущего пакета.
Для каждого условного распределения предиктора, updateMetricsAndFit
вычисляет средневзвешенное и стандартное отклонение.
Если предшествующее вероятностное распределение класса известно (другими словами, предшествующее распределение не является эмпирическим), updateMetricsAndFit
нормирует веса наблюдения, чтобы суммировать к предшествующим вероятностям класса в соответствующих классах. Это действие подразумевает, что веса наблюдения по умолчанию являются соответствующими предшествующими вероятностями класса.
Если предшествующее вероятностное распределение класса является эмпирическим, программное обеспечение нормирует заданные веса наблюдения, чтобы суммировать к 1 каждому разу, когда вы вызываете updateMetricsAndFit
.
Поведение изменяется в R2021b
Запуск в R2021b, наивный Бейес инкрементные подходящие функции fit
и updateMetricsAndFit
вычислите смещенный (наибольшее правдоподобие) оценки взвешенных стандартных отклонений для условно нормальных переменных предикторов во время обучения. Другими словами, для каждого класса k, инкрементные подходящие функции нормируют сумму взвешенных отклонений квадрата условно нормального предиктора xj суммой весов в классе k. Перед R2021b наивный Бейес инкрементные подходящие функции вычислили несмещенное стандартное отклонение, как fitcnb
. В настоящее время возвращенные взвешенные оценки стандартного отклонения отличаются от вычисленных перед R2021b на коэффициент
Фактор приближается 1, когда объем выборки увеличивается.
[1] Bifet, Альберт, Ricard Gavaldá, Джеффри Холмс и Бернхард Пфарингер. Machine Learning for Data Streams with Practical Example in MOA. Кембридж, MA: нажатие MIT, 2007.
[2] Укомплектование людьми, Кристофер Д., Prabhakar Raghavan и Hinrich Schütze. Введение в Информэйшн-Ретривэл, Нью-Йорк: Издательство Кембриджского университета, 2008.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.