crossval

Оценка потерь с помощью перекрестной проверки

Синтаксис

vals = crossval(fun,X)
vals = crossval(fun,X,Y,...)
mse = crossval('mse',X,y,'Predfun',predfun)
mcr = crossval('mcr',X,y,'Predfun',predfun)
val = crossval(criterion,X1,X2,...,y,'Predfun',predfun)
vals = crossval(...,'name',value)

Описание

vals = crossval(fun,X) выполняет 10-кратную перекрестную проверку для функционального fun, примененный данные в X.

fun указатель на функцию к функции с двумя входными параметрами, учебным подмножеством X, XTRAIN, и тестовое подмножество X, XTEST, можно следующим образом:

testval = fun(XTRAIN,XTEST)

Каждый раз это называется, fun должен использовать XTRAIN чтобы подобрать модель, затем возвратите некоторый критерий testval вычисленный на XTEST использование той подобранной модели.

X может быть вектор-столбец или матрица. Строки X соответствуйте наблюдениям; столбцы соответствуют переменным или функциям. Каждая строка vals содержит результат применения fun к одному набору тестов. Если testval нескалярное значение, crossval преобразует его в вектор-строку, использующий линейную индексацию и сохраненный в одной строке vals.

vals = crossval(fun,X,Y,...) используется, когда данные хранятся в отдельных переменных XY.... Все переменные (вектор-столбцы, матрицы или массивы) должны иметь одинаковое число строк. fun вызван учебными подмножествами XY..., сопровождаемый тестовыми подмножествами XY..., можно следующим образом:

testvals = fun(XTRAIN,YTRAIN,...,XTEST,YTEST,...)

mse = crossval('mse',X,y,'Predfun',predfun) возвращает mse, скаляр, содержащий 10-кратную оценку перекрестной проверки среднеквадратической ошибки для функционального predfunX может быть вектор-столбец, матрица или массив предикторов. y вектор-столбец значений ответа. X и y должен иметь одинаковое число строк.

predfun указатель на функцию, вызванный учебным подмножеством X, учебное подмножество y, и тестовое подмножество X можно следующим образом:

yfit = predfun(XTRAIN,ytrain,XTEST)

Каждый раз это называется, predfun должен использовать XTRAIN и ytrain подбирать модель регрессии и затем возвращать адаптированные значения в вектор-столбце yfit. Каждая строка yfit содержит ожидаемые значения для соответствующей строки XTEST. crossval вычисляет квадратичные невязки между yfit и соответствующий набор тестов ответа, и возвращает полное среднее значение через все наборы тестов.

mcr = crossval('mcr',X,y,'Predfun',predfun) возвращает mcr, скаляр, содержащий 10-кратную оценку перекрестной проверки misclassification уровня (пропорция неправильно классифицированных выборок) для функционального predfun. Матричный X содержит значения предиктора и векторный y содержит метки класса. predfun должен использовать XTRAIN и YTRAIN подбирать модель классификации и возвратить yfit когда предсказанный класс помечает для XTEST. crossval вычисляет количество misclassifications между yfit и соответствующий набор тестов ответа, и возвращает полный misclassification уровень через все наборы тестов.

val = crossval(criterion,X1,X2,...,y,'Predfun',predfun), где criterion 'mse' или 'mcr', возвращает оценку перекрестной проверки среднеквадратической ошибки (для модели регрессии) или misclassification уровень (для модели классификации) со значениями предиктора в X1x2 ... и, соответственно, значения ответа или класс помечают в yx1 x2 ... и y должен иметь одинаковое число строк. predfun указатель на функцию, вызванный учебными подмножествами X1x2 ..., учебное подмножество y, и тестовые подмножества X1x2 ..., можно следующим образом:

yfit=predfun(X1TRAIN,X2TRAIN,...,ytrain,X1TEST,X2TEST,...)

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

vals = crossval(...,'name',value) задает один или несколько дополнительное название параметра / пары значения из следующей таблицы. Задайте name в одинарных кавычках.

ИмяЗначение
holdout

