resubPredict

Классифицируйте наблюдения на классификатор машины вектора поддержки (SVM)

Синтаксис

label = resubPredict(SVMModel)
[label,Score] = resubPredict(SVMModel)

Описание

пример

label = resubPredict(SVMModel) возвращается вектор предсказанного класса маркирует (label) для обученного классификатора машины вектора поддержки (SVM) SVMModel с помощью данных о предикторе SVMModel.X.

пример

[label,Score] = resubPredict(SVMModel) дополнительно возвращает меры по вероятности класса, или очки или апостериорные вероятности.

Примеры

свернуть все

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

load ionosphere

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

SVMModel = fitcsvm(X,Y,'ClassNames',{'b','g'},'Standardize',true);

SVMModel является классификатором ClassificationSVM.

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

[label,score] = resubPredict(SVMModel);
table(Y(1:10),label(1:10),score(1:10,2),'VariableNames',...
    {'TrueLabel','PredictedLabel','Score'})
ans=10×3 table
    TrueLabel    PredictedLabel     Score 
    _________    ______________    _______

       'g'            'g'           1.4861
       'b'            'b'          -1.0004
       'g'            'g'           1.8685
       'b'            'b'          -2.6458
       'g'            'g'           1.2805
       'b'            'b'          -1.4617
       'g'            'g'           2.1672
       'b'            'b'          -5.7085
       'g'            'g'           2.4797
       'b'            'b'          -2.7811

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

load ionosphere

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

SVMModel = fitcsvm(X,Y,'ClassNames',{'b','g'},'Standardize',true);

SVMModel является классификатором ClassificationSVM.

Соответствуйте оптимальному счету к функции преобразования апостериорной вероятности.

rng(1); % For reproducibility
ScoreSVMModel = fitPosterior(SVMModel)
ScoreSVMModel = 
  ClassificationSVM
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: {'b'  'g'}
           ScoreTransform: '@(S)sigmoid(S,-9.481802e-01,-1.218745e-01)'
          NumObservations: 351
                    Alpha: [90x1 double]
                     Bias: -0.1343
         KernelParameters: [1x1 struct]
                       Mu: [1x34 double]
                    Sigma: [1x34 double]
           BoxConstraints: [351x1 double]
          ConvergenceInfo: [1x1 struct]
          IsSupportVector: [351x1 logical]
                   Solver: 'SMO'


  Properties, Methods

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

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

[label,scores] = resubPredict(SVMModel);
[~,postProbs] = resubPredict(ScoreSVMModel);
table(Y(1:10),label(1:10),scores(1:10,2),postProbs(1:10,2),'VariableNames',...
    {'TrueLabel','PredictedLabel','Score','PosteriorProbability'})
ans=10×4 table
    TrueLabel    PredictedLabel     Score     PosteriorProbability
    _________    ______________    _______    ____________________

       'g'            'g'           1.4861           0.82215      
       'b'            'b'          -1.0004           0.30436      
       'g'            'g'           1.8685           0.86916      
       'b'            'b'          -2.6458          0.084183      
       'g'            'g'           1.2805           0.79184      
       'b'            'b'          -1.4617           0.22028      
       'g'            'g'           2.1672           0.89814      
       'b'            'b'          -5.7085         0.0050122      
       'g'            'g'           2.4797           0.92223      
       'b'            'b'          -2.7811          0.074805      

Входные параметры

свернуть все

Полный, обученный классификатор SVM, заданный как модель ClassificationSVM, обученная с fitcsvm.

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

свернуть все

Предсказанные метки класса, возвращенные как категориальное или символьный массив, логический или числовой вектор или массив ячеек из символьных векторов.

Предсказанные метки класса имеют следующее:

  • Совпадающий тип данных как наблюдаемый класс маркирует (SVMModel.Y)

  • Длина, равная количеству строк в SVMModel.X

Для изучения одного класса label содержит один класс, представленный в SVMModel.Y.

Предсказанные очки класса или апостериорные вероятности, возвращенные как числовой вектор-столбец или числовая матрица.

  • Для изучения одного класса Score является вектор-столбцом с одинаковым числом строк как SVMModel.X. Элементы являются положительной музыкой класса к соответствующим наблюдениям. Вы не можете получить апостериорные вероятности для изучения одного класса.

  • Для изучения 2D класса Score является матрицей 2D столбца с одинаковым числом строк как SVMModel.X.

    • Если вы соответствуете оптимальному счету к функции преобразования апостериорной вероятности использование fitPosterior или fitSVMPosterior, то Score содержит апостериорные вероятности класса. Таким образом, если значением SVMModel.ScoreTransform не является none, то первые и вторые столбцы Score содержат отрицательный класс (SVMModel.ClassNames{1}) и положительный класс (SVMModel.ClassNames{2}) апостериорные вероятности для соответствующих наблюдений, соответственно.

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

