crossval

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

Описание

пример

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

Для получения дополнительной информации смотрите Общие Шаги Перекрестной проверки для predfun.

пример

err = crossval(criterion,X1,...,XN,y,'Predfun',predfun) возвращает 10-кратную ошибочную оценку перекрестной проверки для predfun при помощи переменных предикторов X1 через XN и переменная отклика y.

пример

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

Для получения дополнительной информации смотрите Общие Шаги Перекрестной проверки для fun.

пример

values = crossval(fun,X1,...,XN) выполняет 10-кратную перекрестную проверку для функционального fun, примененный данные в X1,...,XN. Каждый набор данных, X1 через XN, должен иметь то же количество наблюдений и, поэтому, одинаковое число строк.

пример

___ = crossval(___,Name,Value) задает опции перекрестной проверки с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к любой из комбинаций входных аргументов и выходных аргументов в предыдущих синтаксисах. Например, 'KFold',5 задает, чтобы выполнить 5-кратную перекрестную проверку.

Примеры

свернуть все

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

Загрузите carsmall набор данных. Поместите ускорение, лошадиную силу, вес и значения миль на галлон (MPG) в матричный data. Удалите любые строки, которые содержат NaN значения.

load carsmall
data = [Acceleration Horsepower Weight MPG];
data(any(isnan(data),2),:) = [];

Задайте последний столбец data, который соответствует MPG, как переменная отклика y. Задайте другие столбцы data как данные о предикторе X. Добавьте столбец из единиц к X когда ваша функция регрессии использует regress, как в этом примере.

Примечание: regress полезно, когда вам просто нужны содействующие оценки или остаточные значения модели регрессии. Если необходимо исследовать подбиравшую модель регрессии далее, создайте объект модели линейной регрессии при помощи fitlm. Для примера, который использует fitlm и crossval, смотрите Вычисляют, Означают Абсолютное о Перекрестной проверке Ошибки.

y = data(:,4);
X = [ones(length(y),1) data(:,1:3)];

Создайте пользовательский функциональный regf (показанный в конце этого примера). Эта функция подбирает модель регрессии к обучающим данным и затем вычисляет ожидаемые значения на наборе тестов.

Примечание: Если вы используете файл live скрипта для этого примера, regf функция уже включена в конце файла. В противном случае необходимо создать эту функцию в конце.m файла или добавить его как файл на пути MATLAB®.

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

rng('default') % For reproducibility
cvMSE = crossval('mse',X,y,'Predfun',@regf)
cvMSE = 17.5399

Этот код создает функциональный regf.

function yfit = regf(Xtrain,ytrain,Xtest)
b = regress(ytrain,Xtrain);
yfit = Xtest*b;
end

Вычислите misclassification ошибку модели логистической регрессии, обученной на числовых и категориальных данных о предикторе при помощи 10-кратной перекрестной проверки.

Загрузите patients набор данных. Задайте числовые переменные Diastolic и Systolic и категориальная переменная Gender как предикторы, и задают Smoker как переменная отклика.

load patients
X1 = Diastolic;
X2 = categorical(Gender);
X3 = Systolic;
y = Smoker;

Создайте пользовательский функциональный classf (показанный в конце этого примера). Эта функция подбирает модель логистической регрессии к обучающим данным и затем классифицирует тестовые данные.

Примечание: Если вы используете файл live скрипта для этого примера, classf функция уже включена в конце файла. В противном случае необходимо создать эту функцию в конце.m файла или добавить его как файл на пути MATLAB®.

Вычислите 10-кратную перекрестную проверку misclassification ошибка для модели с данными о предикторе X1x2 , и X3 и переменная отклика y. Задайте 'Stratify',y гарантировать, что наборы обучающих данных и наборы тестов имеют примерно ту же пропорцию курильщиков.

rng('default') % For reproducibility
err = crossval('mcr',X1,X2,X3,y,'Predfun',@classf,'Stratify',y)
err = 0.1100

