kfoldPredict

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

Описание

пример

Label = kfoldPredict(CVMdl) возвращает метки класса, предсказанные перекрестной подтвержденной моделью ECOC, состоявшей из линейных моделей CVMdl классификации. Таким образом, для каждого сгиба, kfoldPredict предсказывает метки класса для наблюдений, что это протягивает, когда это обучает использование всех других наблюдений. kfoldPredict применяется те же используемые данные создают CVMdl (см. fitcecoc).

Кроме того, Label содержит метки класса для каждой силы регуляризации в линейных моделях классификации, которые составляют CVMdl.

пример

Label = kfoldPredict(CVMdl,Name,Value) возвращает предсказанные метки класса с дополнительными опциями, заданными одним или несколькими Name,Value парные аргументы. Например, задайте метод оценки апостериорной вероятности, декодируя схему или уровень многословия.

пример

[Label,NegLoss,PBScore] = kfoldPredict(___) дополнительно возвращается, для протянутых наблюдений и каждой силы регуляризации:

  • Отрицаемые значения средней бинарной потери в классе (NegLoss).

  • Баллы положительного класса (PBScore) для каждого бинарного ученика.

пример

[Label,NegLoss,PBScore,Posterior] = kfoldPredict(___) дополнительно возвращает следующие оценки вероятности класса для протянутых наблюдений и для каждой силы регуляризации. Чтобы возвратить апостериорные вероятности, линейные ученики модели классификации должны быть моделями логистической регрессии.

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

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

Перекрестный подтвержденный, модель ECOC, состоявшая из линейных моделей классификации в виде ClassificationPartitionedLinearECOC объект модели. Можно создать ClassificationPartitionedLinearECOC модель с помощью fitcecoc и:

  1. Задавая любую из перекрестной проверки, аргументов пары "имя-значение", например, CrossVal

  2. Установка аргумента пары "имя-значение" Learners к 'linear' или линейный шаблон модели классификации, возвращенный templateLinear

Чтобы получить оценки, kfoldPredict применяется, те же данные раньше перекрестный подтверждали модель ECOC (X и Y).

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

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

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

  • Эта таблица содержит имена и описания встроенных функций, где yj является меткой класса для конкретного бинарного ученика (в наборе {-1,1,0}), sj является счетом к наблюдению j, и g (yj, sj) является бинарной формулой потерь.

    ЗначениеОписаниеОбласть счетаg (yj, sj)
    'binodeviance'Биномиальное отклонение(–∞,∞)журнал [1 + exp (–2yjsj)] / [2log (2)]
    'exponential'Экспоненциал(–∞,∞)exp (–yjsj)/2
    'hamming'Хэмминг[0,1] или (– ∞, ∞)[1 – знак (yjsj)]/2
    'hinge'Стержень(–∞,∞)макс. (0,1 – yjsj)/2
    'linear'Линейный(–∞,∞)(1 – yjsj)/2
    'logit'Логистический(–∞,∞)журнал [1 + exp (–yjsj)] / [2log (2)]
    'quadratic'Квадратичный[0,1][1 – yj (2sj – 1)] 2/2

    Программное обеспечение нормирует бинарные потери, таким образом, что потеря 0.5 когда yj = 0. Кроме того, программное обеспечение вычисляет среднюю бинарную потерю для каждого класса.

  • Для пользовательской бинарной функции потерь, например, customFunction, задайте его указатель на функцию 'BinaryLoss',@customFunction.

    customFunction должен иметь эту форму

    bLoss = customFunction(M,s)
    где:

    • M K-by-L кодирующий матрицу, сохраненную в Mdl.CodingMatrix.

    • s 1 L вектором-строкой из классификационных оценок.

    • bLoss потеря классификации. Этот скаляр агрегировал бинарные потери для каждого ученика в конкретном классе. Например, можно использовать среднюю бинарную потерю, чтобы агрегировать потерю по ученикам для каждого класса.

    • K является количеством классов.

    • L является количеством бинарных учеников.

    Для примера передачи пользовательской бинарной функции потерь смотрите, Предсказывают Демонстрационные Тестом Метки Модели ECOC Используя Пользовательскую Бинарную Функцию потерь.

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

  • SVM, затем BinaryLoss 'hinge'

  • Логистическая регрессия, затем BinaryLoss 'quadratic'

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

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

