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-fold.

пример

[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)

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

Загрузите 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'. The 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' и a cvpartition Объект раздела, созданный cvpartition. Можно использовать только одну из этих четырех опций за раз для создания перекрестно проверенной модели: 'KFold', 'Holdout', 'Leaveout', или 'CVPartition'.

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

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

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

Можно использовать только одну из этих четырех опций за раз для создания перекрестно проверенной модели: '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 классификатор.

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

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

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

Ссылки

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

Введенный в R2014a