Этот код создает функциональный classf.

function pred = classf(X1train,X2train,X3train,ytrain,X1test,X2test,X3test)
Xtrain = table(X1train,X2train,X3train,ytrain, ...
    'VariableNames',{'Diastolic','Gender','Systolic','Smoker'});
Xtest = table(X1test,X2test,X3test, ...
    'VariableNames',{'Diastolic','Gender','Systolic'});
modelspec = 'Smoker ~ Diastolic + Gender + Systolic';
mdl = fitglm(Xtrain,modelspec,'Distribution','binomial');
yfit = predict(mdl,Xtest);
pred = (yfit > 0.5);
end

Для данного количества кластеров вычислите перекрестную подтвержденную сумму квадратов расстояний между наблюдениями и их самым близким кластерным центром. Сравните результаты для одного - десяти кластеров.

Загрузите fisheriris набор данных. X матричный meas, который содержит цветочные измерения для 150 различных цветов.

load fisheriris
X = meas;

Создайте пользовательский функциональный clustf (показанный в конце этого примера). Эта функция выполняет следующие шаги:

  1. Стандартизируйте обучающие данные.

  2. Разделите обучающие данные на k кластеры.

  3. Преобразуйте тестовые данные с помощью обучающих данных среднее и стандартное отклонение.

  4. Вычислите расстояние от каждого, тестовые данные указывают на самый близкий кластерный центр или центроид.

  5. Вычислите сумму квадратов расстояний.

Примечание: Если вы используете файл live скрипта для этого примера, clustf функция уже включена в конце файла. В противном случае необходимо создать функцию в конце.m файла или добавить его как файл на пути MATLAB®.

Создайте for цикл, который задает количество кластеров k для каждой итерации. Для каждого постоянного числа кластеров передайте соответствующий clustf функционируйте к crossval. Поскольку crossval выполняет 10-кратную перекрестную проверку по умолчанию, программное обеспечение вычисляет 10 сумм квадратов расстояний, один для каждого раздела обучения и тестовых данных. Возьмите сумму тех значений; результатом является перекрестная подтвержденная сумма квадратов расстояний для данного количества кластеров.

rng('default') % For reproducibility
cvdist = zeros(5,1);
for k = 1:10
    fun = @(Xtrain,Xtest)clustf(Xtrain,Xtest,k);
    distances = crossval(fun,X);
    cvdist(k) = sum(distances);
end

Постройте перекрестную подтвержденную сумму квадратов расстояний для каждого количества кластеров.

plot(cvdist)
xlabel('Number of Clusters')
ylabel('CV Sum of Squared Distances')

Figure contains an axes. The axes contains an object of type line.

В общем случае при определении, сколько кластеров, чтобы использовать, рассмотрите самое большое количество кластеров, которое соответствует значительному уменьшению в перекрестной подтвержденной сумме квадратов расстояний. В данном примере использование двух или трех кластеров кажется соответствующим, но использование больше чем трех кластеров не делает.

Этот код создает функциональный clustf.

function distances = clustf(Xtrain,Xtest,k)
[Ztrain,Zmean,Zstd] = zscore(Xtrain);
[~,C] = kmeans(Ztrain,k); % Creates k clusters
Ztest = (Xtest-Zmean)./Zstd;
d = pdist2(C,Ztest,'euclidean','Smallest',1);
distances = sum(d.^2);
end

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

Загрузите carsmall набор данных. Задайте Acceleration и Displacement переменные как предикторы и Weight переменная как ответ.

load carsmall
X1 = Acceleration;
X2 = Displacement;
y = Weight;

Создайте пользовательский функциональный regf (показанный в конце этого примера). Эта функция подбирает модель регрессии к обучающим данным и затем вычисляет предсказанные автомобильные веса на наборе тестов. Функция сравнивает предсказанные автомобильные значения веса с истинными значениями, и затем вычисляет среднюю абсолютную погрешность (MAE) и MAE, настроенный к области значений автомобильных весов набора тестов.

