exponenta event banner

край

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

Описание

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

Подробнее

свернуть все

Край классификации

Край классификации - это средневзвешенное значение полей классификации.

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

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

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

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

Задняя вероятность

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

Для наивного Байеса апостериорная вероятность того, что классификация равна k для данного наблюдения (x1,...,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).

Предварительная вероятность

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

Оценка классификации

Наивная оценка Байеса - это апостериорная вероятность класса при наблюдении.

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

Представлен в R2014b