loss

Классификационные потери для Гауссовой модели классификации ядра

Описание

пример

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-wjyjfjjwj.

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

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

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

    • Cost является K-by- 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.

Подробнее о

свернуть все

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

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

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

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

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

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

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

  • mj = yj f (Xj) является классификационной оценкой для классификации j наблюдений в класс, относящийся к yj. Положительные значения mj указывают на правильную классификацию и не вносят большой вклад в средние потери. Отрицательные значения 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 {·} является функцией индикации.

Потеря шарнира'hinge'L=j=1nwjmax{0,1mj}.
Логит потеря'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=argmink=1,...,Kγjk.

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

Взвешенное среднее значение минимальных ожидаемых потерь от неправильной классификации

L=j=1nwjcj.

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

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

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

Comparison of classification losses for different loss functions

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

Введенный в R2017b