exponenta event banner

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'Стержень(–∞,∞)max (0,1 - yjsj )/2
    'linear'Линейный(–∞,∞)(1 - yjsj )/2
    'logit'Логистический(–∞,∞)log [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-by-L строк классификационных баллов.

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

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

    • L - количество двоичных учеников.

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

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

  • SVM, затем BinaryLoss является 'hinge'

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

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

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

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

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

Число случайных начальных значений для аппроксимации задних вероятностей минимизацией расходимости Куллбэка-Лейблера, определяемых как пара, разделенная запятыми, состоящая из '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.

  • Если 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);

Figure contains an object of type ConfusionMatrixChart.

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

load nlpdata
X = X';

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

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

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

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

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

rng(1); % For reproducibility 
CVMdl = fitcecoc(X,Y,'Learners',t,'KFold',5,'ObservationsIn','columns');
CMdl1 = CVMdl.Trained{1}
CMdl1 = 
  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, используют SVM. Оценки 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, состоящие из моделей линейной классификации, возвращают апостериорные вероятности только для учащихся с логистической регрессией. В этом примере требуется Toolbox™ параллельных вычислений и оптимизация 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 линейных классификационных моделей с использованием пятикратной перекрестной проверки. Укажите, что наблюдения предиктора соответствуют столбцам, и используйте параллельные вычисления.

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 the parallel pool (number of workers: 6).

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

[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.0285    0.0373    0.1714    0.7627

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

  • 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.030275      0.022142     0.10416      0.84342
    simulink    simulink     3.4954e-05    4.2982e-05     0.99832    0.0016016
    dsp         others          0.15787       0.25718     0.18848      0.39647
    others      others         0.094177      0.062712     0.12921      0.71391
    dsp         dsp           0.0057979       0.89703    0.015098     0.082072
    others      others         0.086084      0.054836    0.086165      0.77292
    others      others        0.0062338     0.0060492    0.023816       0.9639
    others      others          0.06543      0.075097     0.17136      0.68812
    others      others         0.051843      0.025566     0.13299       0.7896
    simulink    simulink     0.00044059    0.00049753     0.70958      0.28948

Подробнее

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

Алгоритмы

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

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

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

  • I - функция индикатора.

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

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

Ссылки

[1] Allwein, E., R. Schapire и Y. Singer. «Сокращение мультиклассов до двоичных: унифицирующий подход к classifiers маржи». Журнал исследований машинного обучения. Том 1, 2000, стр. 113-141.

[2] Диттерих, Т. и Г. Бакири. «Решение проблем многоклассового обучения с помощью кодов вывода с исправлением ошибок». Журнал исследований искусственного интеллекта. Том 2, 1995, стр. 263-286.

[3] Эскалера, С., О. Пужоль и П. Радева. «Процесс декодирования в выходных кодах с тройной коррекцией ошибок». Транзакции IEEE по анализу шаблонов и машинному интеллекту. Том 32, выпуск 7, 2010, стр. 120-134.

[4] Эскалера, С., О. Пужоль и П. Радева. «Разделяемость троичных кодов для разреженных конструкций выходных кодов с исправлением ошибок». Повторная запись шаблона. Том 30, выпуск 3, 2009, стр. 285-297.

[5] Хасти, Т. и Р. Тибширани. «Классификация по парной муфте». Анналы статистики. Том 26, выпуск 2, 1998, стр. 451-471.

[6] Wu, T.F., C. J. Лин и Р. Венг. «Оценки вероятности для классификации нескольких классов по парному соединению». Журнал исследований машинного обучения. Том 5, 2004, стр. 975-1005.

[7] Задрозный, В. «Уменьшение мультикласса до двоичного путем оценки вероятности связи». NIPS 2001: Proceedings of Advances in Neural Information Processing Systems 14, 2001, pp. 1041-1048.

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

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