exponenta event banner

kfoldPredict

Классификация наблюдений в модели ECOC с перекрестной проверкой

Описание

пример

label = kfoldPredict(CVMdl) возвращает метки классов, предсказанные перекрестно проверенной моделью ECOC (ClassificationPartitionedECOC) CVMdl. Для каждого раза, kfoldPredict предсказывает метки классов для наблюдений, которые он проводит во время обучения. CVMdl.X содержит оба набора наблюдений.

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

пример

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

пример

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

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

пример

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

Для получения вероятности заднего класса необходимо установить 'FitPosterior',1 при обучении перекрестно проверенной модели ECOC с использованием fitcecoc. В противном случае kfoldPredict выдает ошибку.

Примеры

свернуть все

Загрузите набор данных радужки Фишера. Укажите данные предиктора X, данные ответа Yи порядок классов в Y.

load fisheriris
X = meas;
Y = categorical(species);
classOrder = unique(Y);
rng(1); % For reproducibility

Подготовка и перекрестная проверка модели ECOC с использованием двоичных классификаторов вспомогательных векторных машин (SVM). Стандартизируйте данные предиктора с помощью шаблона SVM и укажите порядок классов.

t = templateSVM('Standardize',1);
CVMdl = fitcecoc(X,Y,'CrossVal','on','Learners',t,'ClassNames',classOrder);

CVMdl является ClassificationPartitionedECOC модель. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку. Можно указать другое количество сгибов с помощью 'KFold' аргумент пары имя-значение.

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

labels = kfoldPredict(CVMdl);
idx = randsample(numel(labels),10);
table(Y(idx),labels(idx),...
    'VariableNames',{'TrueLabels','PredictedLabels'})
ans=10×2 table
    TrueLabels    PredictedLabels
    __________    _______________

    setosa          setosa       
    versicolor      versicolor   
    setosa          setosa       
    virginica       virginica    
    versicolor      versicolor   
    setosa          setosa       
    virginica       virginica    
    virginica       virginica    
    setosa          setosa       
    setosa          setosa       

CVMdl правильно помечает кратные проверке наблюдения индексами idx.

Загрузите набор данных радужки Фишера. Укажите данные предиктора X, данные ответа Yи порядок классов в Y.

load fisheriris
X = meas;
Y = categorical(species);
classOrder = unique(Y); % Class order
K = numel(classOrder);  % Number of classes
rng(1); % For reproducibility

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

t = templateSVM('Standardize',1);
CVMdl = fitcecoc(X,Y,'CrossVal','on','Learners',t,'ClassNames',classOrder);

CVMdl является ClassificationPartitionedECOC модель. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку. Можно указать другое количество сгибов с помощью 'KFold' аргумент пары имя-значение.

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

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

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

  • Агрегирует двоичные потери учащихся с помощью медианы

Можно создать отдельную функцию для двоичной функции потери, а затем сохранить ее на пути MATLAB ®. Можно также указать анонимную двоичную функцию потери. В этом случае создайте дескриптор функции (customBL) к анонимной двоичной функции потери.

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

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

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

idx = randsample(numel(label),10);
classOrder
classOrder = 3x1 categorical
     setosa 
     versicolor 
     virginica 

table(Y(idx),label(idx),NegLoss(idx,:),'VariableNames',...
    {'TrueLabel','PredictedLabel','NegLoss'})
ans=10×3 table
    TrueLabel     PredictedLabel                 NegLoss             
    __________    ______________    _________________________________

    setosa          versicolor      0.37148       2.1294      -4.0009
    versicolor      versicolor      -1.2167      0.36689     -0.65018
    setosa          versicolor      0.23923        2.079      -3.8182
    virginica       virginica       -1.9151     -0.19954      0.61467
    versicolor      versicolor      -1.3746      0.45537     -0.58077
    setosa          versicolor      0.20061       2.2774       -3.978
    virginica       versicolor      -1.4921     0.090197    -0.098125
    virginica       virginica       -1.7668     -0.13465      0.40146
    setosa          versicolor      0.20005       1.9113      -3.6113
    setosa          versicolor      0.16105       1.9684      -3.6295

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

Загрузите набор данных радужки Фишера. Использовать размеры лепестков в качестве данных предиктора X. Укажите данные ответа Y и порядок классов в Y.

