Оценка потерь с помощью перекрестной проверки
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,...) используется, когда данные хранятся в отдельных переменных X, Y.... Все переменные (вектор-столбцы, матрицы или массивы) должны иметь одинаковое число строк. fun вызывается учебными подмножествами X, Y..., сопровождается тестовыми подмножествами X, Y..., можно следующим образом:
testvals = fun(XTRAIN,YTRAIN,...,XTEST,YTEST,...)
mse = crossval('mse',X,y,'Predfun',predfun) возвращает mse, скаляр, содержащий 10-кратную оценку перекрестной проверки среднеквадратической ошибки для функционального predfun. X может быть вектор-столбцом, матрицей или массивом предикторов. 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 уровень (для модели классификации) со значениями предиктора в X1, X2... и, соответственно, значениями ответа или метками класса в y. X1, X2... и y должны иметь одинаковое число строк. predfun является указателем на функцию, вызванным учебными подмножествами X1, X2..., учебного подмножества y и тестовых подмножеств X1, X2..., можно следующим образом:
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.