Логгирование безусловной плотности вероятностей наивной модели классификации Байеса для инкрементного обучения
возвращает журнал безусловные плотности вероятностей
lplp = logp(Mdl,X) наблюдений в данных предиктора 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 чтобы преобразовать каждую категориальную переменную в числовую матрицу фиктивных переменных и объединить все фиктивные переменные матрицы и любые другие числовые предикторы. Для получения дополнительной информации см. Dummy Переменных.
Для каждого j = 1 - n, если X содержит, по крайней мере, один (j,:)NaN, lp является (j)NaN.
Типы данных: single | double
lp - Каротаж условных плотностей вероятностейЛоггирование безусловных плотностей вероятностей, возвращаемое как n-на-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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.