Примечание: Если вы используете файл live скрипта для этого примера, regf функция уже включена в конце файла. В противном случае необходимо создать эту функцию в конце.m файла или добавить его как файл на пути MATLAB®.

По умолчанию, crossval выполняет 10-кратную перекрестную проверку. Для каждого из 10 разделов набора обучающих данных и набора тестов данных в X1x2 , и y, вычислите MAE и настроенные значения MAE с помощью regf функция. Найдите средний MAE и означайте настроенный MAE.

rng('default') % For reproducibility
values = crossval(@regf,X1,X2,y)
values = 10×2

  319.2261    0.1132
  342.3722    0.1240
  214.3735    0.0902
  174.7247    0.1128
  189.4835    0.0832
  249.4359    0.1003
  194.4210    0.0845
  348.7437    0.1700
  283.1761    0.1187
  210.7444    0.1325

mean(values)
ans = 1×2

  252.6701    0.1129

Этот код создает функциональный regf.

function errors = regf(X1train,X2train,ytrain,X1test,X2test,ytest)
tbltrain = table(X1train,X2train,ytrain, ...
    'VariableNames',{'Acceleration','Displacement','Weight'});
tbltest = table(X1test,X2test,ytest, ...
    'VariableNames',{'Acceleration','Displacement','Weight'});
mdl = fitlm(tbltrain,'Weight ~ Acceleration + Displacement');
yfit = predict(mdl,tbltest);
MAE = mean(abs(yfit-tbltest.Weight));
adjMAE = MAE/range(tbltest.Weight);
errors = [MAE adjMAE];
end

Вычислите misclassification ошибку дерева классификации при помощи анализа главных компонентов (PCA) и 5-кратной перекрестной проверки.

Загрузите fisheriris набор данных. meas матрица содержит цветочные измерения для 150 различных цветов. species списки переменных разновидности для каждого цветка.

load fisheriris

Создайте пользовательский функциональный classf (показанный в конце этого примера). Эта функция соответствует дереву классификации к обучающим данным и затем классифицирует тестовые данные. Используйте PCA в функции, чтобы сократить количество предикторов, используемых, чтобы создать древовидную модель.

Примечание: Если вы используете файл live скрипта для этого примера, classf функция уже включена в конце файла. В противном случае необходимо создать эту функцию в конце.m файла или добавить его как файл на пути MATLAB®.

Создайте cvpartition объект для стратифицированной 5-кратной перекрестной проверки. По умолчанию, cvpartition гарантирует, что наборы обучающих данных и наборы тестов имеют примерно те же пропорции цветочных разновидностей.

rng('default') % For reproducibility
cvp = cvpartition(species,'KFold',5);

Вычислите 5-кратную перекрестную проверку misclassification ошибка для дерева классификации с данными о предикторе meas и переменная отклика species.

cvError = crossval('mcr',meas,species,'Predfun',@classf,'Partition',cvp)
cvError = 0.1067

Этот код создает функциональный classf.

function yfit = classf(Xtrain,ytrain,Xtest)

% Standardize the training predictor data. Then, find the 
% principal components for the standardized training predictor
% data.
[Ztrain,Zmean,Zstd] = zscore(Xtrain);
[coeff,scoreTrain,~,~,explained,mu] = pca(Ztrain);

% Find the lowest number of principal components that account
% for at least 95% of the variability.
n = find(cumsum(explained)>=95,1);

% Find the n principal component scores for the standardized
% training predictor data. Train a classification tree model
% using only these scores.
scoreTrain95 = scoreTrain(:,1:n);
mdl = fitctree(scoreTrain95,ytrain);

% Find the n principal component scores for the transformed
% test data. Classify the test data.
Ztest = (Xtest-Zmean)./Zstd;
scoreTest95 = (Ztest-mu)*coeff(:,1:n);
yfit = predict(mdl,scoreTest95);

