resubLoss

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

Описание

пример

L = resubLoss(Mdl) возвращает Ущерб Классификации от перезамены (L) или потеря классификации в выборке, для наивного классификатора Байеса Mdl использование обучающих данных сохранено в Mdl.X и соответствующие метки класса сохранены в Mdl.Y.

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

пример

L = resubLoss(Mdl,'LossFun',LossFun) возвращает ущерб классификации от перезамены с помощью функции потерь, предоставленной в LossFun.

Примеры

свернуть все

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

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

load fisheriris
X = meas;
Y = species;

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

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


  Properties, Methods

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

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

L = resubLoss(Mdl)
L = 0.0400

Наивный классификатор Байеса неправильно классифицирует 4% учебных наблюдений.

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

load fisheriris
X = meas;
Y = species;

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

Mdl = fitcnb(X,Y,'ClassNames',{'setosa','versicolor','virginica'});

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

Оцените потерю перезамены логита.

L = resubLoss(Mdl,'LossFun','logit')
L = 0.3310

Средняя потеря логита в выборке - приблизительно 0,33.

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

свернуть все

Полный, обученный наивный классификатор Байеса в виде ClassificationNaiveBayes модель, обученная fitcnb.

Функция потерь в виде встроенного имени функции потерь или указателя на функцию.

  • В следующей таблице перечислены доступные функции потерь. Задайте тот с помощью его соответствующего вектора символов или строкового скаляра.

    ЗначениеОписание
    'binodeviance'Биномиальное отклонение
    'classiferror'Ошибка классификации
    'exponential'Экспоненциал
    'hinge'Стержень
    'logit'Логистический
    'mincost'Минимальный ожидал стоимость misclassification (для классификационных оценок, которые являются апостериорными вероятностями),
    'quadratic'Квадратичный

    'mincost' подходит для классификационных оценок, которые являются апостериорными вероятностями. Наивные модели Bayes возвращают апостериорные вероятности как классификационные оценки по умолчанию (см. predict).

  • Задайте свою собственную функцию с помощью обозначения указателя на функцию.

    Предположим тот n количество наблюдений в X и K количество отличных классов (numel(Mdl.ClassNames), где Mdl входная модель). Ваша функция должна иметь эту подпись

    lossvalue = lossfun(C,S,W,Cost)
    где:

    • Выходной аргумент lossvalue скаляр.

    • Вы задаете имя функции (lossfun).

    • C n- K логическая матрица со строками, указывающими на класс, которому принадлежит соответствующее наблюдение. Порядок следования столбцов соответствует порядку класса в Mdl.ClassNames.

      Создайте C установкой C(p,q) = 1 если наблюдение p находится в классе q, для каждой строки. Установите все другие элементы строки p к 0.

    • S n- K числовая матрица классификационных оценок. Порядок следования столбцов соответствует порядку класса в Mdl.ClassNamesS матрица классификационных оценок, похожих на выход predict.

    • W n- 1 числовой вектор из весов наблюдения. Если вы передаете W, программное обеспечение нормирует веса, чтобы суммировать к 1.

    • Cost K- K числовая матрица затрат misclassification. Например, Cost = ones(K) - eye(K) задает стоимость 0 для правильной классификации и 1 для misclassification.

    Задайте свое использование функции 'LossFun', @lossfun.

Для получения дополнительной информации о функциях потерь смотрите Потерю Классификации.

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

Больше о

свернуть все

Потеря классификации

Функции Classification loss измеряют прогнозирующую погрешность моделей классификации. Когда вы сравниваете тот же тип потери среди многих моделей, более низкая потеря указывает на лучшую прогнозную модель.

Рассмотрите следующий сценарий.

  • L является средневзвешенной потерей классификации.

  • n является объемом выборки.

  • Для бинарной классификации:

    • yj является наблюдаемой меткой класса. Программные коды это как –1 или 1, указывая на отрицательный или положительный класс, соответственно.

    • f (Xj) является необработанной классификационной оценкой для наблюдения (строка) j данных о предикторе X.

    • mj = yj f (Xj) является классификационной оценкой для классификации наблюдения j в класс, соответствующий yj. Положительные значения mj указывают на правильную классификацию и не способствуют очень средней потере. Отрицательные величины mj указывают на неправильную классификацию и значительно способствуют средней потере.

  • Для алгоритмов, которые поддерживают классификацию мультиклассов (то есть, K ≥ 3):

    • yj* является вектором из K – 1 нуль, с 1 в положении, соответствующем истинному, наблюдаемому классу yj. Например, если истинный класс второго наблюдения является третьим классом и K = 4, то y 2* = [0 0 1 0] ′. Порядок классов соответствует порядку в ClassNames свойство входной модели.

    • f (Xj) является длиной вектор K из музыки класса к наблюдению j данных о предикторе X. Порядок баллов соответствует порядку классов в ClassNames свойство входной модели.

    • mj = yj*f (Xj). Поэтому mj является скалярной классификационной оценкой, которую модель предсказывает для истинного, наблюдаемого класса.

  • Весом для наблюдения j является wj. Программное обеспечение нормирует веса наблюдения так, чтобы они суммировали к соответствующей предшествующей вероятности класса. Программное обеспечение также нормирует априорные вероятности, таким образом, они суммируют к 1. Поэтому

    j=1nwj=1.

Учитывая этот сценарий, следующая таблица описывает поддерживаемые функции потерь, которые можно задать при помощи 'LossFun' аргумент пары "имя-значение".

Функция потерьЗначение LossFunУравнение
Биномиальное отклонение'binodeviance'L=j=1nwjlog{1+exp[2mj]}.
Экспоненциальная потеря'exponential'L=j=1nwjexp(mj).
Ошибка классификации'classiferror'

L=j=1nwjI{y^jyj}.

Ошибка классификации является взвешенной частью неправильно классифицированных наблюдений где y^j метка класса, соответствующая классу с максимальной апостериорной вероятностью. I {x} является функцией индикатора.

Потеря стержня'hinge'L=j=1nwjmax{0,1mj}.
Потеря логита'logit'L=j=1nwjlog(1+exp(mj)).
Минимальная стоимость'mincost'

Программное обеспечение вычисляет взвешенную минимальную стоимость с помощью этой процедуры для наблюдений j = 1..., n.

  1. Оцените 1 K вектором из ожидаемых затрат классификации для наблюдения j:

    γj=f(Xj)C.

    f (Xj) является вектор-столбцом апостериорных вероятностей класса для классификации мультиклассов и двоичного файла. C является матрицей стоимости, сохраненной входной моделью в Cost свойство.

  2. Для наблюдения j предскажите метку класса, соответствующую минимальной ожидаемой стоимости классификации:

    y^j=minj=1,...,K(γj).

  3. Используя C, идентифицируйте, что стоимость подверглась (cj) для того, чтобы сделать предсказание.

Взвешенная, средняя, минимальная потеря стоимости

L=j=1nwjcj.

Квадратичная потеря'quadratic'L=j=1nwj(1mj)2.

Этот рисунок сравнивает функции потерь (кроме 'mincost') для одного наблюдения по m. Некоторые функции нормированы, чтобы пройти [0,1].

Comparison of classification losses for different loss functions

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

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 класса является принятой относительной частотой, с которой наблюдения от того класса происходят в населении.

Введенный в R2014b