Логгирование безусловной плотности вероятностей наивной модели классификации Байеса для инкрементного обучения
возвращает журнал безусловные плотности вероятностей
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.