end

Создайте матрицу беспорядка из 10-кратных результатов перекрестной проверки модели дискриминантного анализа.

Примечание: используйте classify когда учебная скорость является беспокойством. В противном случае используйте fitcdiscr создать модель дискриминантного анализа. Для примера, который показывает тот же рабочий процесс этим примером, но использует fitcdiscr, смотрите Создают Матрицу Беспорядка Используя Предсказания Перекрестной проверки.

Загрузите fisheriris набор данных. X содержит цветочные измерения для 150 различных цветов и y перечисляет разновидности для каждого цветка. Создайте переменную order это задает порядок цветочных разновидностей.

load fisheriris
X = meas;
y = species;
order = unique(y)
order = 3x1 cell
    {'setosa'    }
    {'versicolor'}
    {'virginica' }

Создайте указатель на функцию под названием func для функции, которая завершает следующие шаги:

  • Возьмите в обучающих данных (Xtrain и ytrain) и тестовые данные (Xtest и ytest).

  • Используйте обучающие данные, чтобы создать модель дискриминантного анализа, которая классифицирует новые данные (Xtest). Создайте эту модель и классифицируйте новые данные при помощи classify функция.

  • Сравните истинные классы тестовых данных (ytest) к предсказанным значениям тестовых данных, и создают матрицу беспорядка результатов при помощи confusionmat функция. Задайте порядок класса при помощи 'Order',order.

func = @(Xtrain,ytrain,Xtest,ytest)confusionmat(ytest, ...
    classify(Xtest,Xtrain,ytrain),'Order',order);

Создайте cvpartition объект для стратифицированной 10-кратной перекрестной проверки. По умолчанию, cvpartition гарантирует, что наборы обучающих данных и наборы тестов имеют примерно те же пропорции цветочных разновидностей.

rng('default') % For reproducibility
cvp = cvpartition(y,'Kfold',10);

Вычислите 10 матриц беспорядка набора тестов для каждого раздела данных о предикторе X и переменная отклика y. Каждая строка confMat соответствует матричным результатам беспорядка для одного набора тестов. Агрегируйте результаты и создайте итоговую матрицу беспорядка cvMat.

confMat = crossval(func,X,y,'Partition',cvp);
cvMat = reshape(sum(confMat),3,3)
cvMat = 3×3

    50     0     0
     0    48     2
     0     1    49

Постройте матрицу беспорядка как матричный график беспорядка при помощи confusionchart.

confusionchart(cvMat,order)

Figure contains an object of type ConfusionMatrixChart.

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

свернуть все

Тип ошибки оценивает в виде любого 'mse' или 'mcr'.

ЗначениеОписание
'mse'Среднеквадратическая ошибка (MSE) — Подходящий для алгоритмов регрессии только
'mcr'Уровень Misclassification или пропорция неправильно классифицированных наблюдений — Подходящий для алгоритмов классификации только

Набор данных в виде вектор-столбца, матрицы или массива. Строки X соответствуйте наблюдениям и столбцам X обычно соответствуйте переменным. Если вы передаете несколько наборов данных X1,...,XN к crossval, затем все наборы данных должны иметь одинаковое число строк.

Типы данных: single | double | logical | char | string | cell | categorical

Данные об ответе в виде вектор-столбца или символьного массива. Строки y соответствуйте наблюдениям и y должен иметь одинаковое число строк как данные о предикторе X или X1,...,XN.

Типы данных: single | double | logical | char | string | cell | categorical

Функция предсказания в виде указателя на функцию. Необходимо создать эту функцию как анонимную функцию, функцию, определяемую в конце.m или .mlx файла, содержащего остальную часть кода или файла на пути MATLAB®.

Эта таблица описывает необходимый синтаксис функций, учитывая тип данных о предикторе, переданных crossval.

ЗначениеДанные о предиктореСинтаксис функций
@myfunctionX

