Регистрируйте безусловную плотность вероятности наивной модели классификации Бейеса для пошагового обучения
возвращает журнал безусловные плотности вероятности
lp = logp(Mdl,X)lp из наблюдений в данных о предикторе X использование наивной модели классификации Бейеса для пошагового обучения Mdl. Можно использовать lp идентифицировать выбросы в обучающих данных.
Обучите наивную модель классификации Бейеса при помощи fitcnb, преобразуйте его в инкрементного ученика, и затем используйте инкрементную модель, чтобы обнаружить выбросы в потоковой передаче данных.
Загрузите и предварительно обработайте данные
Загрузите набор данных деятельности человека. Случайным образом переставьте данные.
load humanactivity rng(1); % For reproducibility n = numel(actid); idx = randsample(n,n); X = feat(idx,:); Y = actid(idx);
Для получения дополнительной информации на наборе данных, введите Description в командной строке.
Обучите наивную байесовую модель классификации
Подбирайте наивную модель классификации Бейеса к случайной выборке приблизительно 25% данных.
idxtt = randsample([true false false false],n,true); TTMdl = fitcnb(X(idxtt,:),Y(idxtt))
TTMdl =
ClassificationNaiveBayes
ResponseName: 'Y'
CategoricalPredictors: []
ClassNames: [1 2 3 4 5]
ScoreTransform: 'none'
NumObservations: 6167
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 объект. IncrementalMdl представляет наивную модель классификации Бейеса для пошагового обучения; значения параметров совпадают с параметрами в TTMdl.
Обнаружьте выбросы
Определите безусловные пороги плотности для выбросов при помощи традиционно обученных данных модели и обучающих данных. Наблюдения в плотности получения данных о потоковой передаче вне порогов рассматриваются выбросами.
ttlp = logp(TTMdl,X(idxtt,:)); [~,lower,upper] = isoutlier(ttlp)
lower = -336.0424
upper = 399.9853
Обнаружьте выбросы в остальной части данных, относительно того, что было изучено, чтобы создать TTMdl. Симулируйте поток данных путем обработки 1 наблюдения за один раз. В каждой итерации вызовите logp вычислить журнал безусловная плотность вероятности наблюдения и сохранить каждое значение.
% Preallocation idxil = ~idxtt; nil = sum(idxil); numObsPerChunk = 1; nchunk = floor(nil/numObsPerChunk); lp = zeros(nchunk,1); iso = false(nchunk,1); Xil = X(idxil,:); Yil = Y(idxil); % Incremental fitting for j = 1:nchunk ibegin = min(nil,numObsPerChunk*(j-1) + 1); iend = min(nil,numObsPerChunk*j); idx = ibegin:iend; lp(j) = logp(IncrementalMdl,Xil(idx,:)); iso(j) = ((lp(j) < lower) + (lp(j) > upper)) >= 1; end
Постройте журнал безусловные плотности вероятности данных о потоковой передаче. Идентифицируйте выбросы.
figure; h1 = plot(lp); hold on x = 1:nchunk; h2 = plot(x(iso),lp(iso),'r*'); h3 = line(xlim,[lower lower],'Color','g','LineStyle','--'); line(xlim,[upper upper],'Color','g','LineStyle','--') xlim([0 nchunk]); ylabel('Unconditional Density') xlabel('Iteration') legend([h1 h2 h3],["Log unconditional probabilities" "Outliers" "Threshold"]) hold off

Mdl — Наивная Байесова модель классификации для пошагового обученияincrementalClassificationNaiveBayes объект моделиНаивная Байесова модель классификации для пошагового обучения в виде incrementalClassificationNaiveBayes объект модели. Можно создать Mdl непосредственно или путем преобразования поддерживаемой, традиционно обученной модели машинного обучения использование incrementalLearner функция. Для получения дополнительной информации смотрите соответствующую страницу с описанием.
Необходимо сконфигурировать Mdl вычислить логарифмическую плотность условной вероятности на пакете наблюдений.
Если Mdl конвертированная, традиционно обученная модель, можно вычислить логарифмические условные вероятности без любых модификаций.
В противном случае, Mdl.DistributionParameters должна быть матрица ячейки с Mdl.NumPredictors > 0 столбцов и по крайней мере одна строка, где каждая строка соответствует каждому имени класса в Mdl.ClassNames.
X — Пакет данных о предиктореПакет данных о предикторе, с которыми можно вычислить логарифмическую плотность условной вероятности в виде n-by-Mdl.NumPredictors матрица с плавающей точкой.
Примечание
logp поддержки только входные данные о предикторе с плавающей точкой. Если входная модель Mdl представляет конвертированное, традиционно обучил подгонку модели к категориальным данным, использовать dummyvar преобразовывать каждую категориальную переменную в числовую матрицу фиктивных переменных и конкатенировать все фиктивные переменные матрицы и любые другие числовые предикторы. Для получения дополнительной информации смотрите Фиктивные Переменные.
Для каждого j = 1 через n, если X ( содержит по крайней мере один j,:)NaN, LP ( j)isnan.
Типы данных: single | double
lp — Регистрируйте плотность условной вероятностиРегистрируйте безусловные плотности вероятности, возвращенные как n-by-1 вектор с плавающей точкой. LP ( журнал безусловная плотность вероятности предикторовj), вычисленных в x (.j,:)
Типы данных: single | double
unconditional probability density предикторов является распределением плотности, маргинализованным по классам.
Другими словами, безусловная плотность вероятности
где π (Y = k) является априорной вероятностью класса. Условное распределение данных, учитывая класс (P (X 1.., XP |y = k)), и априорные распределения вероятностей класса являются опциями обучения (то есть, вы задаете их когда обучение классификатор).
prior probability класса является принятой относительной частотой, с которой наблюдения от того класса происходят в населении.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.