margin

Поля классификации для наивного классификатора Байеса

Описание

m = margin(Mdl,tbl,ResponseVarName) возвращает Поле Классификации (m) для обученного наивного классификатора Байеса Mdl использование данных о предикторе в таблице tbl и класс помечает в tbl.ResponseVarName.

m = margin(Mdl,tbl,Y) возвращает поля классификации для Mdl использование данных о предикторе в таблице tbl и класс помечает в векторном Y.

пример

m = margin(Mdl,X,Y) возвращает поля классификации для Mdl использование данных о предикторе в матричном X и класс помечает в Y.

m возвращен как числовой вектор с той же длиной как Y. Программное обеспечение оценивает каждую запись m использование обученного наивного классификатора Байеса Mdl, соответствующая строка X, и истинная метка Y класса.

Примеры

свернуть все

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

Загрузите fisheriris набор данных. Создайте X как числовая матрица, которая содержит четыре лепестковых измерения для 150 ирисовых диафрагм. Создайте Y как массив ячеек из символьных векторов, который содержит соответствующие ирисовые разновидности.

load fisheriris
X = meas;
Y = species;
rng('default')  % for reproducibility

Случайным образом наблюдения раздела в набор обучающих данных и набор тестов со стратификацией, с помощью информации о классе в Y. Задайте 30%-ю выборку затяжки для тестирования.

cv = cvpartition(Y,'HoldOut',0.30);

Извлеките обучение и протестируйте индексы.

trainInds = training(cv);
testInds = test(cv);

Задайте наборы тестовых данных и обучение.

XTrain = X(trainInds,:);
YTrain = Y(trainInds);
XTest = X(testInds,:);
YTest = Y(testInds);

Обучите наивный классификатор Байеса с помощью предикторов XTrain и класс маркирует YTrain. Методические рекомендации должны задать имена классов. fitcnb принимает, что каждый предиктор условно и нормально распределен.

Mdl = fitcnb(XTrain,YTrain,'ClassNames',{'setosa','versicolor','virginica'})
Mdl = 
  ClassificationNaiveBayes
              ResponseName: 'Y'
     CategoricalPredictors: []
                ClassNames: {'setosa'  'versicolor'  'virginica'}
            ScoreTransform: 'none'
           NumObservations: 105
         DistributionNames: {'normal'  'normal'  'normal'  'normal'}
    DistributionParameters: {3x4 cell}


  Properties, Methods

Mdl обученный ClassificationNaiveBayes классификатор.

Оцените тестовые поля классификации выборок.

m = margin(Mdl,XTest,YTest);
median(m)
ans = 1.0000

Отобразите гистограмму тестовых полей классификации выборок.

histogram(m,length(unique(m)),'Normalization','probability')
xlabel('Test Sample Margins')
ylabel('Probability')
title('Probability Distribution of the Test Sample Margins')

Figure contains an axes. The axes with title Probability Distribution of the Test Sample Margins contains an object of type histogram.

Предпочтены классификаторы, которые дают к относительно большим полям.

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

Загрузите fisheriris набор данных. Задайте предикторы X и класс маркирует Y.

load fisheriris
X = meas;
Y = species;
rng('default')  % for reproducibility

Случайным образом наблюдения раздела в набор обучающих данных и набор тестов со стратификацией, с помощью информации о классе в Y. Задайте 30%-ю выборку затяжки для тестирования. Partition задает раздел набора данных.

cv = cvpartition(Y,'Holdout',0.30);

Извлеките обучение и протестируйте индексы.

trainInds = training(cv);
testInds = test(cv);

Задайте наборы тестовых данных и обучение.

XTrain = X(trainInds,:);
YTrain = Y(trainInds);
XTest = X(testInds,:);
YTest = Y(testInds);

Задайте эти два набора данных:

  • fullX содержит все предикторы.

  • partX содержит последние два предиктора.

fullX = XTrain;
partX = XTrain(:,3:4);

Обучите наивный классификатор Байеса каждому набору предиктора.

fullMdl = fitcnb(fullX,YTrain);
partMdl = fitcnb(partX,YTrain);

fullMdl и partMdl обученный ClassificationNaiveBayes классификаторы.

Оцените тестовые демонстрационные поля для каждого классификатора.