function yfit = myfunction(Xtrain,ytrain,Xtest)
% Calculate predicted response
...
end

  • Xtrain — Подмножество наблюдений в X используемый в качестве учебных данных о предикторе. Функция использует Xtrain и ytrain создать модель регрессии или классификация.

  • ytrain — Подмножество ответов в y используемый в качестве учебных данных об ответе. Строки ytrain соответствуйте тем же наблюдениям в строках Xtrain. Функция использует Xtrain и ytrain создать модель регрессии или классификация.

  • Xtest — Подмножество наблюдений в X используемый в качестве тестовых данных о предикторе. Функция использует Xtest и модель, обученная на Xtrain и ytrain вычислить ожидаемые значения yfit.

  • yfit — Набор ожидаемых значений для наблюдений в Xtest. yfit значения формируют вектор-столбец с одинаковым числом строк как Xtest.

@myfunctionX1,...,XN

function yfit = myfunction(X1train,...,XNtrain,ytrain,X1test,...,XNtest)
% Calculate predicted response
...
end

  • X1train,...,XNtrain — Подмножества данных о предикторе в X1,...,XN, соответственно, это используется в качестве учебных данных о предикторе. Строки X1train,...,XNtrain соответствуйте тем же наблюдениям. Функция использует X1train,...,XNtrain и ytrain создать модель регрессии или классификация.

  • ytrain — Подмножество ответов в y используемый в качестве учебных данных об ответе. Строки ytrain соответствуйте тем же наблюдениям в строках X1train,...,XNtrain. Функция использует X1train,...,XNtrain и ytrain создать модель регрессии или классификация.

  • X1test,...,XNtest — Подмножества наблюдений в X1,...,XN, соответственно, это используется в качестве тестовых данных о предикторе. Строки X1test,...,XNtest соответствуйте тем же наблюдениям. Функция использует X1test,...,XNtest и модель, обученная на X1train,...,XNtrain и ytrain вычислить ожидаемые значения yfit.

  • yfit — Набор ожидаемых значений для наблюдений в X1test,...,XNtest. yfit значения формируют вектор-столбец с одинаковым числом строк как X1test,...,XNtest.

Пример: @(Xtrain,ytrain,Xtest)(Xtest*regress(ytrain,Xtrain));

Типы данных: function_handle

Функция, чтобы перекрестный подтвердить в виде указателя на функцию. Необходимо создать эту функцию как анонимную функцию, функцию, определяемую в конце.m или .mlx файла, содержащего остальную часть кода или файла на пути MATLAB.

Эта таблица описывает необходимый синтаксис функций, учитывая тип данных, переданных crossval.

ЗначениеДанныеСинтаксис функций
@myfunctionX

function value = myfunction(Xtrain,Xtest)
% Calculation of value
...
end

  • Xtrain — Подмножество наблюдений в X используемый в качестве обучающих данных. Функция использует Xtrain создать модель.

  • Xtest — Подмножество наблюдений в X используемый в качестве тестовых данных. Функция использует Xtest и модель, обученная на Xtrain вычислить value.

  • value — Количество или переменная. В большинстве случаев, value числовой скаляр, представляющий оценку потерь. value может также быть массив, при условии, что размер массивов является тем же самым для каждого раздела обучения и тестовых данных. Если вы хотите возвратить переменную output это может изменить размер в зависимости от раздела данных, установить value быть скаляром ячейки {output} вместо этого.

@myfunctionX1,...,XN

