kfoldLoss

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

Синтаксис

L = kfoldLoss(ens)
L = kfoldLoss(ens,Name,Value)

Описание

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

L = kfoldLoss(ens,Name,Value) вычисляет убыток с дополнительными опциями, заданными одним или несколькими Name,Value аргументы в виде пар. Можно задать несколько аргументы пары "имя-значение" в любом порядке как Name1,Value1,…,NameN,ValueN.

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

ens

Объект ClassificationPartitionedEnsemble классов. Создание ens с fitcensemble наряду с одним из опций перекрестной валидации: 'crossval', 'kfold', 'holdout', 'leaveout', или 'cvpartition'. Кроме того, создайте ens из классификационного ансамбля с crossval.

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

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

'folds'

Индексы складок в диапазоне от 1 на ens.KFold. Используйте только эти складки для предсказаний.

По умолчанию: 1:ens.KFold

'lossfun'

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

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

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

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

    • Пакетированные и подпространственные ансамбли возвращают апостериорные вероятности по умолчанию (ens.Method является 'Bag' или 'Subspace').

    • Если метод ансамбля 'AdaBoostM1', 'AdaBoostM2', GentleBoost, или 'LogitBoost'затем, чтобы использовать апостериорные вероятности как классификационные оценки, необходимо задать двойной логит счета преобразования путем ввода

      ens.ScoreTransform = 'doublelogit';

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

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

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

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

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

    • Вы выбираете имя функции (lossfun).

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

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

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

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

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

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

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

По умолчанию: 'classiferror'

'mode'

Вектор символов или строковый скаляр для определения выхода kfoldLoss:

  • 'average'L является скаляром, потеря, усредненная по всем складкам.

  • 'individual'L является вектором длины ens.KFold, где каждая запись является потерей для складки.

  • 'cumulative'L - вектор, в котором находится элемент J получается при помощи обучающихся 1:J из входа списка учащихся.

По умолчанию: 'average'

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

L

Потеря, по умолчанию доля неправильно классифицированных данных. L может быть вектором и может означать различные вещи, в зависимости от настроек пары "имя-значение".

Примеры

расширить все

Загрузите ionosphere набор данных.

load ionosphere

Обучите классификационный ансамбль из 100 деревьев решений с помощью AdaBoostM1. Задайте древовидные пни как слабые ученики.

t = templateTree('MaxNumSplits',1);
ens = fitcensemble(X,Y,'Method','AdaBoostM1','Learners',t);

Перекрестная валидация ансамбля с помощью 10-кратной перекрестной валидации.

cvens = crossval(ens);

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

L = kfoldLoss(cvens)
L = 0.0655

Подробнее о

расширить все