exponenta event banner

fitPosterior

Подгонка задних вероятностей для классификатора компактной опорной векторной машины (SVM)

Описание

ScoreSVMModel = fitPosterior(SVMModel,TBL,Y) возвращает классификатор обученной машины вектора поддержки (SVM) ScoreSVMModel содержащий оптимальную функцию преобразования оценки в апостериорную вероятность для двухклассного обучения. Дополнительные сведения см. в разделе Алгоритмы. Если вы тренируетесь SVMModel используя таблицу, необходимо использовать таблицу в качестве входных данных для fitPosterior.

пример

ScoreSVMModel = fitPosterior(SVMModel,X,Y) возвращает обученный классификатор SVM ScoreSVMModel содержащий оптимальную функцию преобразования оценки в апостериорную вероятность для двухклассного обучения. Если вы тренируетесь SVMModel используя матрицу, необходимо использовать матрицу в качестве входных данных для fitPosterior.

пример

[ScoreSVMModel,ScoreTransform] = fitPosterior(___) дополнительно возвращает параметры оптимальной функции преобразования «оценка-задняя вероятность» (ScoreTransform) для любой из комбинаций входных аргументов в предыдущих синтаксисах.

Примеры

свернуть все

Загрузить ionosphere набор данных. Зарезервировать 20 случайных наблюдений данных и рассмотреть этот набор новых данных.

load ionosphere
n = size(X,1);
rng(1);  % For reproducibility

indx = ~ismember([1:n],randsample(n,20)); % Indices for the training data

Классы этого набора данных неразделимы.

Обучение классификатора SVM с использованием данных обучения. Стандартизировать данные и указать, что 'g' является положительным классом.

SVMModel = fitcsvm(X(indx,:),Y(indx),'ClassNames',{'b','g'},...
    'Standardize',true);

SVMModel является ClassificationSVM классификатор.

Используйте новый набор данных, чтобы оценить оптимальную функцию преобразования оценки в апостериорную вероятность для отображения баллов на апостериорную вероятность классифицируемого наблюдения как g. Для эффективности сделайте компактную версию SVMModelи передать его и новые данные в fitPosterior.

CompactSVMModel = compact(SVMModel);
[ScoreCSVMModel,ScoreParameters] = fitPosterior(CompactSVMModel,...
    X(~indx,:),Y(~indx));

ScoreTransform = ScoreCSVMModel.ScoreTransform
ScoreTransform = 
'@(S)sigmoid(S,-1.098977e+00,4.520421e-01)'
ScoreParameters
ScoreParameters = struct with fields:
         Type: 'sigmoid'
        Slope: -1.0990
    Intercept: 0.4520

ScoreTransform является оптимальной функцией преобразования баллов. ScoreParameters - структурный массив с тремя полями: имя функции преобразования баллов (Type), сигмоидальный наклон (Slope) и оценки сигмоидного перехвата (Intercept).

Кроме того, можно пройти SVMModel и новые данные для fitSVMPosterior, но этот процесс не так эффективен.

Оценить апостериорные вероятности того, что наблюдения в новых данных находятся в классе g.

[labels,postProbs] = predict(ScoreCSVMModel,X(~indx,:));
table(Y(~indx),labels,postProbs(:,2),...
    'VariableNames',{'TrueLabel','PredictedLabel','PosteriorProbability'})
ans=20×3 table
    TrueLabel    PredictedLabel    PosteriorProbability
    _________    ______________    ____________________

      {'g'}          {'g'}                  0.7844     
      {'b'}          {'b'}                0.024584     
      {'g'}          {'g'}                 0.82403     
      {'b'}          {'b'}                0.006164     
      {'b'}          {'b'}              3.6084e-06     
      {'b'}          {'b'}                 0.15687     
      {'b'}          {'g'}                 0.96219     
      {'b'}          {'b'}              6.1329e-09     
      {'b'}          {'b'}               0.0019641     
      {'g'}          {'g'}                  0.7251     
      {'g'}          {'g'}                 0.70263     
      {'b'}          {'b'}                0.075302     
      {'g'}          {'g'}                 0.90691     
      {'g'}          {'g'}                 0.82844     
      {'b'}          {'b'}                0.051178     
      {'g'}          {'g'}                 0.95332     
      ⋮