function value = myfunction(X1train,...,XNtrain,X1test,...,XNtest)
% Calculation of value
...
end

  • X1train,...,XNtrain — Подмножества данных в X1,...,XN, соответственно, это используется в качестве обучающих данных. Строки X1train,...,XNtrain соответствуйте тем же наблюдениям. Функция использует X1train,...,XNtrain создать модель.

  • X1test,...,XNtest — Подмножества данных в X1,...,XN, соответственно, это используется в качестве тестовых данных. Строки X1test,...,XNtest соответствуйте тем же наблюдениям. Функция использует X1test,...,XNtest и модель, обученная на X1train,...,XNtrain вычислить value.

  • value — Количество или переменная. В большинстве случаев, value числовой скаляр, представляющий оценку потерь. value может также быть массив, при условии, что размер массивов является тем же самым для каждого раздела обучения и тестовых данных. Если вы хотите возвратить переменную output это может изменить размер в зависимости от раздела данных, установить value быть скаляром ячейки {output} вместо этого.

Типы данных: function_handle

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

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

Пример: crossval('mcr',meas,species,'Predfun',@classf,'KFold',5,'Stratify',species) задает, чтобы вычислить стратифицированную 5-кратную перекрестную проверку misclassification уровень для classf функция с данными о предикторе meas и переменная отклика species.

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

  • Если Holdout значение p скаляр в области значений (0,1), затем crossval случайным образом выбирает и резервирует приблизительно p*100% из наблюдений как тестовые данные.

  • Если Holdout значение p положительный целочисленный скаляр, затем crossval случайным образом выбирает и резервирует p наблюдения как тестовые данные.

В любом случае, crossval затем обучает модель, заданную любым fun или predfun использование остальной части данных. Наконец, функция использует тестовые данные наряду с обученной моделью, чтобы вычислить любой values или err.

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

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

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

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

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

Если вы задаете 'KFold',kто crossval случайным образом делит данные в k наборы. Для каждого набора функция резервирует набор как тестовые данные и обучает модель, заданную любым fun или predfun использование другого k – 1 набор. crossval затем использует тестовые данные наряду с обученной моделью, чтобы вычислить любой values или err.

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

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

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

Перекрестная проверка "Пропускает один" в виде разделенной запятой пары, состоящей из 'Leaveout' и 1.

Если вы задаете 'Leaveout',1, затем для каждого наблюдения, crossval резервирует наблюдение как тестовые данные и обучает модель, заданную любым fun или predfun использование других наблюдений. Функция затем использует тестовое наблюдение наряду с обученной моделью, чтобы вычислить любой values или err.

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

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

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

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

Если вы задаете оба Partition и MCReps, затем первое повторение Монте-Карло использует информацию о разделе в cvpartition объект и программное обеспечение вызывают repartition возразите функции, чтобы сгенерировать новые разделы для каждого из остающихся повторений.

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

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

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

Когда вы используете crossval, вы не можете задать оба Partition и Stratify. Вместо этого непосредственно задайте стратифицированный раздел, когда вы создадите cvpartition объект раздела.

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

Переменная, задающая группы, используемые для стратификации в виде разделенной запятой пары, состоящей из 'Stratify' и вектор-столбец с одинаковым числом строк как данные X или X1,...,XN.

Когда вы задаете Stratify, и наборы обучающих данных и наборы тестов имеют примерно те же пропорции класса как в Stratify вектор. Программное обеспечение обрабатывает NaNs, пустые символьные вектора, пустые строки, <missing> значения и <undefined> значения в Stratify как пропускающий значения данных, и игнорирует соответствующие строки данных.

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

Когда вы используете crossval, вы не можете задать оба Partition и Stratify. Вместо этого непосредственно задайте стратифицированный раздел, когда вы создадите cvpartition объект раздела.

Типы данных: single | double | logical | string | cell | categorical

Опции для рабочих расчетов в параллели и установки случайных потоков в виде структуры. Создайте Options структура с statset. Эта таблица приводит поля опции и их значения.

Имя поляЗначениеЗначение по умолчанию
UseParallelУстановите это значение к true запускать расчеты параллельно.false
UseSubstreams

Установите это значение к true запускать расчеты параллельно восстанавливаемым способом.

Чтобы вычислить восстанавливаемо, установите Streams к типу, который позволяет подпотоки: 'mlfg6331_64' или 'mrg32k3a'.