Схема Decoding, которая агрегировала бинарные потери в виде разделенной запятой пары, состоящей из 'Decoding' и 'lossweighted' или 'lossbased'. Для получения дополнительной информации смотрите Бинарную Потерю.

Пример: 'Decoding','lossbased'

Количество случайных начальных значений для подбора кривой апостериорным вероятностям минимизацией расхождения Kullback-Leibler в виде разделенной запятой пары, состоящей из 'NumKLInitializations' и неотрицательное целое число.

Чтобы использовать эту опцию, вы должны:

  • Возвратите четвертый выходной аргумент (Posterior).

  • Линейные модели классификации, которые составляют модели ECOC, должны использовать учеников логистической регрессии (то есть, CVMdl.Trained{1}.BinaryLearners{1}.Learner должен быть 'logistic').

  • PosteriorMethod должен быть 'kl'.

Для получения дополнительной информации смотрите, что Следующая Оценка Использует Расхождение Kullback-Leibler.

Пример: 'NumKLInitializations',5

Типы данных: single | double

Опции оценки в виде разделенной запятой пары, состоящей из 'Options' и массив структур, возвращенный statset.

Вызвать параллельные вычисления:

  • Вам нужна лицензия Parallel Computing Toolbox™.

  • Задайте 'Options',statset('UseParallel',true).

Метод оценки апостериорной вероятности в виде разделенной запятой пары, состоящей из 'PosteriorMethod' и 'kl' или 'qp'.

  • Чтобы использовать эту опцию, необходимо возвратить четвертый выходной аргумент (Posterior) и линейные модели классификации, которые составляют модели ECOC, должны использовать учеников логистической регрессии (то есть, CVMdl.Trained{1}.BinaryLearners{1}.Learner должен быть 'logistic').

  • Если PosteriorMethod 'kl', затем программное обеспечение оценивает апостериорные вероятности мультикласса путем минимизации расхождения Kullback-Leibler между предсказанными и ожидаемыми апостериорными вероятностями, возвращенными бинарными учениками. Для получения дополнительной информации смотрите, что Следующая Оценка Использует Расхождение Kullback-Leibler.

  • Если PosteriorMethod 'qp', затем программное обеспечение оценивает апостериорные вероятности мультикласса путем решения задачи наименьших квадратов с помощью квадратичного программирования. Вам нужна лицензия Optimization Toolbox™, чтобы использовать эту опцию. Для получения дополнительной информации смотрите, что Следующая Оценка Использует Квадратичное программирование.

Пример: 'PosteriorMethod','qp'

Уровень многословия в виде разделенной запятой пары, состоящей из 'Verbose' и 0 или 1. Verbose управляет количеством диагностических сообщений, что программное обеспечение отображается в Командном окне.

Если Verbose 0, затем программное обеспечение не отображает диагностические сообщения. В противном случае программное обеспечение отображает диагностические сообщения.

Пример: 'Verbose',1

Типы данных: single | double

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

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

Перекрестные подтвержденные, предсказанные метки класса, возвращенные как категориальное или символьный массив, логическая или числовая матрица или массив ячеек из символьных векторов.

В большинстве случаев, Label n-by-L массив совпадающего типа данных, когда наблюдаемый класс помечает (Y) используемый, чтобы создать CVMdl. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.) n является количеством наблюдений в данных о предикторе (X) и L является количеством сильных мест регуляризации в линейных моделях классификации, которые составляют перекрестную подтвержденную модель ECOC. Таким образом, Метка (iJ) предсказанная метка класса для наблюдения i использование модели ECOC линейных моделей классификации, которая имеет силу регуляризации CVMdl. Обученный {1}.BinaryLearners {1}.Lambda (j).