load fisheriris
X = meas(:,3:4);
Y = categorical(species);
classOrder = unique(Y);
rng(1); % For reproducibility

Создайте шаблон SVM. Стандартизируйте предикторы и укажите гауссово ядро.

t = templateSVM('Standardize',1,'KernelFunction','gaussian');

t является шаблоном SVM. Большинство его свойств пусты. При обучении классификатору ECOC программное обеспечение устанавливает соответствующие свойства для их значений по умолчанию.

Подготовка и перекрестная проверка классификатора ECOC с использованием шаблона SVM. Преобразовать оценки классификации в апостериорные вероятности класса (возвращаемые kfoldPredict) с использованием 'FitPosterior' аргумент пары имя-значение. Укажите порядок классов.

CVMdl = fitcecoc(X,Y,'Learners',t,'CrossVal','on','FitPosterior',true,...
    'ClassNames',classOrder);

CVMdl является ClassificationPartitionedECOC модель. По умолчанию программа использует десятикратную перекрестную проверку.

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

[label,~,~,Posterior] = kfoldPredict(CVMdl,'NumKLInitializations',10);

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

Отображение случайного набора результатов.

idx = randsample(size(X,1),10);
CVMdl.ClassNames
ans = 3x1 categorical
     setosa 
     versicolor 
     virginica 

table(Y(idx),label(idx),Posterior(idx,:),...
    'VariableNames',{'TrueLabel','PredLabel','Posterior'})
ans=10×3 table
    TrueLabel     PredLabel                   Posterior               
    __________    __________    ______________________________________

    versicolor    versicolor       0.00864       0.98243     0.0089298
    versicolor    virginica     2.2197e-14       0.12447       0.87553
    setosa        setosa             0.999    0.00022836    0.00076885
    versicolor    versicolor    2.2194e-14       0.98915      0.010848
    virginica     virginica       0.012318      0.012925       0.97476
    virginica     virginica      0.0015573     0.0015639       0.99688
    virginica     virginica      0.0042896     0.0043557       0.99135
    setosa        setosa             0.999    0.00028329    0.00071382
    virginica     virginica      0.0094654     0.0098159       0.98072
    setosa        setosa             0.999    0.00013559    0.00086195

Столбцы Posterior соответствуют порядку классов CVMdl.ClassNames.

Обучите многоклассную модель ECOC и оцените апостериорные вероятности с помощью параллельных вычислений.

Загрузить arrhythmia набор данных. Анализ данных ответа Y.

load arrhythmia
Y = categorical(Y);
tabulate(Y)
  Value    Count   Percent
      1      245     54.20%
      2       44      9.73%
      3       15      3.32%
      4       15      3.32%
      5       13      2.88%
      6       25      5.53%
      7        3      0.66%
      8        2      0.44%
      9        9      1.99%
     10       50     11.06%
     14        4      0.88%
     15        5      1.11%
     16       22      4.87%
n = numel(Y);
K = numel(unique(Y));

Несколько классов не представлены в данных, и многие другие классы имеют низкие относительные частоты.

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

t = templateEnsemble('GentleBoost',50,'Tree');

t является объектом шаблона. Большинство вариантов пусты ([]). Программа использует значения по умолчанию для всех пустых параметров во время обучения.

Поскольку переменная ответа содержит много классов, укажите схему разреженного произвольного кодирования.

rng(1); % For reproducibility
Coding = designecoc(K,'sparserandom');

Обучение и перекрестная проверка модели ECOC с использованием параллельных вычислений. Посадка задних вероятностей (возвращается kfoldPredict).

pool = parpool;                      % Invokes workers
Starting parallel pool (parpool) using the 'local' profile ...
connected to 6 workers.
options = statset('UseParallel',1);
CVMdl = fitcecoc(X,Y,'Learner',t,'Options',options,'Coding',Coding,...
    'FitPosterior',1,'CrossVal','on');
Warning: One or more folds do not contain points from all the groups.

CVMdl является ClassificationPartitionedECOC модель. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку. Можно указать другое количество сгибов с помощью 'KFold' аргумент пары имя-значение.

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

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

[~,~,~,posterior] = kfoldPredict(CVMdl,'Options',options);
idx = randsample(n,10);
table(idx,Y(idx),posterior(idx,1),...
    'VariableNames',{'OOFSampleIndex','TrueLabel','PosteriorNoArrhythmia'})
