loss

Ошибка классификации

Синтаксис

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

Описание

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

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

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

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

При расчете потерь loss нормализует вероятности классов в ResponseVarName или Y к вероятностям класса, используемым для обучения, хранящимся в Prior свойство ens.

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

ens

Классификационный ансамбль, созданный с fitcensemble, или компактный классификационный ансамбль, созданный с compact.

tbl

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

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

ResponseVarName

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

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

X

Матрица данных для классификации. Каждая строка X представляет одно наблюдение, и каждый столбец представляет один предиктор. X должны иметь одинаковое число столбцов в качестве данных, используемых для обучения ens. X должно иметь одинаковое число строк как количество элементов в Y.

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

Y

Классовые метки наблюдений в tbl или X. Y должен быть того же типа, что и классификация, используемая для обучения ens, и его количество элементов должно равняться количеству строк tbl или X.

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

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

'learners'

Индексы слабых учащихся ансамбля в диапазоне от 1 на ens.NumTrained. loss использует только этих учащихся для вычисления потерь.

По умолчанию: 1:NumTrained

'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'

Значение выхода L:

  • 'ensemble'L является скалярным значением, потеря для всего ансамбля.

  • 'individual'L является вектором с одним элементом на обученного учащегося.

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

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

'UseObsForLearner'

Логическая матрица размера N-by- T, где:

  • N количество строк X.

  • T количество слабых учащихся в ens.

Когда UseObsForLearner(i,j) является true, учащийся j используется в прогнозировании класса строки i от X.

По умолчанию: true(N,T)

'weights'

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

По умолчанию: ones(size(X,1),1)

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

L

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

Примеры

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

Загрузите набор данных радужки Фишера.

load fisheriris

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

t = templateTree('MaxNumSplits',1);
ens = fitcensemble(meas,species,'Method','AdaBoostM2','Learners',t);

Оцените классификационную ошибку модели, используя обучающие наблюдения.

L = loss(ens,meas,species)
L = 0.0333

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

Подробнее о

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

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

См. также

| | |