Если Y символьный массив и L> 1, затем Label массив ячеек меток класса.

Программное обеспечение присваивает предсказанную метку, соответствующую классу с самым большим, отрицаемым, средняя бинарная потеря (NegLoss), или, эквивалентно, самая маленькая средняя бинарная потеря.

Перекрестный подтвержденный, отрицаемый, средние бинарные потери, возвращенные как n-by-K-by-L числовая матрица или массив. K является количеством отличных классов в обучающих данных, и столбцы соответствуют классам в CVMdl.ClassNames. Для n и L, смотрите Label. NegLoss (iKJ) отрицаемая, средняя бинарная потеря для классификации наблюдения i в класс k использование линейной модели классификации, которая имеет силу регуляризации CVMdl. Обученный {1}.BinaryLoss {1}.Lambda (j).

Перекрестный подтвержденный, баллы положительного класса, возвращенные как n-by-B-by-L числовой массив. B является количеством бинарных учеников в перекрестной подтвержденной модели ECOC, и столбцы соответствуют бинарным ученикам в CVMdl.Trained{1}.BinaryLearners. Для n и L, смотрите Label. PBScore (iBJ) счет положительного класса бинарного ученика b для классификации наблюдения i в его положительный класс, с помощью линейной модели классификации, которая имеет силу регуляризации CVMdl. Обученный {1}.BinaryLearners {1}.Lambda (j).

Если матрица кодирования варьируется через сгибы (то есть, если схемой кодирования является sparserandom или denserandom), затем PBScore isempty).

Перекрестные подтвержденные следующие вероятности класса, возвращенные как n-by-K-by-L числовой массив. Для определений размерности смотрите NegLoss. Следующий (iKJ) апостериорная вероятность для классификации наблюдения i в класс k использование линейной модели классификации, которая имеет силу регуляризации CVMdl. Обученный {1}.BinaryLearners {1}.Lambda (j).

Возвратить апостериорные вероятности, CVMdl.Trained{1}.BinaryLearner{1}.Learner должен быть 'logistic'.

Примеры

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

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

load nlpdata

X разреженная матрица данных о предикторе и Y категориальный вектор меток класса.

Перекрестный подтвердите модель ECOC линейных моделей классификации.

rng(1); % For reproducibility 
CVMdl = fitcecoc(X,Y,'Learner','linear','CrossVal','on');

CVMdl ClassificationPartitionedLinearECOC модель. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку.

Предскажите метки для наблюдений что fitcecoc не использовал в обучении сгибы.

label = kfoldPredict(CVMdl);

Поскольку существует одна сила регуляризации в CVMdlМетка вектор-столбец предсказаний, содержащих столько же строк сколько наблюдения в X.

Создайте матрицу беспорядка.

cm = confusionchart(Y,label);

Загрузите набор данных NLP. Транспонируйте данные о предикторе.

load nlpdata
X = X';

Для простоты используйте метку 'другие' во всех наблюдениях в Y это не 'simulink', 'dsp', или 'comm'.

Y(~(ismember(Y,{'simulink','dsp','comm'}))) = 'others';

Создайте линейный шаблон модели классификации, который задает оптимизацию использования целевой функции SpaRSA.

t = templateLinear('Solver','sparsa');

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

rng(1); % For reproducibility 
CVMdl = fitcecoc(X,Y,'Learners',t,'KFold',5,'ObservationsIn','columns');
CMdl1 = CVMdl.Trained{1}
CMdl1 = 
  classreg.learning.classif.CompactClassificationECOC
      ResponseName: 'Y'
        ClassNames: [comm    dsp    simulink    others]
    ScoreTransform: 'none'
    BinaryLearners: {6x1 cell}
      CodingMatrix: [4x6 double]


  Properties, Methods

