Преобразуйте наивную модель классификации Бейеса в инкрементного ученика
возвращает наивную модель классификации Бейеса для пошагового обучения, IncrementalMdl
= incrementalLearner(Mdl
)IncrementalMdl
, с помощью гиперпараметров традиционно обученной наивной модели классификации Бейеса, Mdl
. Поскольку его значения свойств отражают знание, полученное от Mdl
, IncrementalMdl
может предсказать метки, данные новые наблюдения, и это - warm, означая, что его прогнозирующая эффективность прослежена.
дополнительные опции использования заданы одним или несколькими аргументами пары "имя-значение". Некоторые опции требуют, чтобы вы обучили IncrementalMdl
= incrementalLearner(Mdl
,Name,Value
)IncrementalMdl
прежде чем его прогнозирующая эффективность прослежена. Например, 'MetricsWarmupPeriod',50,'MetricsWindowSize',100
задает предварительный инкрементный период подготовки 50 наблюдений, прежде чем показатели производительности будут прослежены, и задает обработку 100 наблюдений прежде, чем обновить показатели производительности.
Обучите наивную модель Bayes при помощи 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.
Используйте обученную наивную модель Bayes, чтобы инициализировать инкрементного ученика. Подготовьте инкрементного ученика путем определения метрического периода прогрева, во время который 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);
Подбирайте наивную модель Bayes к первой половине данных.
TTMdl = fitcnb(Xtt,Ytt);
Преобразуйте традиционно обученную наивную модель Бейеса в наивную модель классификации Бейеса для пошагового обучения. Задайте следующее:
Период прогрева показателей производительности 2 000 наблюдений
Метрический размер окна 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
— Традиционно обученная наивная модель Bayes для классификации мультиклассовClassificationNaiveBayes
объект моделиТрадиционно обученная наивная модель Bayes для классификации мультиклассов в виде ClassificationNaiveBayes
объект модели, возвращенный fitcnb
. Условное распределение каждого переменного предиктора, как сохранено в Mdl.DistributionNames
, должно быть нормальным.
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'Metrics',["classiferror" "mincost"],'MetricsWindowSize',100
задает отслеживание misclassification уровня и минимальной стоимости, и задает обработку 100 наблюдений прежде, чем обновить показатели производительности.'Metrics'
— Метрики производительности модели, чтобы отследить во время пошагового обучения"mincost"
(значение по умолчанию) | "classiferror"
| представьте вектор в виде строки | указатель на функцию | вектор ячейки | массив структур | "binodeviance"
| "exponential"
| "hinge"
| "logit"
| "quadratic"
| ...Метрики производительности модели, чтобы отследить во время пошагового обучения с updateMetrics
или updateMetricsAndFit
функция в виде встроенного имени функции потерь, представьте вектор в виде строки из имен, указатель на функцию (@metricName
), массив структур указателей на функцию или вектор ячейки из имен, указателей на функцию или массивов структур.
В следующей таблице перечислены встроенные имена функции потерь. Можно задать больше чем один при помощи вектора строки.
Имя | Описание |
---|---|
"binodeviance" | Биномиальное отклонение |
"classiferror" | Ошибка классификации |
"exponential" | Экспоненциал |
"hinge" | Стержень |
"logit" | Логистический |
'"mincost" | Минимальный ожидал стоимость misclassification (для классификационных оценок, которые являются апостериорными вероятностями), |
"quadratic" | Квадратичный |
Для получения дополнительной информации о встроенных функциях потерь смотрите loss
.
Пример: 'Metrics',["classiferror" "mincost"]
Чтобы задать пользовательскую функцию, которая возвращает показатель производительности, используйте обозначение указателя на функцию. Функция должна иметь эту форму:
metric = customMetric(C,S,Cost)
Выходной аргумент metric
n-by-1 числовой вектор, где каждым элементом является потеря соответствующего наблюдения в данных, обработанных функциями пошагового обучения во время цикла изучения.
Вы выбираете имя функции (customMetric
).
C
n-by-K логическая матрица со строками, указывающими на класс, которому принадлежит соответствующее наблюдение, где K является количеством классов. Порядок следования столбцов соответствует порядку класса в ClassNames
свойство. Создайте C
установкой C (
= 1 p
Q
), если наблюдение
находится в классе p
, для каждого наблюдения в заданных данных. Установите другой элемент в строке q
к p
0
.
S
n-by-K числовая матрица предсказанных классификационных оценок. S
похоже на Score
выход predict
, где строки соответствуют наблюдениям в данных, и порядок следования столбцов соответствует порядку класса в ClassNames
свойство. S (
классификационная оценка наблюдения p
Q
)
будучи классифицированным на класс p
.q
Cost
K-by-K числовая матрица затрат misclassification. Смотрите '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'
— Количество подгонки наблюдений прежде, чем отследить показатели производительности
(значение по умолчанию) | неотрицательное целое числоЭто свойство доступно только для чтения.
Количество наблюдений, инкрементная модель должна быть подходящей к тому, прежде чем это отследит показатели производительности в своем Metrics
свойство в виде неотрицательного целого числа.
Для получения дополнительной информации смотрите показатели производительности.
Типы данных: single
| double
'MetricsWindowSize'
— Количество наблюдений, чтобы использоваться для расчета показателей производительности окна
(значение по умолчанию) | положительное целое числоЭто свойство доступно только для чтения.
Количество наблюдений, чтобы использоваться для расчета показателей производительности окна в виде положительного целого числа.
Для получения дополнительной информации об опциях показателей производительности смотрите показатели производительности.
Типы данных: single
| double
IncrementalMdl
— Наивная Байесова классификация для пошагового обученияincrementalClassificationNaiveBayes
объект моделиНаивная Байесова модель классификации для пошагового обучения, возвращенного как incrementalClassificationNaiveBayes
объект модели. IncrementalMdl
также сконфигурирован, чтобы сгенерировать предсказания, данные новые данные (см. predict
).
Инициализировать IncrementalMdl
для пошагового обучения, incrementalLearner
передает значения свойств Mdl
в этой таблице к конгруэнтным свойствам IncrementalMdl
.
Свойство | Описание |
---|---|
ClassNames | Класс помечает для бинарной классификации, списка имен |
Cost | Затраты Misclassification, числовая матрица |
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
аргумент значения имени.
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.