Загрузите набор данных радужки Фишера. Используйте длины и ширины лепестков в качестве данных предиктора и удалите виды virginica из данных. Зарезервировать 10 случайных наблюдений данных и рассмотреть этот набор новых данных.

load fisheriris
classKeep = ~strcmp(species,'virginica');
X = meas(classKeep,3:4);
Y = species(classKeep);

rng(1);  % For reproducibility 
indx1 = 1:numel(species);
indx2 = indx1(classKeep);
indx = ~ismember(indx2,randsample(indx2,10)); % Indices for the training data

gscatter(X(indx,1),X(indx,2),Y(indx));
title('Scatter Diagram of Iris Measurements')
xlabel('Petal length')
ylabel('Petal width')
legend('Setosa','Versicolor')

Figure contains an axes. The axes with title Scatter Diagram of Iris Measurements contains 2 objects of type line. These objects represent Setosa, Versicolor.

Классы совершенно раздельные. Следовательно, функция преобразования «оценка-задняя вероятность» является ступенчатой функцией.

Обучение классификатора SVM. Стандартизировать данные и указать, что versicolor является положительным классом.

SVMModel = fitcsvm(X(indx,:),Y(indx),...
    'ClassNames',{'setosa','versicolor'},'Standardize',true);

SVMModel является ClassificationSVM классификатор.

Используйте новый набор данных, чтобы оценить оптимальную функцию преобразования оценки в апостериорную вероятность для отображения баллов на апостериорную вероятность классифицируемого наблюдения как versicolor. Для эффективности сделайте компактную версию SVMModelи передать его и новые данные в fitPosterior.

CompactSVMModel = compact(SVMModel);
[ScoreCSVMModel,ScoreParameters] = fitPosterior(CompactSVMModel,...
    X(~indx,:),Y(~indx));
Warning: Classes are perfectly separated. The optimal score-to-posterior transformation is a step function.
ScoreTransform = ScoreCSVMModel.ScoreTransform
ScoreTransform = 
'@(S)step(S,-1.338450e+00,2.012495e+00,5.333333e-01)'

fitPosterior отображает предупреждение всякий раз, когда классы являются разделяемыми, и сохраняет функцию шага в ScoreSVMModel.ScoreTransform.

Просмотрите тип функции оценки и ее оценочные значения.

ScoreParameters
ScoreParameters = struct with fields:
                        Type: 'step'
                  LowerBound: -1.3385
                  UpperBound: 2.0125
    PositiveClassProbability: 0.5333

ScoreParameters - структурный массив с четырьмя полями:

  • Тип функции преобразования баллов (Type)

  • Оценка, соответствующая отрицательной границе класса (LowerBound)

  • Оценка, соответствующая положительной границе класса (UpperBound)

  • Положительная вероятность класса (PositiveClassProbability)

Кроме того, можно пройти SVMModel и новые данные для fitSVMPosterior, но этот процесс не так эффективен.

Оцените апостериорные вероятности того, что наблюдения в новых данных представляют собой ирисы versicolor.

[labels,postProbs] = predict(ScoreCSVMModel,X(~indx,:));
table(Y(~indx),labels,postProbs(:,2),...
    'VariableNames',{'TrueLabel','PredictedLabel','PosteriorProbability'})
ans=10×3 table
      TrueLabel       PredictedLabel    PosteriorProbability
    ______________    ______________    ____________________

    {'setosa'    }    {'setosa'    }             0          
    {'setosa'    }    {'setosa'    }             0          
    {'setosa'    }    {'setosa'    }             0          
    {'setosa'    }    {'setosa'    }             0          
    {'setosa'    }    {'setosa'    }             0          
    {'setosa'    }    {'setosa'    }             0          
    {'setosa'    }    {'setosa'    }             0          
    {'setosa'    }    {'setosa'    }             0          
    {'versicolor'}    {'versicolor'}             1          
    {'versicolor'}    {'versicolor'}             1          

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

  • 0 если балл меньше ScoreParameters.LowerBound

  • 1 если оценка больше, чем ScoreParameters.UpperBound

  • ScoreParameters.PositiveClassProbability если оценка находится в интервале [ ScoreParameters.LowerBound , ScoreParameters.LowerBound]

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

