crossval

Перекрестный подтвердите классификатор машины вектора поддержки (SVM)

Синтаксис

CVSVMModel = crossval(SVMModel)
CVSVMModel = crossval(SVMModel,Name,Value)

Описание

пример

CVSVMModel = crossval(SVMModel) возвращает перекрестный подтвержденный (разделенный) классификатор машины вектора поддержки (SVM) (CVSVMModel) в обученный классификатор SVM (SVMModel). По умолчанию crossval использует 10-кратную перекрестную проверку на данных тренировки, чтобы создать CVSVMModel, классификатор ClassificationPartitionedModel.

пример

CVSVMModel = crossval(SVMModel,Name,Value) возвращает разделенный классификатор SVM с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение". Например, можно задать количество сгибов или демонстрационной пропорции затяжки.

Примеры

свернуть все

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

load ionosphere
rng(1); % For reproducibility

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

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

SVMModel является обученным классификатором ClassificationSVM. 'b' является отрицательным классом, и 'g' является положительным классом.

Перекрестный подтвердите классификатор с помощью 10-кратной перекрестной проверки.

CVSVMModel = crossval(SVMModel)
CVSVMModel = 
  classreg.learning.partition.ClassificationPartitionedModel
    CrossValidatedModel: 'SVM'
         PredictorNames: {1x34 cell}
           ResponseName: 'Y'
        NumObservations: 351
                  KFold: 10
              Partition: [1x1 cvpartition]
             ClassNames: {'b'  'g'}
         ScoreTransform: 'none'


  Properties, Methods

FirstModel = CVSVMModel.Trained{1}
FirstModel = 
  classreg.learning.classif.CompactClassificationSVM
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: {'b'  'g'}
           ScoreTransform: 'none'
                    Alpha: [78x1 double]
                     Bias: -0.2209
         KernelParameters: [1x1 struct]
                       Mu: [1x34 double]
                    Sigma: [1x34 double]
           SupportVectors: [78x34 double]
      SupportVectorLabels: [78x1 double]


  Properties, Methods

CVSVMModel является ClassificationPartitionedModel перекрестный подтвержденный классификатор. Во время перекрестной проверки программное обеспечение завершает эти шаги:

  1. Случайным образом разделите данные в 10 наборов равного размера.

  2. Обучите классификатор SVM на девяти из наборов.

  3. Повторите шаги 1 и 2 k = 10 раз. Программное обеспечение не учитывает один раздел каждый раз и обучается на других девяти разделах.

  4. Объедините статистику обобщения для каждого сгиба.

FirstModel является первым из 10 обученных классификаторов. Это - классификатор CompactClassificationSVM.

Можно оценить ошибку обобщения путем передачи CVSVMModel kfoldLoss.

Задайте демонстрационную пропорцию затяжки для перекрестной проверки. По умолчанию crossval использует 10-кратную перекрестную проверку, чтобы перекрестный подтвердить классификатор SVM. Однако у вас есть несколько других опций для перекрестной проверки. Например, можно задать различное количество сгибов или демонстрационной пропорции затяжки.

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

load ionosphere
rng(1); % For reproducibility

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

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

SVMModel является обученным классификатором ClassificationSVM.

Перекрестный подтвердите классификатор путем определения 15%-й выборки затяжки.

CVSVMModel = crossval(SVMModel,'Holdout',0.15)
CVSVMModel = 
  classreg.learning.partition.ClassificationPartitionedModel
    CrossValidatedModel: 'SVM'
         PredictorNames: {1x34 cell}
           ResponseName: 'Y'
        NumObservations: 351
                  KFold: 1
              Partition: [1x1 cvpartition]
             ClassNames: {'b'  'g'}
         ScoreTransform: 'none'


  Properties, Methods

CVSVMModel является ClassificationPartitionedModel.

Отобразите свойства классификатора, обученного с помощью 85% данных.

TrainedModel = CVSVMModel.Trained{1}
TrainedModel = 
  classreg.learning.classif.CompactClassificationSVM
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: {'b'  'g'}
           ScoreTransform: 'none'
                    Alpha: [74x1 double]
                     Bias: -0.2952
         KernelParameters: [1x1 struct]
                       Mu: [1x34 double]
                    Sigma: [1x34 double]
           SupportVectors: [74x34 double]
      SupportVectorLabels: [74x1 double]


  Properties, Methods

TrainedModel является классификатором CompactClassificationSVM, обученным с помощью 85% данных.

Оцените ошибку обобщения.

kfoldLoss(CVSVMModel)
ans = 0.0769

misclassification ошибка из выборки составляет приблизительно 8%.

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

свернуть все

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: crossval(SVMModel,'KFold',5) задает использование пяти сгибов в перекрестной подтвержденной модели.

Раздел перекрестной проверки, заданный как пара, разделенная запятой, состоящая из 'CVPartition' и объекта раздела cvpartition, создается cvpartition. Объект раздела задает тип перекрестной проверки и индексации для наборов обучения и валидации.

Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold или Leaveout.

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

Часть данных используется для валидации затяжки, заданной как пара, разделенная запятой, состоящая из 'Holdout' и скалярного значения в области значений (0,1). Если вы задаете 'Holdout',p, то программное обеспечение завершает эти шаги:

  1. Случайным образом выберите и зарезервируйте % p*100 данных как данные о валидации и обучите модель с помощью остальной части данных.

  2. Сохраните компактную, обученную модель в свойстве Trained перекрестной подтвержденной модели.

Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold или Leaveout.

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

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

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

  1. Случайным образом разделите данные в наборы k.

  2. Для каждого набора зарезервируйте набор как данные о валидации и обучите модель с помощью другого k – 1 набор.

  3. Сохраните k компактные, обученные модели в ячейках k-by-1 вектор ячейки в свойстве Trained перекрестной подтвержденной модели.

Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold или Leaveout.

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

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

Флаг перекрестной проверки "Пропускает один", заданный как пара, разделенная запятой, состоящая из 'Leaveout' и 'on' или 'off'. Если вы задаете 'Leaveout','on', то, для каждого из наблюдений n (где n является количеством наблюдений, исключая недостающие наблюдения, заданные в свойстве NumObservations модели), программное обеспечение завершает эти шаги:

  1. Зарезервируйте наблюдение как данные о валидации и обучите модель с помощью другого n – 1 наблюдение.

  2. Сохраните n компактные, обученные модели в ячейках n-by-1 вектор ячейки в свойстве Trained перекрестной подтвержденной модели.

Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold или Leaveout.

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

Советы

Оцените прогнозирующую производительность SVMModel на перекрестных подтвержденных данных при помощи “kfold” методов и свойств CVSVMModel, таких как kfoldLoss.

Альтернативная функциональность

Вместо обучения классификатор SVM и затем перекрестная проверка его, можно создать перекрестный подтвержденный классификатор непосредственно при помощи fitcsvm и задающий любой из этих аргументов пары "имя-значение": 'CrossVal', 'CVPartition', 'Holdout', 'Leaveout' или 'KFold'.

Введенный в R2014a