fitPosterior

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

Синтаксис

ScoreSVMModel = fitPosterior(SVMModel,TBL,Y)
ScoreSVMModel = fitPosterior(SVMModel,X,Y)
[ScoreSVMModel,ScoreTransform] = fitPosterior(___)

Описание

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

пример

ScoreSVMModel = fitPosterior(SVMModel,X,Y) возвращает обученный классификатор SVM ScoreSVMModel, содержащий оптимальный счет к функции преобразования апостериорной вероятности для изучения 2D класса. Если вы обучаете 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.098922e+00,4.519963e-01)'
ScoreParameters
ScoreParameters = struct with fields:
         Type: 'sigmoid'
        Slope: -1.0989
    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.78437     
       'b'            'b'                 0.024588     
       'g'            'g'                  0.82399     
       'b'            'b'                0.0061637     
       'b'            'b'               3.6118e-06     
       'b'            'b'                  0.15688     
       'b'            'g'                   0.9622     
       'b'            'b'               6.1348e-09     
       'b'            'b'                0.0019646     
       'g'            'g'                   0.7251     
       'g'            'g'                  0.70263     
       'b'            'b'                 0.075298     
       'g'            'g'                  0.90691     
       'g'            'g'                  0.82849     
       'b'            'b'                 0.051193     
       'g'            'g'                  0.95331     
      ⋮

Загрузите ирисовый набор данных Фишера. Используйте лепестковые длины и ширины как данные о предикторе, и удалите 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')

Классы совершенно отделимы. Поэтому счет к функции преобразования апостериорной вероятности является ступенчатой функцией.

Обучите классификатор 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: значение max yn=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<max yk=1skπ;max yk=1sksjminyk=+1sk1;sj>minyk=+1sk,

где:

  • sj является счетом наблюдения j.

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

  • π является априорной вероятностью, что наблюдение находится в положительном классе.

Если значением поля Type ScoreTransform является step, то количества max yk=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)).

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

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

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

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

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

  • Выводит предупреждение

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

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

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

Ссылки

[1] Платт, J. “Вероятностные выходные параметры для машин вектора поддержки и сравнений с упорядоченными методами вероятности”. Усовершенствования в Больших Граничных Классификаторах. Кембридж, MA: Нажатие MIT, 2000, стр 61–74.

Смотрите также

| | |

Введенный в R2014a