CVMdl ClassificationPartitionedLinearECOC модель. Это содержит свойство Trained, который является массивом ячеек 5 на 1, содержащим CompactClassificationECOC модели, что программное обеспечение обучило использование набора обучающих данных каждого сгиба.

По умолчанию, линейные модели классификации, которые составляют использование моделей ECOC SVMs. Баллы SVM являются подписанными расстояниями от наблюдения до контура решения. Поэтому область (-,). Создайте пользовательскую бинарную функцию потерь что:

  • Сопоставляет матрицу (M) проекта кодирования и классификационные оценки (оценки) положительного класса для каждого ученика к бинарной потере для каждого наблюдения

  • Использует линейную потерю

  • Агрегировал бинарную утрату ученика с помощью медианы.

Можно создать отдельную функцию для бинарной функции потерь, и затем сохранить ее на пути MATLAB®. Или, можно задать анонимную бинарную функцию потерь.

customBL = @(M,s)nanmedian(1 - bsxfun(@times,M,s),2)/2;

Предскажите метки перекрестной проверки и оцените среднюю бинарную потерю в классе. Распечатайте средние отрицательные бинарные потери в классе для случайного набора 10 наблюдений из сгиба.

[label,NegLoss] = kfoldPredict(CVMdl,'BinaryLoss',customBL);

idx = randsample(numel(label),10);
table(Y(idx),label(idx),NegLoss(idx,1),NegLoss(idx,2),NegLoss(idx,3),...
    NegLoss(idx,4),'VariableNames',[{'True'};{'Predicted'};...
    categories(CVMdl.ClassNames)])
ans=10×6 table
      True      Predicted      comm         dsp       simulink    others 
    ________    _________    _________    ________    ________    _______

    others      others         -1.2319     -1.0488    0.048758     1.6175
    simulink    simulink       -16.407     -12.218      21.531     11.218
    dsp         dsp            -0.7387    -0.11534    -0.88466    -0.2613
    others      others         -0.1251     -0.8749    -0.99766    0.14517
    dsp         dsp             2.5867      6.4187     -3.5867    -4.4165
    others      others       -0.025358     -1.2287    -0.97464    0.19747
    others      others         -2.6725    -0.56708    -0.51092     2.7453
    others      others         -1.1605    -0.88321    -0.11679    0.43504
    others      others         -1.9511     -1.3175     0.24735    0.95111
    simulink    others          -7.848     -5.8203      4.8203     6.8457

Программное обеспечение предсказывает метку на основе максимальной отрицаемой потери.

Модели ECOC, состоявшие из линейных моделей классификации, возвращают апостериорные вероятности для учеников логистической регрессии только. Этот пример требует Parallel Computing Toolbox™ и Optimization Toolbox™

Загрузите набор данных NLP и предварительно обработайте данные, когда в Задают Пользовательскую Бинарную Потерю.

load nlpdata
X = X';
Y(~(ismember(Y,{'simulink','dsp','comm'}))) = 'others';

Создайте набор 5 логарифмически распределенных сильных мест регуляризации от$10^{-5}$ через$10^{-0.5}$.

Lambda = logspace(-6,-0.5,5);

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

t = templateLinear('Solver','sparsa','Learner','logistic','Lambda',Lambda);

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

rng(1); % For reproducibility
Options = statset('UseParallel',true);
CVMdl = fitcecoc(X,Y,'Learners',t,'KFold',5,'ObservationsIn','columns',...
    'Options',Options);
Starting parallel pool (parpool) using the 'local' profile ...
connected to 6 workers.

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

[label,~,~,Posterior] = kfoldPredict(CVMdl,'Options',Options,...
    'PosteriorMethod','qp');
size(label)
label(3,4)
size(Posterior)
Posterior(3,:,4)
ans =

       31572           5


ans = 

  categorical

     others 


ans =

       31572           4           5


ans =

    0.0293    0.0373    0.1738    0.7596