false
StreamsЗадайте это значение как a RandStream возразите или массив ячеек, состоящий из одного такого объекта.Если вы не задаете Streamsто crossval использует поток по умолчанию.

Примечание

Вам нужен Parallel Computing Toolbox™, чтобы запустить расчеты параллельно.

Пример: 'Options',statset('UseParallel',true)

Типы данных: struct

Выходные аргументы

свернуть все

Среднеквадратическая ошибка или misclassification уровень, возвращенный в виде числа. Тип ошибки зависит от criterion значение.

Значения потерь, возвращенные как вектор-столбец или матрица. Каждая строка values соответствует выходу fun для одного раздела обучения и тестовых данных.

Если выходной параметр, возвращенный fun многомерно, затем crossval изменяет выход и вмещает его в одну строку values. Для примера смотрите, Создают Матрицу Беспорядка Используя Перекрестную проверку.

Советы

  • Хорошая практика должна использовать стратификацию (см. Stratify) когда вы используете перекрестную проверку с алгоритмами классификации. В противном случае некоторые наборы тестов не могут включать наблюдения для всех классов.

Алгоритмы

свернуть все

Общие шаги перекрестной проверки для predfun

Когда вы используете predfun, crossval функция обычно выполняет 10-кратную перекрестную проверку можно следующим образом:

  1. Разделите наблюдения в данных о предикторе X и переменная отклика y в 10 групп, каждая из которых имеет приблизительно то же количество наблюдений.

  2. Используйте последние девять групп наблюдений, которые обучат модель, как задано в predfun. Используйте первую группу наблюдений как тестовые данные, передайте тестовые данные о предикторе обученной модели и вычислите ожидаемые значения, как задано в predfun. Вычислите ошибку, заданную criterion.

  3. Используйте первую группу и последние восемь групп наблюдений, которые обучат модель, как задано в predfun. Используйте вторую группу наблюдений как тестовые данные, передайте тестовые данные обученной модели и вычислите ожидаемые значения, как задано в predfun. Вычислите ошибку, заданную criterion.

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

  5. Возвратите оценку средней погрешности как скалярный err.

Общие шаги перекрестной проверки для fun

Когда вы используете fun, crossval функция обычно выполняет 10-кратную перекрестную проверку можно следующим образом:

  1. Разделите данные в X в 10 групп, каждая из которых имеет приблизительно то же количество наблюдений.

  2. Используйте последние девять групп данных, которые обучат модель, как задано в fun. Используйте первую группу данных как набор тестов, передайте набор тестов обученной модели и вычислите некоторое значение (например, потеря), как задано в fun.

  3. Используйте первую группу и последние восемь групп данных, которые обучат модель, как задано в fun. Используйте вторую группу данных как набор тестов, передайте набор тестов обученной модели и вычислите некоторое значение, как задано в fun.

  4. Продолжите подобным образом, пока каждая группа данных не будет использоваться в качестве набора тестов точно однажды.

  5. Возвратите 10 вычисленных значений как векторный values.

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

Многие классификация и функции регрессии позволяют вам выполнять перекрестную проверку непосредственно.

  • То, когда вы используете подгонку, функционирует такой как fitcsvm, fitctree, и fitrtree, можно задать опции перекрестной проверки при помощи аргументов пары "имя-значение". В качестве альтернативы можно сначала создать модели с этими подходящими функциями и затем создать разделенный объект при помощи crossval объектная функция. Используйте kfoldLoss и kfoldPredict возразите функциям, чтобы вычислить потерю и ожидаемые значения для разделенного объекта. Для получения дополнительной информации смотрите ClassificationPartitionedModel и RegressionPartitionedModel.

  • Можно также задать опции перекрестной проверки, когда вы выполняете лассо или эластичное сетевое использование регуляризации lasso и lassoglm.

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

Введенный в R2008a