ans=10×3 table
    OOFSampleIndex    TrueLabel    PosteriorNoArrhythmia
    ______________    _________    _____________________

         171             1                0.33654       
         221             1                0.85135       
          72             16                0.9174       
           3             10              0.025649       
         202             1                 0.8438       
         243             1                 0.9435       
          18             1                0.81198       
          49             6               0.090154       
         234             1                0.61625       
         315             1                0.97187       

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

свернуть все

Модель ECOC с перекрестной проверкой, указанная как ClassificationPartitionedECOC модель. Можно создать ClassificationPartitionedECOC модель двумя способами:

  • Пройти обученную модель ECOC (ClassificationECOCКому crossval.

  • Обучение модели ECOC с помощью fitcecoc и укажите любой из этих аргументов пары имя-значение перекрестной проверки: 'CrossVal', 'CVPartition', 'Holdout', 'KFold', или 'Leaveout'.

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

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

Пример: kfoldPredict(CVMdl,'PosteriorMethod','qp') определяет оценку мультиклассовых апостериорных вероятностей путем решения задачи наименьших квадратов с помощью квадратичного программирования.

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

Дефолт BinaryLoss значение зависит от диапазонов баллов, возвращаемых двоичными учениками. В этой таблице описаны некоторые значения по умолчанию BinaryLoss значения, основанные на данных допущениях.

ПредположениеЗначение по умолчанию
Все двоичные ученики являются SVM или линейными или классификационными моделями SVM.'hinge'
Все бинарные учащиеся являются ансамблями, обученными AdaboostM1 или GentleBoost.'exponential'
Все бинарные учащиеся являются ансамблями, обученными LogitBoost.'binodeviance'
Все двоичные ученики являются линейными или классификационными моделями ядра учащихся логистической регрессии. Или вы указываете, чтобы предсказать апостериорные вероятности класса путем установки 'FitPosterior',true в fitcecoc.'quadratic'

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

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

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

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

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

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

Если не запросить четвертый выходной аргумент (Posterior) и установить 'PosteriorMethod','kl' (по умолчанию), то программное обеспечение игнорирует значение NumKLInitializations.

Дополнительные сведения см. в разделе Апостериорная оценка с использованием дивергенции Kullback-Leibler.

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

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

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

Для вызова параллельных вычислений:

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

  • Определить 'Options',statset('UseParallel',true).

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

  • Если PosteriorMethod является 'kl'затем программное обеспечение оценивает мультиклассовые апостериорные вероятности путем минимизации расхождения Куллбэка-Лейблера между предсказанной и ожидаемой апостериорной вероятностями, возвращаемыми двоичными учениками. Дополнительные сведения см. в разделе Задняя оценка с использованием дивергенции Kullback-Leibler.

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

  • Если не запросить четвертый выходной аргумент (Posterior), то программное обеспечение игнорирует значение PosteriorMethod.

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

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

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

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

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

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

свернуть все

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

label имеет тот же тип данных и количество строк, что и CVMdl.Y.

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

Сведенные на нет средние двоичные потери, возвращаемые в виде числовой матрицы. NegLoss - матрица n-by-K, где n - число наблюдений (size(CVMdl.X,1)) и K - количество уникальных классов (size(CVMdl.ClassNames,1)).

Положительные оценки для каждого двоичного ученика, возвращаемые в виде числовой матрицы. PBScore - матрица n-by-L, где n - количество наблюдений (size(CVMdl.X,1)) и L - количество двоичных учеников (size(CVMdl.CodingMatrix,2)).

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

Апостериорные вероятности классов, возвращаемые в виде числовой матрицы. Posterior - матрица n-by-K, где n - число наблюдений (size(CVMdl.X,1)) и K - количество уникальных классов (size(CVMdl.ClassNames,1)).

Необходимо установить 'FitPosterior',1 при обучении перекрестно проверенной модели ECOC с использованием fitcecoc для запроса Posterior. В противном случае программа выдает ошибку.

Подробнее

свернуть все

Двоичные потери

Двоичная потеря - это функция класса и оценки классификации, которая определяет, насколько хорошо двоичный ученик классифицирует наблюдение в классе.

Предположим, что:

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

  • sj - оценка двоичного ученика j для наблюдения.

  • g - функция двоичных потерь.

  • k ^ - прогнозируемый класс для наблюдения.

При декодировании на основе потерь [Escalera et al.] класс, производящий минимальную сумму двоичных потерь над двоичными учениками, определяет прогнозируемый класс наблюдения, то есть

k^=argmink∑j=1L'mkj'g (mkj, sj).

При декодировании со взвешенными потерями [Escalera et al.] класс, производящий минимальное среднее двоичных потерь по двоичным ученикам, определяет прогнозируемый класс наблюдения, то есть

k^=argmink∑j=1L'mkj'g (mkj, sj) ∑j=1L'mkj|.

Allwein et al. предполагают, что взвешенное по потерям декодирование улучшает точность классификации, сохраняя значения потерь для всех классов в одном динамическом диапазоне.

Эта таблица суммирует поддерживаемые функции потерь, где 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, и агрегирует, используя среднее значение двоичных учеников [Allwein et al.].

Не путайте бинарную потерю с общей классификационной потерей (указанной 'LossFun' аргумент пары имя-значение loss и predict объектные функции), который измеряет, насколько хорошо классификатор ECOC работает в целом.

Алгоритмы

свернуть все

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

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

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

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

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

Задняя оценка с использованием дивергенции Kullback-Leibler

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

Δ (r, r ^) =∑j=1Lwj[rjlogrjr^j+ (1 − rj) log1 rj1 − r ^ j],

где wj=∑Sjwi∗ - вес для двоичного ученика j.

  • Sj - это набор показателей наблюдения, на которых обучается двоичный ученик j.

  • wi∗ - вес наблюдения i.

Программное обеспечение минимизирует расхождение итеративно. Первым шагом является выбор начальных значений p ^ k (0); k = 1,..., K для апостериорных вероятностей класса.

  • Если не указать 'NumKLIterations'затем программное обеспечение пробует оба набора детерминированных начальных значений, описанных далее, и выбирает набор, который минимизирует Δ.

    • p ^ k (0) = 1/K; k = 1,..., K.

    • p ^ k (0); k = 1,..., K - решение системы

      M01p ^ (0) = r,

      где M01 - M со всеми mkj = -1, замененными на 0, и r - вектор апостериорных вероятностей положительного класса, возвращаемый L двоичными учениками [Dietterich et al.]. Программное обеспечение использует lsqnonneg для решения системы.

  • При указании 'NumKLIterations',c, где c является натуральным числом, то программное обеспечение делает следующее, чтобы выбрать множество p ^ k (0); k = 1,..., K, и выбирает множество, которое минимизирует Δ.

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

    • Программное обеспечение случайным образом генерирует c векторы длины К с использованием rand, а затем нормализует каждый вектор для суммирования в 1.

При итерации t программное обеспечение выполняет следующие действия:

  1. Вычислить

    r ^ j (t) =∑k=1Kp^k (t) I (mkj = + 1) ∑k=1Kp^k (t) I (mkj=+1∪mkj=−1).

  2. Оценить апостериорную вероятность следующего класса, используя

    p ^ k (t + 1) = p ^ k (t) ∑j=1Lwj[rjI (mkj = + 1) + (1 rj) I (mkj = 1)] ∑j=1Lwj[r^j (t) I (mkj = + 1) + (1 − r ^ j (t)) I (mkj = − 1)].

  3. Нормализовать p ^ k (t + 1); k = 1,..., K так, чтобы они были равны 1.

  4. Проверьте сходимость.

Более подробно см. [Hastie et al.] и [Zadrozny].

Задняя оценка с использованием квадратичного программирования

Для оценки апостериорной вероятности с помощью квадратичного программирования требуется лицензия Optimization Toolbox. Чтобы оценить апостериорные вероятности для наблюдения с помощью этого метода, программное обеспечение выполняет следующие шаги:

  1. Оцените апостериорные вероятности положительного класса, rj, для двоичных учеников j = 1,...,L.

  2. Используя взаимосвязь между rj и p ^ k [Wu et al.], минимизируйте

    ∑j=1L[−rj∑k=1Kp^kI (mkj = 1) + (1 rj) ∑k=1Kp^kI (mkj = + 1)] 2

    в отношении p ^ k и ограничений

    0≤p^k≤1∑kp^k=1.

    Программа выполняет минимизацию с помощью quadprog(Панель инструментов оптимизации).

Ссылки

[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.

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

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