потеря

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

Синтаксис

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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

'learners'

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

Значение по умолчанию: 1:NumTrained

'Lossfun'

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

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

    ЗначениеОписание
    'binodeviance'Биномиальное отклонение
    'classiferror'Ошибка классификации
    'exponential'Экспоненциал
    'hinge'Стержень
    'logit'Логистический
    'mincost'Минимальный ожидал стоимость misclassification (для очков классификации, которые являются апостериорными вероятностями),
    '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 числовая матрица затрат misclassification. Например, Cost = ones(K) - eye(K) задает стоимость 0 для правильной классификации и 1 для misclassification.

    Задайте свою функцию с помощью '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.

Больше о

развернуть все

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

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

| | |