kfoldPredict

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

Синтаксис

Label = kfoldPredict(CVMdl)
Label = kfoldPredict(CVMdl,Name,Value)
[Label,NegLoss,PBScore] = kfoldPredict(___)
[Label,NegLoss,PBScore,Posterior] = 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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. Таким образом, Label(i,j) является предсказанной меткой класса для наблюдения i с помощью модели ECOC линейных моделей классификации, которая имеет силу регуляризации CVMdl.Trained{1}.BinaryLearners{1}.Lambda(j).

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

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

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

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

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

Перекрестные подтвержденные следующие вероятности класса, возвращенные как n-by-K-by-L числовой массив. Для определений размерности смотрите NegLoss. Posterior(i,k,j) является апостериорной вероятностью для классификации наблюдения i в класс k с помощью линейной модели классификации, которая имеет силу регуляризации CVMdl.Trained{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, label является вектор-столбцом прогнозов, содержащих столько же строк сколько наблюдения в 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 логарифмически распределенных сильных мест регуляризации от через.

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

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