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
    Наивная модель BayesClassificationNaiveBayes
    Модель нейронной сетиClassificationNeuralNetwork
    Машина опорных векторов для и бинарной классификации одного классаClassificationSVM

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

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

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

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

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

    Типы данных: логический

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

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

      ЗначениеОписание
      'binodeviance'Биномиальное отклонение
      'classiferror'Неправильно классифицированный уровень в десятичном числе
      'crossentropy'Потеря перекрестной энтропии (только для нейронных сетей)
      'exponential'Экспоненциальная потеря
      'hinge'Потеря стержня
      'logit'Логистическая потеря
      'mincost'Минимальный ожидал стоимость misclassification (для классификационных оценок, которые являются апостериорными вероятностями),
      '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.ClassNamesS матрица классификационных оценок, похожих на выход predict.

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

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

    Пример: 'LossFun','binodeviance'

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

    Больше о

    свернуть все

    Потеря классификации

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

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

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

    • n является объемом выборки.

    • Для бинарной классификации:

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

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

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

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

      • yj* является вектором из K – 1 нуль, с 1 в положении, соответствующем истинному, наблюдаемому классу yj. Например, если истинный класс второго наблюдения является третьим классом и K = 4, то y 2* = [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^jyj}.

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

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

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

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

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

    где веса w˜j нормированы, чтобы суммировать к n вместо 1.

    Экспоненциальная потеря'exponential'L=j=1nwjexp(mj).
    Потеря стержня'hinge'L=j=1nwjmax{0,1mj}.
    Потеря логита'logit'L=j=1nwjlog(1+exp(mj)).
    Минимальный ожидал стоимость misclassification'mincost'

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

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

    1. Оцените ожидаемую misclassification стоимость классификации наблюдения Xj в класс k:

      γjk=(f(Xj)C)k.

      f (Xj) является вектор-столбцом апостериорных вероятностей класса для двоичного файла и классификации мультиклассов для наблюдения Xj. C является матрицей стоимости, сохраненной в Cost свойство модели.

    2. Для наблюдения j предскажите, что метка класса, соответствующая минимальному, ожидала стоимость misclassification:

      y^j=argmink=1,...,Kγjk.

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

    Взвешенное среднее минимального ожидало, что потеря стоимости misclassification

    L=j=1nwjcj.

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

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

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

    Comparison of classification losses for different loss functions

    Алгоритмы

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

    МодельОбъект модели классификации (Mdl)loss Объектная функция
    Обобщенная аддитивная модельClassificationGAMloss
    k- соседняя модельClassificationKNNloss
    Наивная модель BayesClassificationNaiveBayesloss
    Модель нейронной сетиClassificationNeuralNetworkloss
    Машина опорных векторов для и бинарной классификации одного классаClassificationSVMloss

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

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

    | |

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