crossval

Класс: RegressionGP

Перекрестный подтвердите Гауссову модель регрессии процесса

Синтаксис

cvMdl = crossval(gprMdl)
cvmdl = crossval(gprMdl,Name,Value)

Описание

cvMdl = crossval(gprMdl) возвращает разделенную модель, cvMdl, созданный из модели Gaussian process regression (GPR), gprMdl, использование 10-кратной перекрестной проверки.

cvmdl RegressionPartitionedModel объект и gprMdl RegressionGP (полный) объект.

cvmdl = crossval(gprMdl,Name,Value) возвращает разделенную модель, cvmdl, с дополнительными опциями, заданными одним или несколькими Name,Value парные аргументы. Например, можно задать количество сгибов или часть данных, чтобы использовать для тестирования.

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

развернуть все

Гауссова модель регрессии процесса в виде RegressionGP (полный) объект. Вы не можете вызвать crossval на компактном объекте регрессии.

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

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

Случайный раздел для k - сворачивает перекрестную проверку в виде разделенной запятой пары, состоящей из 'CVPartition' и cvpartition объект.

Пример: 'CVPartition',cvp использует случайный раздел, заданный cvp.

Если вы задаете CVPartition, затем вы не можете задать Holdout, KFold, или LeaveOut.

Часть данных, чтобы использовать для тестирования в валидации затяжки в виде разделенной запятой пары, состоящей из 'Holdout' и скалярное значение в диапазоне от 0 до 1. Если вы задаете 'Holdout',p, затем crossval:
1. Случайным образом резервы p *100% данных как данные о валидации, и обучают модель с помощью остальной части данных
2. Хранит компактную, обученную модель в cvgprMdl.Trained.

Пример: 'Holdout', 0.3 использование 30% данных для тестирования и 70% данных для обучения.

Если вы задаете Holdout, затем вы не можете задать CVPartition, KFold, или Leaveout.

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

Количество сгибов, чтобы использовать в перекрестной подтвержденной модели GPR в виде разделенной запятой пары, состоящей из 'KFold' и положительное целочисленное значение, больше, чем 1. Kfold должен быть больше 1. Если вы задаете 'Kfold',k затем crossval:
1. Случайным образом делит данные в наборы k.
2. Для каждого набора, резервирует набор как тестовые данные и обучает модель с помощью другого k – 1 набор.
3. Хранит k компактные, обученные модели в ячейках k-by-1 массив ячеек в cvgprMdl.Trained.

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

Если вы задаете KFold, затем вы не можете задать CVPartition, Holdout, или Leaveout.

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

Индикатор для перекрестной проверки "пропускает один" в виде разделенной запятой пары, состоящей из 'LeaveOut' и любой 'on' или 'off'. Если вы задаете 'Leaveout','on', затем, для каждого из наблюдений n, crossval:
1. Резервирует наблюдение как тестовые данные и обучает модель с помощью другого n – 1 наблюдение.
2. Хранит n компактные, обученные модели в ячейках n-by-1 массив ячеек в cvgprMdl.Trained.

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

Если вы задаете Leaveout, затем вы не можете задать CVPartition, Holdout, или KFold.

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

развернуть все

Разделенная Гауссова модель регрессии процесса, возвращенная как RegressionPartitionedModel объект.

Примеры

развернуть все

Загрузите данные о корпусе [1] от Репозитория Машинного обучения UCI [4].

Набор данных имеет 506 наблюдений. Первые 13 столбцов содержат значения предиктора, и последний столбец содержит значения отклика. Цель состоит в том, чтобы предсказать среднее значение занятых владельцами домов в пригородном Бостоне как функция 13 предикторов.

Загрузите данные и задайте вектор отклика и матрицу предиктора.

load('housing.data');
X = housing(:,1:13);
y = housing(:,end);

Подбирайте модель GPR с помощью экспоненциальной функции ядра в квадрате с отдельной шкалой расстояний для каждого предиктора. Стандартизируйте переменные предикторы.

