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но этот процесс не так эффективен.

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

[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          

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

  • 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=1sksjminyk=+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 + + требуется MATLAB® Coder™. Для получения дополнительной информации смотрите Введение в генерацию кода.

Алгоритмы

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

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

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

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

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

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

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

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

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

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

Ссылки

[1] Platt, J «. Вероятностные выходы для машин опорных векторов и сравнения с регуляризованными методами правдоподобия». Усовершенствования в классификаторах больших марж. Cambridge, MA: The MIT Press, 2000, pp. 61-74.

Введенный в R2014a