exponenta event banner

fitSVMPosterior

Подгонка задних вероятностей

Описание

пример

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

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

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

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

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

  • Если SVMModel является ClassificationSVM классификатор, затем программное обеспечение оценивает оптимальную функцию преобразования по 10-кратной перекрестной проверке, как описано в [1]. В противном случае SVMModel должно быть ClassificationPartitionedModel классификатор. SVMModel задает метод перекрестной проверки.

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

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

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

пример

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

пример

ScoreSVMModel = fitSVMPosterior(___,Name,Value) использует дополнительные параметры, указанные одним или несколькими Name,Value предоставлены аргументы пары SVMModel является ClassificationSVM классификатор. Например, можно указать количество складок, которые будут использоваться при перекрестной проверке k-образных складок.

пример

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

Примеры

свернуть все

Загрузите набор данных радужки Фишера. Обучите классификатор, используя длины и ширину лепестков, и удалите виды virginica из данных.

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

gscatter(X(:,1),X(:,2),y);
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 с использованием данных. Перекрестная проверка классификатора с использованием 10-кратной перекрестной проверки (по умолчанию).

rng(1);
CVSVMModel = fitcsvm(X,y,'CrossVal','on');

CVSVMModel является обученным ClassificationPartitionedModel Классификатор SVM.

Оцените функцию шага, которая преобразует баллы в апостериорные вероятности.

[ScoreCVSVMModel,ScoreParameters] = fitSVMPosterior(CVSVMModel);
Warning: Classes are perfectly separated. The optimal score-to-posterior transformation is a step function.

fitSVMPosterior выполняет следующее:

  • Использует данные, сохраненные программным обеспечением в CVSVMModel для соответствия функции преобразования

  • Предупреждает, когда классы являются разделяемыми

  • Сохраняет пошаговую функцию в ScoreCSVMModel.ScoreTransform

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

ScoreParameters
ScoreParameters = struct with fields:
                        Type: 'step'
                  LowerBound: -0.8431
                  UpperBound: 0.6897
    PositiveClassProbability: 0.5000

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

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

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

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

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

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

Загрузить ionosphere набор данных.

load ionosphere

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

Обучение классификатора SVM. Перекрестная проверка с использованием 10-кратной перекрестной проверки (по умолчанию). Рекомендуется стандартизировать предикторы и указать порядок классов.

rng(1) % For reproducibility
CVSVMModel = fitcsvm(X,Y,'ClassNames',{'b','g'},'Standardize',true,...
    'CrossVal','on');
ScoreTransform = CVSVMModel.ScoreTransform
ScoreTransform = 
'none'

CVSVMModel является обученным ClassificationPartitionedModel Классификатор SVM. Положительный класс: 'g'. ScoreTransform свойство - none.

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

[ScoreCVSVMModel,ScoreParameters] = fitSVMPosterior(CVSVMModel);
ScoreTransform = ScoreCVSVMModel.ScoreTransform
ScoreTransform = 
'@(S)sigmoid(S,-9.481799e-01,-1.218494e-01)'
ScoreParameters
ScoreParameters = struct with fields:
         Type: 'sigmoid'
        Slope: -0.9482
    Intercept: -0.1218

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

Вы можете оценить тест-выборку, задние вероятности, проходя ScoreCVSVMModel кому kfoldPredict.

Оценить положительные апостериорные вероятности классов для тестового набора алгоритма SVM.

Загрузить ionosphere набор данных.

load ionosphere

Обучение классификатора SVM. Укажите образец удержания 20%. Рекомендуется стандартизировать предикторы и указать порядок классов.

rng(1) % For reproducibility
CVSVMModel = fitcsvm(X,Y,'Holdout',0.2,'Standardize',true,...
    'ClassNames',{'b','g'});

CVSVMModel является обученным ClassificationPartitionedModel перекрестно проверенный классификатор.

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

ScoreCVSVMModel = fitSVMPosterior(CVSVMModel);

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

Оцените положительные апостериорные вероятности класса вне выборки. Отображение результатов первых 10 наблюдений вне выборки.

[~,OOSPostProbs] = kfoldPredict(ScoreCVSVMModel);
indx = ~isnan(OOSPostProbs(:,2));
hoObs = find(indx); % Holdout observation numbers
OOSPostProbs = [hoObs, OOSPostProbs(indx,2)];
table(OOSPostProbs(1:10,1),OOSPostProbs(1:10,2),...
    'VariableNames',{'ObservationIndex','PosteriorProbability'})
