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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

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

Часть данных, чтобы использовать для тестирования в валидации затяжки, заданной как пара, разделенная запятой, состоящая из 'Holdout' и скалярного значения в диапазоне от 0 до 1. Если вы задаете 'Holdout',p, то crossval:
1. Случайным образом резервы p *100% данных как данные о валидации и train модель с помощью остальной части данных
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

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

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