gprMdl = fitrgp(X,y,'KernelFunction','ardsquaredexponential','Standardize',1);

Создайте раздел перекрестной проверки для данных с помощью предиктора 4 как сгруппированная переменная.

rng('default') % For reproducibility
cvp = cvpartition(X(:,4),'kfold',10);

Создайте 10-кратную перекрестную подтвержденную модель с помощью разделенных данных в cvp.

cvgprMdl = crossval(gprMdl,'CVPartition',cvp);

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

L = kfoldLoss(cvgprMdl)
L =

    9.5299

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

ypred = kfoldPredict(cvgprMdl);

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

Постройте фактические ответы и данные о предсказании.

plot(y,'r.');
hold on;
plot(ypred,'b--.');
axis([0 510 -15 65]);
legend('True response','GPR prediction','Location','Best');
hold off;

Загрузите данные о морском ушке [2], [3], от Репозитория Машинного обучения UCI [4] и сохраните его в вашем текущем каталоге с именем abalone.data.

Считайте данные в table.

tbl = readtable('abalone.data','Filetype','text','ReadVariableNames',false);

Набор данных имеет 4 177 наблюдений. Цель состоит в том, чтобы предсказать возраст морского ушка от 8 физических измерений.

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

gprMdl = fitrgp(tbl,tbl(:,end),'KernelFunction','ardsquaredexponential',...
      'FitMethod','sr','PredictMethod','fic','Standardize',1);

Перекрестный подтвердите модель с помощью 4-кратной перекрестной проверки. Это делит данные в 4 набора. Для каждого набора, fitrgp использование, которое устанавливает (25% данных) как тестовые данные и обучает модель на остающихся 3 наборах (75% данных).

rng('default') % For reproducibility
cvgprMdl = crossval(gprMdl,'KFold',4);

Вычислите потерю по отдельным сгибам.

L = kfoldLoss(cvgprMdl,'mode','individual')
L =

    4.3669
    4.6896
    4.0565
    4.3162

Вычислите среднее значение перекрестная подтвержденная потеря на по всем сгибам. Значением по умолчанию является среднеквадратическая ошибка.

L2 = kfoldLoss(cvgprMdl)
L2 =

    4.3573

Это равно средней потере по отдельным сгибам.

mse = mean(L)
mse =

    4.3573

Советы

  • Можно только использовать один из аргументов пары "имя-значение" за один раз.

  • Вы не можете вычислить интервалы предсказания для перекрестной подтвержденной модели.

Альтернативы

В качестве альтернативы можно обучить перекрестную подтвержденную модель с помощью связанных аргументов пары "имя-значение" в fitrgp.

Если вы предоставляете пользовательский 'ActiveSet' в вызове fitrgp, затем вы не можете пересечься, подтверждают модель GPR.

Ссылки

[1] Харрисон, D. и D.L., Рубинфельд. "Гедонистические цены и спрос на чистый воздух". J. Окружить. Экономика & управление. Vol.5, 1978, стр 81-102.

[2] Уорик J. N. Т. Л. Селлерс, С. Р. Тэлбот, А. Дж. Которн и В. Б. Форд. "Биология Населения Морского ушка (_Haliotis_ разновидности) на Тасмании. I. Морское ушко Blacklip (_H. rubra _) от Северного Побережья и Островов Пролива Басса". Морское Деление Рыболовства, Технический отчет № 48 (ISSN 1034-3288), 1994.

[3] С. Во. "Расширяя и тестируя Каскадной Корреляции в сравнении с эталоном", диссертация. Кафедра информатики, университет Тасмании, 1995.

[4] Личмен, M. Репозиторий Машинного обучения UCI, Ирвин, CA: Калифорнийский университет, Школа Информатики и вычислительной техники, 2013. http://archive.ics.uci.edu/ml.

Введенный в R2015b