Скаляр, задающий отношение или количество наблюдений p для перекрестной проверки затяжки. Когда 0 <p< 1 , приблизительно p*n наблюдения для набора тестов случайным образом выбраны. Когда p целое число, p наблюдения для набора тестов случайным образом выбраны.

kfold

Положительное целое число, которое больше 1 определения количества сгибов k для k- сверните перекрестную проверку.

leaveout

Указывает, что перекрестная проверка "пропускает один". Значением должен быть 1.

mcreps

Положительное целое число, задающее количество повторений Монте-Карло для валидации. Если первый вход crossval 'mse' или 'mcr', crossval возвращает среднее значение среднеквадратической ошибки или misclassification уровня через все повторения Монте-Карло. В противном случае, crossval конкатенирует значения vals от всех повторений Монте-Карло по первому измерению.

partition

Объект c из cvpartition класс, задавая тип перекрестной проверки и раздел.

stratify

Вектор-столбец group определение групп для стратификации. И наборы обучающих данных и наборы тестов имеют примерно те же пропорции класса как в groupNaNs, пустые символьные вектора, пустые строки, <missing> значения и <undefined> значения в group обработаны как пропускающий значения данных, и соответствующие строки данных проигнорированы.

options

Структура, которая задает, запуститься ли параллельно, и задает случайный поток или потоки. Создайте options структура с statset. Поля опции:

  • UseParallel — Установите на true вычислить параллельно. Значением по умолчанию является false.

    Вам нужен Parallel Computing Toolbox™ для параллельного расчета.

  • UseSubstreams — Установите на true вычислить параллельно восстанавливаемым способом. Значением по умолчанию является false. Чтобы вычислить восстанавливаемо, установите Streams к типу, позволяющему подпотоки: 'mlfg6331_64' или 'mrg32k3a'.

  • StreamsRandStream объектный массив или массив ячеек, состоящий из одного такого объекта. Если вы не задаете Streams, crossval использует поток по умолчанию.

Только один из kfold, holdout, leaveout, или partition может быть задан, и partition не может быть задан с stratify. Если оба partition и mcreps заданы, первое повторение Монте-Карло использует информацию о разделе в cvpartition объект и repartition метод называется, чтобы сгенерировать новые разделы для каждого из остающихся повторений. Если никакой тип перекрестной проверки не задан, значением по умолчанию является 10-кратная перекрестная проверка.

Примечание

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

Примеры

Пример 1

Вычислите среднеквадратическую ошибку для регрессии с помощью 10-кратной перекрестной проверки:

load('fisheriris');
y = meas(:,1);
X = [ones(size(y,1),1),meas(:,2:4)];

regf=@(XTRAIN,ytrain,XTEST)(XTEST*regress(ytrain,XTRAIN));

cvMse = crossval('mse',X,y,'predfun',regf)
cvMse =
    0.1015

Пример 2

Вычислите misclassification уровень с помощью, расслоил 10-кратную перекрестную проверку:

load('fisheriris');
y = species;
X = meas;
cp = cvpartition(y,'k',10); % Stratified cross-validation

classf = @(XTRAIN, ytrain,XTEST)(classify(XTEST,XTRAIN,...
ytrain));

cvMCR = crossval('mcr',X,y,'predfun',classf,'partition',cp)
cvMCR =
    0.0200

Пример 3

Вычислите матрицу беспорядка использование стратифицированной 10-кратной перекрестной проверки:

load('fisheriris');
y = species;
X = meas;
order = unique(y); % Order of the group labels
cp = cvpartition(y,'k',10); % Stratified cross-validation

f = @(xtr,ytr,xte,yte)confusionmat(yte,...
classify(xte,xtr,ytr),'order',order);

cfMat = crossval(f,X,y,'partition',cp);
cfMat = reshape(sum(cfMat),3,3)
cfMat =
    50     0     0
     0    48     2
     0     1    49

cfMat суммирование 10 матриц беспорядка от 10 наборов тестов.

Ссылки

[1] Hastie, T., Р. Тибширэни и Дж. Фридман. Элементы статистического изучения. Нью-Йорк: Спрингер, 2001.

Расширенные возможности

Введенный в R2008a