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 и p artMdl обучаются ClassificationNaiveBayes классификаторы.

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

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

Отображение распределения полей для каждой модели с помощью boxplots.

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объект модели объект модели, возвращенный 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