Предсказать ответы на новые наблюдения из наивной модели классификации Байеса для инкрементного обучения
[
также возвращает апостериорные вероятности (label
,Posterior
,Cost
] = predict(Mdl
,X
)Posterior
) и прогнозируемые (ожидаемые) затраты на неправильную классификацию (Cost
), соответствующий наблюдениям (строкам) в X
. Для каждого наблюдения в X
, предсказанная метка класса соответствует минимальным ожидаемым затратам классификации среди всех классов.
Загрузите набор данных о деятельности человека.
load humanactivity
Для получения дополнительной информации о наборе данных введите Description
в командной строке.
Подбор наивной модели классификации Байеса ко всему набору данных.
TTMdl = fitcnb(feat,actid)
TTMdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' NumObservations: 24075 DistributionNames: {1×60 cell} DistributionParameters: {5×60 cell} Properties, Methods
TTMdl
является ClassificationNaiveBayes
объект модели, представляющий традиционно обученную модель.
Преобразуйте традиционно обученную модель в наивную классификационную модель Байеса для инкрементного обучения.
IncrementalMdl = incrementalLearner(TTMdl)
IncrementalMdl = incrementalClassificationNaiveBayes IsWarm: 1 Metrics: [1×2 table] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' DistributionNames: {1×60 cell} DistributionParameters: {5×60 cell} Properties, Methods
IncrementalMdl
является incrementalClassificationNaiveBayes
объект модели, подготовленный для инкрементного обучения.
The incrementalLearner
функция инициализирует инкрементального обучающегося путем передачи ему выученных параметров условного распределения предиктора вместе с другой информацией TTMdl
узнал из обучающих данных.
IncrementalMdl
тепло (IsWarm
является 1
), что означает, что инкрементальные функции обучения могут начать отслеживать метрики эффективности.
Инкрементный ученик, созданный из преобразования традиционно обученной модели, может генерировать предсказания без дальнейшей обработки.
Спрогнозируйте метки классов для всех наблюдений, используя обе модели.
ttlabels = predict(TTMdl,feat); illables = predict(IncrementalMdl,feat); sameLabels = sum(ttlabels ~= illables) == 0
sameLabels = logical
1
Обе модели предсказывают одни и те же метки для каждого наблюдения.
Загрузите набор данных о деятельности человека. Случайным образом перетасуйте данные.
load humanactivity n = numel(actid); rng(10); % For reproducibility idx = randsample(n,n); X = feat(idx,:); Y = actid(idx);
Для получения дополнительной информации о наборе данных введите Description
в командной строке.
Создайте наивную модель классификации Байеса для инкрементного обучения; задайте имена классов. Подготовьте его к predict
путем подгонки модели к первым 10 наблюдениям.
Mdl = incrementalClassificationNaiveBayes('ClassNames',unique(Y));
initobs = 10;
Mdl = fit(Mdl,X(1:initobs,:),Y(1:initobs));
canPredict = size(Mdl.DistributionParameters,1) == numel(Mdl.ClassNames)
canPredict = logical
1
Mdl
является incrementalClassificationNaiveBayes
модель. Все его свойства доступны только для чтения. Модель сконфигурирована, чтобы генерировать предсказания.
Симулируйте поток данных и выполните следующие действия на каждом входящем фрагменте из 100 наблюдений.
Функции predict
вычислить апостериорные вероятности классов для каждого наблюдения во входящем фрагменты данных.
Рассмотрите пошаговое измерение того, насколько хорошо модель предсказывает, танцует ли субъект (Y равно 5). Можно выполнить это путем вычисления AUC кривой ROC, созданной передачей, для каждого наблюдения в фрагменте, различии между апостериорной вероятностью класса 5 и максимальной апостериорной вероятностью среди других классов perfcurve
.
Функции fit
для подгонки модели к входящему фрагменту. Перезаписать предыдущую инкрементальную модель на новую, подобранную входящему наблюдению.
numObsPerChunk = 100; nchunk = floor((n - initobs)/numObsPerChunk) - 1; Posterior = zeros(nchunk,numel(Mdl.ClassNames)); auc = zeros(nchunk,1); classauc = 5; % Incremental learning for j = 1:nchunk ibegin = min(n,numObsPerChunk*(j-1) + 1 + initobs); iend = min(n,numObsPerChunk*j + initobs); idx = ibegin:iend; [~,Posterior(idx,:)] = predict(Mdl,X(idx,:)); diffscore = Posterior(idx,classauc) - max(Posterior(idx,setdiff(Mdl.ClassNames,classauc)),[],2); [~,~,~,auc(j)] = perfcurve(Y(idx),diffscore,Mdl.ClassNames(classauc)); Mdl = fit(Mdl,X(idx,:),Y(idx)); end
Mdl
является incrementalClassificationNaiveBayes
объект модели обучен на всех данных в потоке.
Постройте график AUC на входящих фрагментах данных.
plot(auc) ylabel('AUC') xlabel('Iteration')
AUC предполагает, что классификатор правильно предсказывает танцевальные предметы хорошо во время инкрементного обучения.
Mdl
- Наивная классификационная модель Байеса для инкрементного обученияincrementalClassificationNaiveBayes
объект моделиНаивная модель классификации Байеса для инкрементного обучения, заданная как incrementalClassificationNaiveBayes
объект модели. Можно создавать Mdl
непосредственно или путем преобразования поддерживаемой, традиционно обученной модели машинного обучения с помощью incrementalLearner
функция. Для получения дополнительной информации см. соответствующую страницу с описанием.
Необходимо сконфигурировать Mdl
для предсказания меток для пакета наблюдений.
Если Mdl
является преобразованной, традиционно обученной моделью, можно предсказать метки без каких-либо изменений.
В противном случае Mdl.DistributionParameters
должна быть матрицей камер с Mdl.NumPredictors
> 0 столбцов и по крайней мере одна строка, где каждая строка соответствует каждому имени класса в Mdl.ClassNames
.
X
- Пакет данных предиктораПакет данных предиктора, для которого можно предсказать метки, заданный как n -by- Mdl.NumPredictors
матрица с плавающей точкой.
Длина меток наблюдений Y
и количество наблюдений в X
должна быть равной; Y
- метка j наблюдения (строка или столбец) в (j
)X
.
Примечание
predict
поддерживает только входные данные предиктора с плавающей точкой. Если модель входа Mdl
представляет собой преобразованную, традиционно обученную модель, подходящую для категориальных данных, использование dummyvar
чтобы преобразовать каждую категориальную переменную в числовую матрицу фиктивных переменных и объединить все фиктивные переменные матрицы и любые другие числовые предикторы. Для получения дополнительной информации см. Dummy Переменных.
Типы данных: single
| double
label
- Предсказанные откликиПредсказанные отклики (или метки), возвращенные как категориальный или символьный массив; вектор с плавающей точкой, логический или строковый; или массив ячеек из векторов символов с n строками. n - количество наблюдений в X
, и метка
- предсказанная реакция на наблюдение (j
)
. j
label
имеет тот совпадающий тип данных, что и имена классов, хранящиеся в Mdl.ClassNames
. (Программа обрабатывает массивы строк как массивы ячеек векторов символов.)
Posterior
- Апостериорные вероятности классаАпостериорные вероятности класса, возвращенные как n-на-2 матрица с плавающей точкой. Апостериорный
- апостериорная вероятность того, что наблюдение (j
, k
)
находится в j
. k классов
Mdl.ClassNames
задает порядок классов.
Cost
- Ожидаемые расходы на неправильную классификациюОжидаемые затраты на неправильную классификацию, возвращенные как n -by- numel(Mdl.ClassNames)
матрица с плавающей точкой.
Стоимость
- ожидаемая стоимость неправильной классификации наблюдения в строке (j
, k
)
от j
X
предсказано в
классовk
(Mdl. ClassNames (
).k
)
А misclassification cost - это относительная серьезность классификатора, маркирующего наблюдение не в тот класс.
Существует два вида расходов на неправильную классификацию: истинные и ожидаемые. Позвольте K быть количеством классов.
True misclassification cost - A K -by - K матрица, где элемент (i, j) указывает на стоимость неправильной классификации предсказания наблюдения в j класса, если его истинный класс i. Программное обеспечение хранит затраты на неправильную классификацию в свойстве Mdl.Cost
, и использует его в расчетах. По умолчанию Mdl.Cost(i,j)
= 1, если i
≠ j
, и Mdl.Cost(i,j)
= 0, если i
= j
. Другими словами, стоимость 0
для правильной классификации и 1
для любой неправильной классификации.
Expected misclassification cost - K -мерный вектор, где k элемента - средневзвешенные затраты на неправильную классификацию классификации наблюдений в k классов, взвешенные апостериорными вероятностями классов.
Другими словами, программное обеспечение классифицирует наблюдения к классу, соответствующему самой низкой ожидаемой стоимости неправильной классификации.
Это posterior probability вероятность того, что наблюдение принадлежит конкретному классу, учитывая данные.
Для наивного Байеса апостериорная вероятность того, что классификация k для заданного наблюдения (x 1,..., xP), является
где:
- условная плотность соединений предикторов, заданная ими в k классов. Mdl.DistributionNames
сохраняет имена распределения предикторов.
π (Y = k) является априорным распределением вероятностей класса. Mdl.Prior
сохраняет предыдущее распределение.
- плотность соединений предикторов. Классы дискретны, поэтому
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.