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: {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

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

свернуть все

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

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

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

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

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

Примечание

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

  • Для каждого j = 1 - n, если X (j,:) содержит, по крайней мере, один NaN, lp (j) является NaN.

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

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

свернуть все

Логгирование безусловных плотностей вероятностей, возвращаемое как n-на-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