Оценка потерь с помощью перекрестной проверки
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 | Скаляр, задающий отношение или количество наблюдений |
kfold | Положительное целое число, которое больше 1 определения количества сгибов |
leaveout | Указывает, что перекрестная проверка "пропускает один". Значением должен быть |
mcreps | Положительное целое число, задающее количество повторений Монте-Карло для валидации. Если первый вход |
partition | Объект |
stratify | Вектор-столбец |
options | Структура, которая задает, запуститься ли параллельно, и задает случайный поток или потоки. Создайте
|
Только один из kfold, holdout, leaveout, или partition может быть задан, и partition не может быть задан с stratify. Если оба partition и mcreps заданы, первое повторение Монте-Карло использует информацию о разделе в cvpartition объект и repartition метод называется, чтобы сгенерировать новые разделы для каждого из остающихся повторений. Если никакой тип перекрестной проверки не задан, значением по умолчанию является 10-кратная перекрестная проверка.
При использовании перекрестной проверки с алгоритмами классификации предпочтена стратификация. В противном случае некоторые наборы тестов не могут включать наблюдения от всех классов.
Вычислите среднеквадратическую ошибку для регрессии с помощью 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Вычислите 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Вычислите матрицу беспорядка использование стратифицированной 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 49cfMat суммирование 10 матриц беспорядка от 10 наборов тестов.
[1] Hastie, T., Р. Тибширэни и Дж. Фридман. Элементы статистического изучения. Нью-Йорк: Спрингер, 2001.