logp

Регистрируйте безусловную плотность вероятности наивной модели классификации Бейеса для пошагового обучения

Синтаксис

Описание

пример

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: {1x60 cell}
    DistributionParameters: {5x60 cell}


  Properties, Methods

TTMdl ClassificationNaiveBayes объект модели, представляющий традиционно обученную модель.

Преобразуйте обученную модель

Преобразуйте традиционно обученную модель в наивную модель классификации Бейеса для пошагового обучения.

IncrementalMdl = incrementalLearner(TTMdl)
IncrementalMdl = 
  incrementalClassificationNaiveBayes

                    IsWarm: 1
                   Metrics: [1x2 table]
                ClassNames: [1 2 3 4 5]
            ScoreTransform: 'none'
         DistributionNames: {1x60 cell}
    DistributionParameters: {5x60 cell}


  Properties, Methods

IncrementalMdl incrementalClassificationNaiveBayes объект. IncrementalMdl представляет наивную модель классификации Бейеса для пошагового обучения; значения параметров совпадают с параметрами в TTMdl.

Обнаружьте выбросы

Определите безусловный порог плотности для выбросов при помощи традиционно обученных данных модели и обучающих данных. Наблюдения в плотности получения данных о потоковой передаче ниже, чем порог рассматриваются выбросами.

ttlp = logp(TTMdl,X(idxtt,:));
[~,lower] = isoutlier(ttlp)
lower = -336.0424

Обнаружьте выбросы в остальной части данных, относительно того, что было изучено, чтобы создать 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;
end

Постройте журнал безусловные плотности вероятности данных о потоковой передаче. Идентифицируйте выбросы.

figure;
h1 = plot(lp);
hold on
x = 1:nchunk;
h2 = plot(x(iso),lp(iso),'r*');
h3 = yline(lower,'g--');
xlim([0 nchunk]);
ylabel('Unconditional Density')
xlabel('Iteration')
legend([h1 h2 h3],["Log unconditional probabilities" "Outliers" "Threshold"])
hold off

Figure contains an axes object. The axes object contains 3 objects of type line, constantline. These objects represent Log unconditional probabilities, Outliers, Threshold.

Входные параметры

свернуть все

Наивная Байесова модель классификации для пошагового обучения в виде incrementalClassificationNaiveBayes объект модели. Можно создать Mdl непосредственно или путем преобразования поддерживаемой, традиционно обученной модели машинного обучения использование incrementalLearner функция. Для получения дополнительной информации смотрите соответствующую страницу с описанием.

Необходимо сконфигурировать Mdl вычислить логарифмическую плотность условной вероятности на пакете наблюдений.

  • Если Mdl конвертированная, традиционно обученная модель, можно вычислить логарифмические условные вероятности без любых модификаций.

  • В противном случае, Mdl.DistributionParameters должна быть матрица ячейки с Mdl.NumPredictors > 0 столбцов и по крайней мере одна строка, где каждая строка соответствует каждому имени класса в Mdl.ClassNames.

Пакет данных о предикторе, с которыми можно вычислить логарифмическую плотность условной вероятности в виде n-by-Mdl.NumPredictors матрица с плавающей точкой.

Для каждого j = 1 через n, если X (j,:) содержит по крайней мере один NaN, LP (j) isnan.

Типы данных: single | double

Выходные аргументы

свернуть все

Регистрируйте безусловные плотности вероятности, возвращенные как n-by-1 вектор с плавающей точкой. LP (j) журнал безусловная плотность вероятности предикторов, вычисленных в x (j,:).

Типы данных: single | double

Больше о

свернуть все

Безусловная плотность вероятности

unconditional probability density предикторов является распределением плотности, маргинализованным по классам.

Другими словами, безусловная плотность вероятности

P(X1,..,XP)=k=1KP(X1,..,XP,Y=k)=k=1KP(X1,..,XP|y=k)π(Y=k),

где π (Y = k) является априорной вероятностью класса. Условное распределение данных, учитывая класс (P (X 1.., XP |y = k)), и априорные распределения вероятностей класса являются опциями обучения (то есть, вы задаете их когда обучение классификатор).

Априорная вероятность

prior probability класса является принятой относительной частотой, с которой наблюдения от того класса происходят в населении.

Введенный в R2021a