Оценка потерь с помощью перекрестной проверки
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 49
cfMat
суммирование 10 матриц беспорядка от 10 наборов тестов.
[1] Hastie, T., Р. Тибширэни и Дж. Фридман. Элементы статистического изучения. Нью-Йорк: Спрингер, 2001.