edge

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

Описание

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

Ребро классификации (e) скалярное значение, которое представляет взвешенное среднее Полей Классификации.

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

пример

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

пример

e = edge(___,'Weights',Weights) возвращает ребро классификации с дополнительными весами наблюдения, предоставленными в Weights использование любой из комбинаций входных аргументов в предыдущих синтаксисах.

Примеры

свернуть все

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

Загрузите 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 классификатор.

Оцените тестовое демонстрационное ребро.

e = edge(Mdl,XTest,YTest)
e = 0.8658

Граничным средним значением является приблизительно 0.87. Этот результат предполагает, что классификатор помечает предикторы высоким доверием.

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

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

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

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

idx = randperm(size(X,1),20);
X(idx,:) = X(idx,:) + 2*randn(20,size(X,2));

Случайным образом наблюдения раздела в набор обучающих данных и набор тестов со стратификацией, с помощью информации о классе в 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 классификатор.

Оцените тестовое демонстрационное ребро.

e = edge(Mdl,XTest,YTest)
e = 0.5920

Среднее поле - приблизительно 0,59.

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

n = size(X,1);
weights = ones(size(X,1),1);
weights(idx) = 0.5;
weightsTrain = weights(trainInds);
weightsTest = weights(testInds);

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

Mdl_W = fitcnb(XTrain,YTrain,'Weights',weightsTrain,...
    'ClassNames',{'setosa','versicolor','virginica'});

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

Оцените, что тестовая выборка взвесила ребро с помощью схемы взвешивания.

e_W = edge(Mdl_W,XTest,YTest,'Weights',weightsTest)
e_W = 0.6816

Средневзвешенное поле - приблизительно 0,69. Этот результат показывает, что в среднем взвешенный классификатор помечает предикторы более высоким доверием, чем шум повредил предикторы.

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

Загрузите ionosphere набор данных. Удалите первые два предиктора для устойчивости.

load ionosphere
X = X(:,3:end);
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);

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

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

  • partXTrain содержит 10 самых важных предикторов.

fullXTrain = XTrain;
idx = fscmrmr(XTrain,YTrain);
partXTrain = XTrain(:,idx(1:10));

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

fullMdl = fitcnb(fullXTrain,YTrain);
partMdl = fitcnb(partXTrain,YTrain);

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

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

fullEdge = edge(fullMdl,XTest,YTest)
fullEdge = 0.5831
partEdge = edge(partMdl,XTest(:,idx(1:10)),YTest)
partEdge = 0.7593

Тестовое демонстрационное ребро классификатора с помощью 10 самых важных предикторов больше.

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

свернуть все

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

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

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

Имя переменной отклика в виде имени переменной в 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

Веса наблюдения в виде числового вектора или имени переменной в tbl. Программное обеспечение взвешивает наблюдения в каждой строке X или tbl с соответствующими весами в Weights.

Если вы задаете Weights как числовой вектор, затем размер Weights должно быть равно количеству строк X или tbl.

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

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

Больше о

свернуть все

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

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