свернуть все

Обученный компактный классификатор SVM, указанный как CompactClassificationSVM модель, возвращенная compact.

Образец данных, указанный как таблица. Каждая строка TBL соответствует одному наблюдению, и каждый столбец соответствует одной прогнозирующей переменной. TBL должен содержать все предикторы, используемые для обучения SVMModel. Дополнительно, TBL может содержать дополнительный столбец для переменной ответа. Многозначные переменные и массивы ячеек, отличные от массивов ячеек символьных векторов, не допускаются.

Если TBL содержит переменную ответа, используемую для обучения SVMModel, то указывать не нужно Y. Если TBL не включает переменную ответа, то длина Y должно быть равно количеству строк в TBL.

Если образцы данных используются для обучения SVMModel является table, то необходимо указать входные данные для fitPosterior в виде таблицы.

Если установить 'Standardize',true в fitcsvm при обучении SVMModelзатем программное обеспечение подгоняет оценки параметров функции преобразования с использованием стандартизированных данных.

Типы данных: table

Данные предиктора, используемые для оценки функции преобразования «оценка-задняя вероятность», заданной как матрица.

Каждая строка X соответствует одному наблюдению (также известному как экземпляр или пример), и каждый столбец соответствует одной переменной (также известной как элемент).

Длина Y и количество строк в X должно быть равным.

Если установить 'Standardize',true в fitcsvm при обучении SVMModelзатем программное обеспечение подгоняет оценки параметров функции преобразования с использованием стандартизированных данных.

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

Метки класса, используемые для оценки функции преобразования «оценка-задняя вероятность», заданной как категориальный, символьный или строковый массив, логический или числовой вектор или клеточный массив символьных векторов.

Если Y является символьным массивом, то каждый элемент должен соответствовать одной метке класса.

Длина Y и количество строк в X должно быть равным.

Типы данных: categorical | char | string | logical | single | double | cell

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

свернуть все

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

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

Оптимальные параметры функции преобразования «оценка-задняя вероятность», возвращаемые в виде структурного массива.

  • Если значение Type поле ScoreTransform является sigmoid, то ScoreTransform также имеет следующие поля:

  • Если значение Type поле ScoreTransform является step, то ScoreTransform также имеет следующие поля:

    • PositiveClassProbability: Значение δ в функции шага. Это значение представляет вероятность того, что наблюдение находится в положительном классе, или заднюю вероятность того, что наблюдение находится в положительном классе, учитывая, что его оценка находится в интервале (LowerBound,UpperBound).

    • LowerBound: Значение maxyn = 1sn в функции шага. Это значение представляет нижнюю границу интервала оценки, который назначает наблюдения с оценками в интервале апостериорной вероятности нахождения в положительном классеPositiveClassProbability. Любое наблюдение с результатом менее LowerBound имеет заднюю вероятность нахождения в положительном классе, равную 0.

    • UpperBound: Значение minyn = + 1sn в функции шага. Это значение представляет верхнюю границу интервала оценки, который назначает наблюдения с оценками в интервале апостериорной вероятности нахождения в положительном классеPositiveClassProbability. Любое наблюдение с баллом больше UpperBound имеет заднюю вероятность нахождения в положительном классе, равную 1.

  • Если значение Type поле ScoreTransform является constant, то ScoreTransform.PredictedClass содержит имя предсказания класса.

    Этот результат совпадает с SVMModel.ClassNames. Задняя вероятность наблюдения в ScoreTransform.PredictedClass всегда 1.

Подробнее

свернуть все

Сигмоидная функция

Сигмоидная функция, отображающая оценку sj, соответствующую наблюдению j, на положительную апостериорную вероятность класса

P (sj) = 11 + exp (Asj + B).

Если значение Type поле ScoreTransform является sigmoid, то параметры A и B соответствуют полям Scale и Intercept из ScoreTransformсоответственно.