Если SVMModel, .KernelParameters.Function является 'linear', то счет классификации к наблюдению x

f(x)=(x/s)β+b.

SVMModel хранит β, b и s в свойствах Beta, Bias и KernelParameters.Scale, соответственно.

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

Все функции SVM, такие как resubPredict и predict, применяют любое необходимое преобразование перед оценкой.

Если SVMModel, .KernelParameters.Function не является 'linear', то Beta пуст ([]).

Больше о

свернуть все

Счет классификации

classification score SVM для классификации наблюдения x является расстоянием со знаком от x до контура решения в пределах от - ∞ к + ∞. Положительный счет к классу указывает, что x предсказан, чтобы быть в том классе. Отрицательный счет указывает в противном случае.

Положительный счет классификации классов f(x) обученная функция классификации SVM. f(x) также числовой, предсказанный ответ для x или счет к предсказанию x в положительный класс.

f(x)=j=1nαjyjG(xj,x)+b,

где (α1,...,αn,b) предполагаемые параметры SVM, G(xj,x) скалярное произведение на пробеле предиктора между x и векторами поддержки, и сумма включает наблюдения набора обучающих данных. Отрицательный счет классификации классов к x или счет к предсказанию x в отрицательный класс, является –f (x).

Если G (xj, x) = xjx (линейное ядро), то функция счета уменьшает до

f(x)=(x/s)β+b.

s является шкалой ядра, и β является вектором подходящих линейных коэффициентов.

Для получения дополнительной информации смотрите Машины Вектора Поддержки Понимания.

Апостериорная вероятность

posterior probability является вероятностью, что наблюдение принадлежит конкретного класса, учитывая данные.

Для SVM апостериорная вероятность является функцией счета P (s), что наблюдение j находится в классе k = {-1,1}.

  • Для отделимых классов апостериорная вероятность является ступенчатой функцией

    P(sj)={0;s<max yk=1skπ;max yk=1sksjminyk=+1sk1;sj>minyk=+1sk,

    где:

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

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

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

  • Для неотделимых классов апостериорная вероятность является сигмоидальной функцией

    P(sj)=11+exp(Asj+B),

    где параметры A и B являются наклоном и прерывают параметры, соответственно.

Априорная вероятность

prior probability класса является относительной частотой, которой верят, с которой наблюдения от того класса происходят в генеральной совокупности.

Советы

  • Если вы используете линейную модель SVM для классификации, и модель имеет много векторов поддержки, то использование resubPredict для метода прогноза может быть медленным. Чтобы эффективно классифицировать наблюдения на основе линейной модели SVM, удалите векторы поддержки из объекта модели при помощи discardSupportVectors.

Алгоритмы

  • По умолчанию и независимо от образцовой функции ядра, MATLAB® использует двойное представление функции счета, чтобы классифицировать наблюдения на основе обученных моделей SVM в частности

    f^(x)=j=1nα^jyjG(x,xj)+b^.

    Этот метод прогноза требует обученных векторов поддержки и коэффициентов α (см. свойства SupportVectors и Alpha модели SVM).

  • По умолчанию программное обеспечение вычисляет оптимальные апостериорные вероятности с помощью метода Платта [1]:

    1. Выполните 10-кратную перекрестную проверку.

    2. Соответствуйте сигмоидальным параметрам функции к очкам, возвращенным в перекрестную проверку.

    3. Оцените апостериорные вероятности путем ввода очков перекрестной проверки в подходящую сигмоидальную функцию.

  • Программное обеспечение включает априорные вероятности в целевую функцию SVM во время обучения.

  • Для SVM predict и resubPredict классифицируют наблюдения в класс, приводящий к самому большому счету (самая большая апостериорная вероятность). Программное обеспечение составляет misclassification затраты путем применения исправления средней стоимости перед обучением классификатор. Таким образом, учитывая класс предшествующий векторный P, misclassification матрица стоимости C и вектор веса наблюдения w, программное обеспечение задает новый вектор весов наблюдения (W), таким образом что

    Wj=wjPjk=1KCjk.

Ссылки

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

Введенный в R2014a

Для просмотра документации необходимо авторизоваться на сайте