fullM = margin(fullMdl,XTest,YTest);
median(fullM)
ans = 1.0000
partM = margin(partMdl,XTest(:,3:4),YTest);
median(partM)
ans = 1.0000

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

boxplot([fullM partM],'Labels',{'All Predictors','Two Predictors'})
ylim([0.98 1.01]) % Modify the y-axis limits to see the boxes
title('Boxplots of Test Sample Margins')

Figure contains an axes. The axes with title Boxplots of Test Sample Margins contains 14 objects of type line.

Поля для fullMdl (вся модель предикторов) и partMdl (две модели предикторов), имеют подобное распределение с той же медианой. partMdl является менее комплексным, но имеет выбросы.

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

свернуть все

Наивная Байесова модель классификации в виде ClassificationNaiveBayes объект модели или CompactClassificationNaiveBayes объект модели, возвращенный fitcnb или compact, соответственно.

Выборочные данные раньше обучали модель в виде таблицы. Каждая строка tbl соответствует одному наблюдению, и каждый столбец соответствует одному переменному предиктору. tbl должен содержать все предикторы, используемые, чтобы обучить Mdl. Многостолбцовые переменные и массивы ячеек кроме массивов ячеек из символьных векторов не позволены. Опционально, tbl может содержать дополнительные столбцы для весов наблюдения и переменной отклика.

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

Имя переменной отклика в виде имени переменной в tbl.

Необходимо задать ResponseVarName как вектор символов или строковый скаляр. Например, если переменная отклика y хранится как tbl.y, затем задайте его как 'y'. В противном случае программное обеспечение обрабатывает все столбцы tbl, включая y, как предикторы.

Если tbl содержит переменную отклика, используемую, чтобы обучить Mdl, затем вы не должны задавать ResponseVarName.

Переменная отклика должна быть категориальным, символом, или массивом строк, логическим или числовым вектором или массивом ячеек из символьных векторов. Если переменная отклика является символьным массивом, то каждый элемент должен соответствовать одной строке массива.

Типы данных: char | string

Данные о предикторе в виде числовой матрицы.

Каждая строка X соответствует одному наблюдению (также известный как экземпляр или пример), и каждый столбец соответствует одной переменной (также известный как функцию). Переменные в столбцах X должен совпасть с переменными, которые обучили Mdl классификатор.

Длина Y и количество строк X должно быть равным.

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

Класс помечает в виде категориального, символа, или массива строк, логического или числового вектора или массива ячеек из символьных векторов. Y должен иметь совпадающий тип данных как Mdl.ClassNames. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.)

Длина Y должно быть равно количеству строк tbl или X.

Типы данных: categorical | char | string | logical | single | double | cell

Больше о

свернуть все

Ребро классификации

classification edge является взвешенным средним полей классификации.

Если вы предоставляете веса, то программное обеспечение нормирует их, чтобы суммировать к априорной вероятности их соответствующего класса. Программное обеспечение использует нормированные веса, чтобы вычислить взвешенное среднее.

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

Поле классификации

classification margin для каждого наблюдения является различием между счетом к истинному классу и максимальным счетом к ложным классам. Поля обеспечивают меру по доверию классификации; среди нескольких классификаторов те, которые дают к большим полям (по той же шкале) лучше.

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

posterior probability является вероятностью, что наблюдение принадлежит конкретного класса, учитывая данные.

Для наивного Бейеса апостериорная вероятность, что классификацией является k для заданного наблюдения (x 1..., xP)

P^(Y=k|x1,..,xP)=P(X1,...,XP|y=k)π(Y=k)P(X1,...,XP),

где:

  • P(X1,...,XP|y=k) условная объединенная плотность предикторов, учитывая, они находятся в классе k. Mdl.DistributionNames хранит имена распределения предикторов.

  • π (Y = k) является априорным распределением вероятностей класса. Mdl.Prior хранит предшествующее распределение.

  • P(X1,..,XP) объединенная плотность предикторов. Классы дискретны, таким образом, P(X1,...,XP)=k=1KP(X1,...,XP|y=k)π(Y=k).

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

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

Счет

Наивный Байесов score является апостериорной вероятностью класса, учитывая наблюдение.

Расширенные возможности

Введенный в R2014b