fitSVMPosterior

Подходящие апостериорные вероятности

Синтаксис

ScoreSVMModel = fitSVMPosterior(SVMModel)
ScoreSVMModel = fitSVMPosterior(SVMModel,TBL,ResponseVarName)
ScoreSVMModel = fitSVMPosterior(SVMModel,TBL,Y)
ScoreSVMModel = fitSVMPosterior(SVMModel,X,Y)
ScoreSVMModel = fitSVMPosterior(___,Name,Value)
[ScoreSVMModel,ScoreTransform] = fitSVMPosterior(___)

Описание

пример

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

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

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

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

  • В изучении 2D класса, если один из этих двух классов имеет относительную частоту 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')

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

Обучите классификатор 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.

Загрузите набор данных 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.481576e-01,-1.218300e-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.17378     
            7                   0.89637     
            8                 0.0076609     
            9                   0.91602     
           16                  0.026718     
           22                4.6081e-06     
           23                    0.9024     
           24                2.4129e-06     
           38                0.00042697     
           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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

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

Пример: Предположим, что вы создаете случайный раздел для 5-кратной перекрестной проверки на 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: значение max yn=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<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 fitPosterior или fitSVMPosterior, и его свойством ScoreTransform не является none, то программное обеспечение:

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

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

Ссылки

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

Введенный в R2014a