resubPredict

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

Описание

пример

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 isempty).

Больше о

свернуть все

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

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