Поскольку существует пять сильных мест регуляризации:

  • label 31572 5 категориальный массив. label(3,4) предсказанная, перекрестная подтвержденная метка для наблюдения 3 использования модели, обученной с силой регуляризации Lambda(4).

  • Posterior 31572 4 5 матрицами. Posterior(3,:,4) вектор всех предполагаемых, следующих вероятностей класса для наблюдения 3 использования модели, обученной с силой регуляризации Lambda(4). Порядок второго измерения соответствует CVMdl.ClassNames. Отобразите случайный набор 10 следующих вероятностей класса.

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

idx = randsample(size(label,1),10);
table(Y(idx),label(idx,4),Posterior(idx,1,4),Posterior(idx,2,4),...
    Posterior(idx,3,4),Posterior(idx,4,4),...
    'VariableNames',[{'True'};{'Predicted'};categories(CVMdl.ClassNames)])
ans =

  10×6 table

      True      Predicted       comm          dsp        simulink     others  
    ________    _________    __________    __________    ________    _________

    others      others         0.030309      0.022454     0.10401      0.84323
    simulink    simulink     3.5104e-05    4.3154e-05     0.99877    0.0011543
    dsp         others          0.15837       0.25784     0.18567      0.39811
    others      others         0.093212      0.063752     0.12927      0.71376
    dsp         dsp           0.0057401       0.89678    0.014939     0.082538
    others      others         0.085715      0.054451    0.083765      0.77607
    others      others        0.0061121     0.0057884     0.02409      0.96401
    others      others         0.066741      0.074103       0.168      0.69115
    others      others          0.05236      0.025631     0.13245      0.78956
    simulink    simulink     0.00039812    0.00045575     0.73724       0.2619

Больше о

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

Алгоритмы

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

Программное обеспечение может оценить апостериорные вероятности класса путем минимизации расхождения Kullback-Leibler или при помощи квадратичного программирования. Для следующих описаний следующих алгоритмов оценки примите что:

  • mkj является элементом (k, j) проекта кодирования матричный M.

  • I является функцией индикатора.

  • p^k оценка апостериорной вероятности класса для класса k наблюдения, k = 1..., K.

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

Ссылки

[1] Allwein, E., Р. Шапайр и И. Зингер. “Уменьшая мультикласс до двоичного файла: подход объединения для поля classifiers”. Журнал Исследования Машинного обучения. Издание 1, 2000, стр 113–141.

[2] Dietterich, T. и Г. Бакири. “Решая задачи Изучения Мультикласса С помощью Выходных Кодов С коррекцией ошибок”. Журнал Исследования Искусственного интеллекта. Издание 2, 1995, стр 263–286.

[3] Escalera, S., О. Пуджол и П. Радева. “На процессе декодирования в троичных выходных кодах с коррекцией ошибок”. Транзакции IEEE согласно Анализу Шаблона и Искусственному интеллекту. Издание 32, Выпуск 7, 2010, стр 120–134.

[4] Escalera, S., О. Пуджол и П. Радева. “Отделимость троичных кодов для разреженных проектов выходных кодов с коррекцией ошибок”. Шаблон Recogn. Издание 30, Выпуск 3, 2009, стр 285–297.

[5] Hastie, T. и Р. Тибширэни. “Классификация Попарной Связью”. Летопись Статистики. Издание 26, Выпуск 2, 1998, стр 451–471.

[6] Ву, T. F. К. Дж. Лин и Р. Вэн. “Оценки вероятности для Классификации Мультиклассов Попарной Связью”. Журнал Исследования Машинного обучения. Издание 5, 2004, стр 975–1005.

[7] Zadrozny, B. “Уменьшая Мультикласс до Двоичного файла путем Связи Оценок Вероятности”. NIPS 2001: Продолжения Усовершенствований в Нейронных Системах обработки информации 14, 2001, стр 1041–1048.

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

Введенный в R2016a

Для просмотра документации необходимо авторизоваться на сайте