exponenta event banner

resubLoss

Потеря классификации возмещения

    Описание

    пример

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

    Толкование L зависит от функции потери ('LossFun') и схему взвешивания (Mdl.W). В целом, лучшие классификаторы дают меньшие значения потерь классификации. Дефолт 'LossFun' значение изменяется в зависимости от объекта модели Mdl.

    пример

    L = resubLoss(Mdl,Name,Value) указывает дополнительные параметры, использующие один или несколько аргументов «имя-значение». Например, 'LossFun','binodeviance' устанавливает функцию потерь в биномиальную функцию отклонения.

    Примеры

    свернуть все

    Определите ошибку классификации в выборке (потерю повторного замещения) наивного классификатора Байеса. В целом меньшие потери указывают на лучший классификатор.

    Загрузить fisheriris набор данных. Создать X в виде цифровой матрицы, которая содержит четыре измерения для 150 ирисов. Создать Y как клеточный массив характерных векторов, который содержит соответствующие виды радужки.

    load fisheriris
    X = meas;
    Y = species;

    Обучить наивный классификатор Байеса с помощью предикторов X и метки классов Y. Рекомендуется указывать имена классов. fitcnb предполагает, что каждый предиктор условно и нормально распределен.

    Mdl = fitcnb(X,Y,'ClassNames',{'setosa','versicolor','virginica'})
    Mdl = 
      ClassificationNaiveBayes
                  ResponseName: 'Y'
         CategoricalPredictors: []
                    ClassNames: {'setosa'  'versicolor'  'virginica'}
                ScoreTransform: 'none'
               NumObservations: 150
             DistributionNames: {'normal'  'normal'  'normal'  'normal'}
        DistributionParameters: {3x4 cell}
    
    
      Properties, Methods
    
    

    Mdl является обученным ClassificationNaiveBayes классификатор.

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

    L = resubLoss(Mdl)
    L = 0.0400
    

    Наивный классификатор Байеса ошибочно классифицирует 4% тренировочных наблюдений.

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

    load ionosphere

    Обучение классификатора опорной векторной машины (SVM). Стандартизировать данные и указать, что 'g' является положительным классом.

    SVMModel = fitcsvm(X,Y,'ClassNames',{'b','g'},'Standardize',true);

    SVMModel является обученным ClassificationSVM классификатор.

    Оцените потери петли в образце.

    L = resubLoss(SVMModel,'LossFun','hinge')
    L = 0.1603
    

    Потеря шарнира 0.1603. Предпочтительны классификаторы с потерями шарнира, близкими к 0.

    Обучить обобщенную аддитивную модель (GAM), которая содержит как линейные, так и условия взаимодействия для предикторов, и оценить потерю классификации с и без условий взаимодействия. Укажите, следует ли включать условия взаимодействия при оценке потери классификации для данных обучения и тестирования.

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

    load ionosphere

    Разбейте набор данных на два набора: один содержит обучающие данные, а другой - новые ненаблюдаемые тестовые данные. Зарезервировать 50 наблюдений для нового набора тестовых данных.

    rng('default') % For reproducibility
    n = size(X,1);
    newInds = randsample(n,50);
    inds = ~ismember(1:n,newInds);
    XNew = X(newInds,:);
    YNew = Y(newInds);

    Обучение GAM с использованием предикторов X и метки классов Y. Рекомендуется указывать имена классов. Укажите, чтобы включить 10 наиболее важных терминов взаимодействия.

    Mdl = fitcgam(X(inds,:),Y(inds),'ClassNames',{'b','g'},'Interactions',10)
    Mdl = 
      ClassificationGAM
                 ResponseName: 'Y'
        CategoricalPredictors: []
                   ClassNames: {'b'  'g'}
               ScoreTransform: 'logit'
                    Intercept: 2.0026
                 Interactions: [10x2 double]
              NumObservations: 301
    
    
      Properties, Methods
    
    

    Mdl является ClassificationGAM объект модели.

    Вычислите потерю классификации повторного замещения как с, так и без условий взаимодействия в Mdl. Чтобы исключить термины взаимодействия, укажите 'IncludeInteractions',false.

    resubl = resubLoss(Mdl)
    resubl = 0
    
    resubl_nointeraction = resubLoss(Mdl,'IncludeInteractions',false)
    resubl_nointeraction = 0
    

    Оцените классификационные потери как с, так и без условий взаимодействия в Mdl.

    l = loss(Mdl,XNew,YNew)
    l = 0.0615
    
    l_nointeraction = loss(Mdl,XNew,YNew,'IncludeInteractions',false)
    l_nointeraction = 0.0615
    

    Включение условий взаимодействия не изменяет потерю классификации для Mdl. Обученная модель правильно классифицирует все обучающие образцы и неправильно классифицирует примерно 6% тестовых образцов.

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

    свернуть все

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

    МодельОбъект классификационной модели
    Обобщенная аддитивная модельClassificationGAM
    k-ближайшая соседняя модельClassificationKNN
    Наивная модель БайесаClassificationNaiveBayes
    Модель нейронной сетиClassificationNeuralNetwork
    Поддержка векторной машины для одноклассной и двоичной классификацииClassificationSVM

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

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

    Пример: resubLoss(Mdl,'LossFun','logit') оценивает потери в связи с возвратом логита.

    Флаг для включения условий взаимодействия модели, указанный как true или false. Этот аргумент действителен только для обобщенной аддитивной модели (GAM). То есть этот аргумент можно указать только тогда, когда Mdl является ClassificationGAM.

    Значение по умолчанию: true если Mdl содержит термины взаимодействия. Значение должно быть false если модель не содержит терминов взаимодействия.

    Типы данных: logical

    Функция потери, заданная как имя встроенной функции потери или дескриптор функции.

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

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

      Значение по умолчанию зависит от обучаемой модели (Mdl).

      • Значение по умолчанию: 'classiferror' если Mdl является ClassificationGAM, ClassificationNeuralNetwork, или ClassificationSVM объект.

      • Значение по умолчанию: 'mincost' если Mdl является ClassificationKNN или ClassificationNaiveBayes объект.

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

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

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

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

    Подробнее

    свернуть все

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

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

    Рассмотрим следующий сценарий.

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

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

    • Для двоичной классификации:

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

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

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

    • Для алгоритмов, поддерживающих мультиклассовую классификацию (то есть K ≥ 3):

      • yj * - вектор из K - 1 нулей, с 1 в положении, соответствующем истинному наблюдаемому классу yj. Например, если истинным классом второго наблюдения является третий класс и K = 4, то y2 * = [0 0 1 0] ′. Порядок классов соответствует порядку в ClassNames свойства входной модели.

      • f (Xj) - вектор длины K оценок класса для наблюдения j данных предсказателя X. Порядок оценок соответствует порядку классов в ClassNames свойства входной модели.

      • mj = yj * f (Xj). Поэтому mj - это скалярная оценка классификации, которую модель прогнозирует для истинного наблюдаемого класса.

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

      ∑j=1nwj=1.

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

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

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

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

    Потери перекрестной энтропии'crossentropy'

    'crossentropy' подходит только для моделей нейронных сетей.

    Взвешенная потеря перекрестной энтропии равна

    L=−∑j=1nw˜jlog (mj) Kn,

    где веса w˜j нормализуются для суммирования в n вместо 1.

    Экспоненциальные потери'exponential'L=∑j=1nwjexp (мдж).
    Потеря шарнира'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.

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

    Comparison of classification losses for different loss functions

    Алгоритмы

    resubLoss вычисляет потерю классификации согласно соответствующему loss функция объекта (Mdl). Описание модели см. в разделе loss страницы ссылок на функции в следующей таблице.

    МодельОбъект классификационной модели (Mdl)loss Функция объекта
    Обобщенная аддитивная модельClassificationGAMloss
    k-ближайшая соседняя модельClassificationKNNloss
    Наивная модель БайесаClassificationNaiveBayesloss
    Модель нейронной сетиClassificationNeuralNetworkloss
    Поддержка векторной машины для одноклассной и двоичной классификацииClassificationSVMloss

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

    См. также

    | |

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