Логарифмическая безусловная плотность вероятности наивной модели классификации Байеса для инкрементного обучения
возвращает логарифмические безусловные плотности вероятности
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 в командной строке.
Модель классификации Train Naive Bayes
Подбор наивной модели классификации Байеса для случайной выборки около 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)NaN.
Типы данных: single | double
lp - Логарифмические условные плотности вероятностиЛогарифмические безусловные плотности вероятности, возвращаемые в виде вектора с плавающей запятой n-by-1. lp( - логарифмическая безусловная плотность вероятности предикторов, оцененная на j)X(.j,:)
Типы данных: single | double
Безусловная плотность вероятности предикторов - это распределение плотности, маргинализированное по классам.
Другими словами, безусловная плотность вероятности равна
= k) (Y = k),
где δ (Y = k) - вероятность предшествующего класса. Условное распределение данных, задаваемое классом (P (X1,.., XP 'y = k)) и классовое предварительное распределение вероятностей - это варианты обучения (то есть, вы указываете их при обучении классификатора).
Предшествующая вероятность класса - предполагаемая относительная частота, с которой наблюдения из этого класса происходят в популяции.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.