kfoldLoss

Потеря классификации для перекрестной подтвержденной модели классификации ядер

Синтаксис

loss = kfoldLoss(CVMdl)
loss = kfoldLoss(CVMdl,Name,Value)

Описание

пример

loss = kfoldLoss(CVMdl) возвращает потерю классификации, полученную перекрестной подтвержденной, бинарной моделью ядра (ClassificationPartitionedKernel) CVMdl. Для каждого сгиба kfoldLoss вычисляет потерю классификации для наблюдений сгиба валидации с помощью модели, обученной на наблюдениях учебного сгиба.

По умолчанию kfoldLoss возвращает ошибку классификации.

пример

loss = kfoldLoss(CVMdl,Name,Value) возвращает потерю классификации с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение". Например, задайте функцию потерь классификации, количество сгибов или уровень агрегации.

Примеры

свернуть все

Загрузите набор данных ionosphere. Этот набор данных имеет 34 предиктора, и 351 бинарный ответ для радара возвращается, которые маркированы или плохи ('b') или хорошими ('g').

load ionosphere

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

CVMdl = fitckernel(X,Y,'Crossval','on')
CVMdl = 
  classreg.learning.partition.ClassificationPartitionedKernel
    CrossValidatedModel: 'Kernel'
           ResponseName: 'Y'
        NumObservations: 351
                  KFold: 10
              Partition: [1x1 cvpartition]
             ClassNames: {'b'  'g'}
         ScoreTransform: 'none'


  Properties, Methods

CVMdl является моделью ClassificationPartitionedKernel. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку. Чтобы задать различное количество сгибов, используйте аргумент пары "имя-значение" 'KFold' вместо 'Crossval'.

Оцените перекрестную подтвержденную потерю классификации. По умолчанию программное обеспечение вычисляет ошибку классификации.

loss = kfoldLoss(CVMdl)
loss = 0.0940

Также можно получить ошибки классификации на сгиб путем определения пары "имя-значение" 'Mode','individual' в kfoldLoss.

Загрузите набор данных ionosphere. Этот набор данных имеет 34 предиктора, и 351 бинарный ответ для радара возвращается, которые маркированы или плохи ('b') или хорошими ('g').

load ionosphere

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

CVMdl = fitckernel(X,Y,'Crossval','on')
CVMdl = 
  classreg.learning.partition.ClassificationPartitionedKernel
    CrossValidatedModel: 'Kernel'
           ResponseName: 'Y'
        NumObservations: 351
                  KFold: 10
              Partition: [1x1 cvpartition]
             ClassNames: {'b'  'g'}
         ScoreTransform: 'none'


  Properties, Methods

CVMdl является моделью ClassificationPartitionedKernel. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку. Чтобы задать различное количество сгибов, используйте аргумент пары "имя-значение" 'KFold' вместо 'Crossval'.

Создайте анонимную функцию, которая измеряет линейную потерю, то есть,

L=j-wjyjfjjwj.

wj вес для наблюдения j, yj ответ j (–1 для отрицательного класса и 1 в противном случае), и fj необработанный счет классификации наблюдения j.

linearloss = @(C,S,W,Cost)sum(-W.*sum(S.*C,2))/sum(W);

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

Оцените перекрестную подтвержденную потерю классификации с помощью линейной функции потерь.

loss = kfoldLoss(CVMdl,'LossFun',linearloss)
loss = -0.7792

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

свернуть все

Перекрестная подтвержденная, бинарная модель классификации ядер, заданная как объект модели ClassificationPartitionedKernel. Можно создать модель ClassificationPartitionedKernel при помощи fitckernel и задающий любой из аргументов пары "имя-значение" перекрестной проверки.

Чтобы получить оценки, kfoldLoss применяется, те же данные раньше перекрестный подтверждали модель классификации ядер (X и Y).

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

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

Пример: kfoldLoss(CVMdl,'Folds',[1 3 5]) задает, чтобы использовать только первые, третьи, и пятые сгибы, чтобы вычислить потерю классификации.

Сверните индексы для прогноза, заданного как пара, разделенная запятой, состоящая из 'Folds' и числовой вектор положительных целых чисел. Элементы Folds должны быть в диапазоне от 1 до CVMdl.KFold.

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

Пример: 'Folds',[1 4 10]

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

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

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

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

    'mincost' подходит для очков классификации, которые являются апостериорными вероятностями. Для моделей классификации ядер ученики логистической регрессии возвращают апостериорные вероятности как очки классификации по умолчанию, но ученики SVM не делают (см. kfoldPredict).

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

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

    lossvalue = lossfun(C,S,W,Cost)

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

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

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

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

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

    • 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

Уровень агрегации для вывода, заданного как пара, разделенная запятой, состоящая из 'Mode' и 'average' или 'individual'.

Эта таблица описывает значения.

ЗначениеОписание
'average'Вывод является скалярным средним значением по всем сгибам.
'individual'Вывод является вектором длины k, содержащий одно значение на сгиб, где k является количеством сгибов.

Пример: 'Mode','individual'

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

свернуть все

Потеря классификации, возвращенная в виде числа или числового вектор-столбца.

Если Mode является 'average', то loss является средней потерей классификации по всем сгибам. В противном случае loss является k-by-1 числовой вектор-столбец, содержащий потерю классификации для каждого сгиба, где k является количеством сгибов.

Больше о

свернуть все

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

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

Предположим следующее:

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

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

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

  • f (Xj) является необработанным счетом классификации к преобразованному наблюдению (строка) j данных о предикторе X с помощью расширения функции.

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

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

    j=1nwj=1.

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

Функция потерьЗначение LossFunУравнение
Биномиальное отклонение'binodeviance'L=j=1nwjжурнал{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=1nwjжурнал(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.

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

Смотрите также

|

Введенный в R2018b

Для просмотра документации необходимо авторизоваться на сайте