потеря

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

Синтаксис

L = loss(Mdl,tbl,ResponseVarName)
L = loss(Mdl,tbl,Y)
L = loss(Mdl,X,Y)
L = loss(___,Name,Value)

Описание

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

loss нормирует вероятности класса в tbl.ResponseVarName к предшествующим вероятностям класса fitcnb, используемый для обучения, сохраненного в свойстве Prior Mdl.

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

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

пример

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

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

пример

L = loss(___,Name,Value) возвращает потерю классификации с дополнительными опциями, заданными одним или несколькими аргументами пары Name,Value, с помощью любого из предыдущих синтаксисов.

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

развернуть все

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

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

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

Типы данных: table

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

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

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

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

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

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

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

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

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

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

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

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

    ЗначениеОписание
    '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-by-K логическая матрица со строками, указывающими, которые классифицируют соответствующее наблюдение, принадлежит. Порядок следования столбцов соответствует порядку класса в Mdl.ClassNames.

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

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

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

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

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

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

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

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

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

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

Если вы не задаете свою собственную функцию потерь, то программное обеспечение нормирует Weights, чтобы составить в целом 1.

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

Выходные аргументы

развернуть все

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

Примеры

развернуть все

Загрузите ирисовый набор данных Фишера.

load fisheriris
X = meas;    % Predictors
Y = species; % Response
rng(1);      % For reproducibility

Обучите наивный классификатор Байеса. Задайте 15%-ю выборку затяжки для тестирования. Это - хорошая практика, чтобы задать порядок класса. Примите, что каждый предиктор условно нормально распределен, учитывая свою метку.

CVMdl = fitcnb(X,Y,'ClassNames',{'setosa','versicolor','virginica'},...
    'Holdout',0.15);
CMdl = CVMdl.Trained{1}; % Extract the trained, compact classifier
testInds = test(CVMdl.Partition);   % Extract the test indices
XTest = X(testInds,:);
YTest = Y(testInds);

CVMdl является классификатором ClassificationPartitionedModel. Это содержит свойство Trained, которое является массивом ячеек 1 на 1, содержащим классификатор CompactClassificationNaiveBayes, что программное обеспечение обучило использование набора обучающих данных.

Определите, как хорошо алгоритм делает вывод путем оценки тестовой выборки минимальная потеря стоимости.

L = loss(CMdl,XTest,YTest)
L = 0.0476

Тестовая выборка средняя стоимость классификации является приблизительно 0,05.

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

Загрузите ирисовый набор данных Фишера.

load fisheriris
X = meas;    % Predictors
Y = species; % Response
rng(1); % For reproducibility

Обучите наивный классификатор Байеса. Задайте 15%-ю выборку затяжки для тестирования. Это - хорошая практика, чтобы задать порядок класса. Примите, что каждый предиктор условно нормально распределен, учитывая свою метку.

CVMdl = fitcnb(X,Y,'ClassNames',{'setosa','versicolor','virginica'},...
    'Holdout',0.15);
CMdl = CVMdl.Trained{1}; % Extract the trained, compact classifier
testInds = test(CVMdl.Partition);   % Extract the test indices
XTest = X(testInds,:);
YTest = Y(testInds);

CVMdl является классификатором ClassificationPartitionedModel. Это содержит свойство Trained, которое является массивом ячеек 1 на 1, содержащим классификатор CompactClassificationNaiveBayes, что программное обеспечение обучило использование набора обучающих данных.

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

L = loss(CMdl,XTest,YTest,'LossFun','classiferror')
L = 0.0476

Классификатор неправильно классифицировал приблизительно 5% тестовых демонстрационных наблюдений.

Больше о

развернуть все

Ссылки

[1] Hastie, T., Р. Тибширэни и Дж. Фридман. Элементы Статистического Изучения, второго выпуска. Спрингер, Нью-Йорк, 2008.

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