exponenta event banner

потеря

Потеря классификации для модели классификации ядра Гаусса

Описание

пример

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

L = loss(Mdl,Tbl,ResponseVarName) возвращает потерю классификации для модели Mdl использование данных предиктора в Tbl и метки истинного класса в Tbl.ResponseVarName.

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

пример

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

Примеры

свернуть все

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

load ionosphere

Разбейте набор данных на учебные и тестовые наборы. Укажите 15% -ный образец удержания для тестового набора.

rng('default') % For reproducibility
Partition = cvpartition(Y,'Holdout',0.15);
trainingInds = training(Partition); % Indices for the training set
testInds = test(Partition); % Indices for the test set

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

Mdl = fitckernel(X(trainingInds,:),Y(trainingInds));

Оцените ошибку классификации обучающего набора и ошибку классификации тестового набора.

ceTrain = loss(Mdl,X(trainingInds,:),Y(trainingInds))
ceTrain = 0.0067
ceTest = loss(Mdl,X(testInds,:),Y(testInds))
ceTest = 0.1140

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

load ionosphere

Разбейте набор данных на учебные и тестовые наборы. Укажите 15% -ный образец удержания для тестового набора.

rng('default') % For reproducibility
Partition = cvpartition(Y,'Holdout',0.15);
trainingInds = training(Partition); % Indices for the training set
testInds = test(Partition); % Indices for the test set

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

Mdl = fitckernel(X(trainingInds,:),Y(trainingInds));

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

L=∑j-wjyjfj∑jwj.

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

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

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

Оцените потери классификации обучающего набора и потери классификации тестового набора с помощью функции линейных потерь.

ceTrain = loss(Mdl,X(trainingInds,:),Y(trainingInds),'LossFun',linearloss)
ceTrain = -1.0851
ceTest = loss(Mdl,X(testInds,:),Y(testInds),'LossFun',linearloss)
ceTest = -0.7821

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

свернуть все

Модель классификации двоичного ядра, указанная как ClassificationKernel объект модели. Можно создать ClassificationKernel объект модели с использованием fitckernel.

Данные предиктора, определенные как n-за-p числовая матрица, где n - количество наблюдений, а p - количество предикторов, используемых для обучения Mdl.

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

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

Метки класса, указанные как категориальный, символьный или строковый массив; логический или числовой вектор; или массив ячеек символьных векторов.

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

  • Отдельные классы в Y должен быть подмножеством Mdl.ClassNames.

  • Если Y является символьным массивом, то каждый элемент должен соответствовать одной строке массива.

  • Длина Y должно быть равно количеству наблюдений в X или Tbl.

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

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

Если Tbl содержит переменную ответа, используемую для обучения Mdl, то указывать не нужно ResponseVarName или Y.

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

Имя переменной ответа, указанное как имя переменной в Tbl. Если Tbl содержит переменную ответа, используемую для обучения Mdl, то указывать не нужно ResponseVarName.

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

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

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

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

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: L = loss(Mdl,X,Y,'LossFun','quadratic','Weights',weights) возвращает взвешенные потери классификации с помощью квадратичной функции потерь.

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

  • В этой таблице перечислены доступные функции потерь. Укажите соответствующее значение.

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

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

  • Чтобы указать пользовательскую функцию потери, используйте функцию дескриптора нотации. Функция должна иметь следующую форму:

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

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

    • Указывается имя функции (lossfun).

    • C является nоколо-K логическая матрица со строками, указывающими класс, которому принадлежит соответствующее наблюдение. n - количество наблюдений в Tbl или X, и K - количество различных классов (numel(Mdl.ClassNames). Порядок столбцов соответствует порядку классов в Mdl.ClassNames. Создать C путем установки C(p,q) = 1, если наблюдение p находится в классе q, для каждой строки. Установка всех остальных элементов строки p кому 0.

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

    • W является n-по-1 числовой вектор весов наблюдения.

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

Пример: 'LossFun',@lossfun

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

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

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

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

При поставке весов loss вычисляет взвешенные потери классификации и нормализует веса для суммирования со значением предшествующей вероятности в соответствующем классе.

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

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

свернуть все

Потеря классификации, возвращаемая как числовой скаляр. Толкование L зависит от Weights и LossFun.

Подробнее

свернуть все

Классификационные потери

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

Предположим, что:

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

  • n - размер выборки.

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

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

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

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

    ∑j=1nwj=1.

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

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

L=∑j=1nwjI{y^j≠yj}.

y ^ j - метка класса, соответствующая классу с максимальным баллом. I {·} - функция индикатора.

Потеря шарнира'hinge'L=∑j=1nwjmax{0,1−mj}.
Потеря журнала'logit'L=∑j=1nwjlog (1 + exp (mj)).
Минимальная ожидаемая стоимость классификации ошибок'mincost'

'mincost' подходит только в том случае, если классификационные оценки являются задними вероятностями.

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

  1. Оценить ожидаемую стоимость неправильной классификации для классификации наблюдения Xj в класс k:

    γ jk = (f (Xj) C) k.

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

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

    y ^ j = аргминк = 1,..., Kγ jk.

  3. Используя C, определите затраты, понесенные (cj) для составления прогноза.

Средневзвешенное минимальное ожидаемое снижение затрат на неправильную классификацию

L=∑j=1nwjcj.

Если используется матрица затрат по умолчанию (значение элемента которой равно 0 для правильной классификации и 1 для неправильной классификации), то 'mincost' убыток эквивалентен 'classiferror' потери.

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

На этом рисунке сравниваются функции потерь (за исключением 'mincost') над баллом м для одного наблюдения. Некоторые функции нормализуются для прохождения через точку (0,1).

Comparison of classification losses for different loss functions

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

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