Пошаговая функция

Ступенчатая функция, которая отображает оценку sj, соответствующую наблюдению j, в положительную апостериорную вероятность класса, является

P (sj) ={0;s<maxyk=−1skπ;maxyk=−1sk≤sj≤minyk=+1sk1;sj>minyk=+1sk,

где:

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

  • + 1 и -1 обозначают положительные и отрицательные классы соответственно.

  • δ - предшествующая вероятность того, что наблюдение находится в положительном классе.

Если значение Type поле ScoreTransform является step, то величины maxyk = 1sk и minyk = + 1sk соответствуют полямLowerBound и UpperBound из ScoreTransformсоответственно.

Постоянная функция

Постоянная функция сопоставляет все оценки в выборке с задними вероятностями 1 или 0.

Если все наблюдения имеют апостериорную вероятность 1, то они должны исходить из положительного класса.

Если все наблюдения имеют апостериорную вероятность 0, то они не должны исходить из положительного класса.

Совет

  • Этот процесс описывает один способ предсказать положительные апостериорные вероятности класса.

    1. Обучение классификатора SVM путем передачи данных в fitcsvm. Результатом является обученный классификатор SVM, такой как SVMModel, которая хранит данные. Программа устанавливает свойство функции преобразования баллов (SVMModel.ScoreTransformationКому none.

    2. Сдать обученный классификатор SVM SVMModel кому fitSVMPosterior или fitPosterior. Результат, например, ScoreSVMModel, является тем же обученным классификатором SVM, что и SVMModel, за исключением наборов программного обеспечения ScoreSVMModel.ScoreTransformation к оптимальной функции преобразования баллов.

    3. Передайте матрицу данных предиктора и обученный классификатор SVM, содержащий функцию оптимального преобразования баллов (ScoreSVMModelКому predict. Второй столбец во втором выходном аргументе predict сохраняет положительные апостериорные вероятности класса, соответствующие каждой строке матрицы данных предиктора.

      Если пропустить шаг 2, то predict возвращает положительный балл класса, а не положительную апостериорную вероятность класса.

  • После подгонки задних вероятностей можно создать код C/C + +, который предсказывает метки для новых данных. Для создания кода C/C + + требуется Coder™ MATLAB ®. Дополнительные сведения см. в разделе Введение в создание кода.

Алгоритмы

Программное обеспечение подходит для соответствующей функции преобразования «оценка-задняя вероятность» с использованием классификатора SVM SVMModel и путем проведения 10-кратной перекрестной проверки с использованием сохраненных данных предиктора (SVMModel.Xи метки класса (SVMModel.Y), как указано в [1]. Функция преобразования вычисляет апостериорную вероятность того, что наблюдение классифицируется в положительный класс (SVMModel.Classnames(2)).

  • Если классы неразделимы, то функция преобразования является сигмоидной функцией.

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

  • В двухклассном обучении, если один из двух классов имеет относительную частоту 0, то функция преобразования является постоянной функцией. fitPosterior функция не подходит для одноклассного обучения.

  • Программное обеспечение хранит оптимальную функцию преобразования «оценка-задняя вероятность» в ScoreSVMModel.ScoreTransform.

Если повторно оценить функцию преобразования оценки в апостериорную вероятность, то есть если передать классификатор SVM fitPosterior или fitSVMPosterior и его ScoreTransform свойство не является none, затем программное обеспечение:

  • Отображает предупреждение

  • Сбрасывает исходную функцию преобразования в 'none' перед оценкой нового

Альтернативная функциональность

Вы также можете подогнать оптимальную функцию оценки к апостериорной вероятности, используя fitSVMPosterior. Эта функция аналогична fitPosterior, за исключением того, что он является более широким, поскольку допускает более широкий диапазон типов классификаторов SVM.

Ссылки

[1] Плэтт, J. «Вероятностные результаты для вспомогательных векторных машин и сравнения с регуляризованными методами правдоподобия». Достижения в классификаторах больших марж. Кембридж, Массачусетс: MIT Press, 2000, стр. 61-74.

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