ans=10×2 table
    ObservationIndex    PosteriorProbability
    ________________    ____________________

            6                   0.17379     
            7                   0.89638     
            8                 0.0076606     
            9                   0.91603     
           16                  0.026714     
           22                4.6086e-06     
           23                    0.9024     
           24                2.4131e-06     
           38                0.00042687     
           41                   0.86427     

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

свернуть все

Обученный классификатор SVM, указанный как ClassificationSVM, CompactClassificationSVM, или ClassificationPartitionedModel классификатор.

Если SVMModel является ClassificationSVM классификатор, то можно задать необязательные аргументы пары имя-значение.

Если SVMModel является CompactClassificationSVM классификатор, затем необходимо ввести данные предиктора X и метки классов Y.

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

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

Если вы тренировались SVMModel используя образцы данных, содержащиеся в таблице, затем входные данные для fitSVMPosterior также должен находиться в таблице.

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

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

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

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

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

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

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

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

При указании ResponseVarName, то это необходимо сделать как вектор символа или скаляр строки. Например, если переменная ответа сохранена как TBL.Response, затем укажите ResponseVarName как 'Response'. В противном случае программа обрабатывает все столбцы TBL, в том числе TBL.Response, как предикторы.

Переменная ответа должна быть категориальным, символьным или строковым массивом, логическим или числовым вектором или массивом ячеек символьных векторов. Если ответная переменная является символьным массивом, то каждый элемент должен соответствовать одной строке массива.

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

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

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

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

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

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

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

Пример: 'KFold',8 выполняет 8-кратную перекрестную проверку, когда SVMModel является ClassificationSVM классификатор.

Раздел перекрестной проверки, используемый для вычисления функции преобразования, указанной как разделенная запятыми пара, состоящая из 'CVPartition' и cvpartition объект секционирования, созданный cvpartition. Для создания перекрестно проверенной модели одновременно можно использовать только одну из этих четырех опций: 'KFold', 'Holdout', 'Leaveout', или 'CVPartition'.

crossval аргумент пары имя-значение fitcsvm разбивает данные на подмножества с помощью cvpartition.

Пример: Предположим, что вы создаете случайный раздел для пятикратной перекрестной проверки 500 наблюдений с помощью cvp = cvpartition(500,'KFold',5). Затем можно указать модель с перекрестной проверкой с помощью 'CVPartition',cvp.

Доля данных для проверки удержания, используемых для вычисления функции преобразования, указанной как пара, разделенная запятыми, состоящая из 'Holdout' и скалярное значение в диапазоне (0,1). Проверка отсутствия проверяет указанную часть данных и использует оставшиеся данные для обучения.

Для создания перекрестно проверенной модели одновременно можно использовать только одну из этих четырех опций: 'KFold', 'Holdout', 'Leaveout', или 'CVPartition'.

Пример: 'Holdout',0.1

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

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

Для создания перекрестно проверенной модели одновременно можно использовать только одну из этих четырех опций: 'KFold', 'Holdout', 'Leaveout', или 'CVPartition'.

Пример: 'KFold',8

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

Флаг перекрестной проверки «оставить один», указывающий, следует ли использовать перекрестную проверку «оставить один» для вычисления функции преобразования, указанной как пара, разделенная запятыми, состоящая из 'Leaveout' и 'on' или 'off'. Использование перекрестной проверки «оставить один» путем указания 'Leaveout','on'.

Для создания перекрестно проверенной модели одновременно можно использовать только одну из этих четырех опций: 'KFold', 'Holdout', 'Leaveout', или 'CVPartition'.

Пример: 'Leaveout','on'

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

свернуть все

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

ScoreSVMModel тип классификатора совпадает с типом классификатора SVMModel тип классификатора.

Для оценки задних вероятностей пройти ScoreSVMModel и данные предиктора для predict. Если установить 'Standardize',true в fitcsvm обучаться SVMModel, то predict стандартизирует столбцы X используя соответствующие средства в SVMModel.Mu и стандартные отклонения в SVMModel.Sigma.

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

  • sigmoid, то ScoreTransform имеет следующие поля:

  • step, то ScoreTransform имеет следующие поля:

    • PositiveClassProbability: значение δ в ступенчатой функции. δ представляет собой:

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

      • Задняя вероятность того, что оценка находится в интервале (LowerBound,UpperBound).

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

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

  • 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 fitPosterior или fitSVMPosterior и его ScoreTransform свойство не является none, затем программное обеспечение:

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

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

Ссылки

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

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