Предскажите ответы для новых наблюдений из наивной модели классификации Бейеса для пошагового обучения
[
также возвращает апостериорные вероятности (label
,Posterior
,Cost
] = predict(Mdl
,X
)Posterior
) и предсказанный (ожидал) затраты misclassification (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
объект модели подготовлен к пошаговому обучению.
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
преобразовывать каждую категориальную переменную в числовую матрицу фиктивных переменных и конкатенировать все фиктивные переменные матрицы и любые другие числовые предикторы. Для получения дополнительной информации смотрите Фиктивные Переменные.
Типы данных: single
| double
label
— Предсказанные ответыПредсказанные ответы (или метки), возвращенный как категориальное или символьный массив; с плавающей точкой, логический, или вектор строки; или массив ячеек из символьных векторов со строками n. n является количеством наблюдений в X
, и метка (
предсказанный ответ для наблюдения j
)
. j
label
имеет совпадающий тип данных как имена классов, сохраненные в Mdl.ClassNames
. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.)
Posterior
— Апостериорные вероятности классаАпостериорные вероятности класса, возвращенные как n-by-2 матрица с плавающей точкой. Следующий (
апостериорная вероятность то наблюдение j
K
)
находится в классе j
. k
Mdl.ClassNames
задает порядок классов.
Cost
— Ожидаемые затраты misclassificationОжидаемые затраты misclassification, возвращенные как n-by-numel(Mdl.ClassNames)
матрица с плавающей точкой.
Стойте (
ожидаемая misclassification стоимость наблюдения в строке j
K
)
из j
X
предсказанный в класс
(k
Mdl. ClassNames (
).k
)
misclassification cost является относительной серьезностью классификатора, маркирующего наблюдение в неправильный класс.
Существует два типа затрат misclassification: верный и ожидаемый. Позвольте K быть количеством классов.
True misclassification cost — K-by-K матрица, где элемент (i, j) указывает на misclassification стоимость предсказания наблюдения в класс j, если его истинным классом является i. Программное обеспечение хранит стоимость misclassification в свойстве Mdl.Cost
, и использование это в расчетах. По умолчанию, Mdl.Cost(i,j)
= 1, если i
≠ j
, и Mdl.Cost(i,j)
= 0, если i
= j
. Другими словами, стоимостью является 0
для правильной классификации и 1
для любой неправильной классификации.
Expected misclassification cost — K - размерный вектор, где элемент k является взвешенным средним misclassification стоимость классификации наблюдения в класс k, взвешенный апостериорными вероятностями класса.
Другими словами, программное обеспечение классифицирует наблюдения к классу, соответствующему с самой низкой ожидаемой стоимостью misclassification.
posterior probability является вероятностью, что наблюдение принадлежит конкретного класса, учитывая данные.
Для наивного Бейеса апостериорная вероятность, что классификацией является k для заданного наблюдения (x 1..., xP)
где:
условная объединенная плотность предикторов, учитывая, они находятся в классе k. Mdl.DistributionNames
хранит имена распределения предикторов.
π (Y = k) является априорным распределением вероятностей класса. Mdl.Prior
хранит предшествующее распределение.
объединенная плотность предикторов. Классы дискретны, таким образом,
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.