exponenta event banner

kfoldPredict

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

Синтаксис

Описание

пример

YHat = kfoldPredict(CVMdl) возвращает предсказанные ответы с перекрестной проверкой с помощью модели линейной регрессии с перекрестной проверкой CVMdl. То есть, для каждого раза, kfoldPredict предсказывает ответы для наблюдений, которые он выдает, когда он тренируется, используя все другие наблюдения.

YHat содержит прогнозируемые отклики для каждой силы регуляризации в моделях линейной регрессии, которые составляют CVMdl.

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

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

Перекрестно проверенная линейная регрессионная модель, заданная как RegressionPartitionedLinear объект модели. Можно создать RegressionPartitionedLinear модель с использованием fitrlinear и указание любого из аргументов пары «имя-значение» перекрестной проверки, например, CrossVal.

Чтобы получить оценки, kfoldPredict применяет те же данные, которые используются для перекрестной проверки модели линейной регрессии (X и Y).

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

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

Предсказанные ответы с перекрестной проверкой, возвращенные в виде числового массива n-by-L. n - количество наблюдений в данных предиктора, которые были созданы CVMdl (см. X) и L - количество сильных сторон регуляризации в CVMdl.Trained{1}.Lambda. YHat(i,j) - прогнозируемый отклик для наблюдения i использование модели линейной регрессии, которая имеет силу регуляризации CVMdl.Trained{1}.Lambda(j).

Прогнозируемый отклик с использованием модели с силой регуляризации j равен y ^ j = xβj + bj.

  • x - наблюдение из матрицы данных предиктора X, и является вектором строки.

  • βj - оценочный вектор-столбец коэффициентов. Программа сохраняет этот вектор в Mdl.Beta(:,j).

  • bj - оценочное скалярное смещение, которое программное обеспечение хранит в Mdl.Bias(j).

Примеры

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

Моделирование 10000 наблюдений из этой модели

y = x100 + 2x200 + e.

  • X=x1..., x1000 является редкой матрицей 10000 на 1000 с 10%-ми отличными от нуля стандартными нормальными элементами.

  • e - случайная нормальная ошибка со средним значением 0 и стандартным отклонением 0,3.

rng(1) % For reproducibility
n = 1e4;
d = 1e3;
nz = 0.1;
X = sprandn(n,d,nz);
Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);

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

CVMdl = fitrlinear(X,Y,'CrossVal','on')
CVMdl = 
  RegressionPartitionedLinear
    CrossValidatedModel: 'Linear'
           ResponseName: 'Y'
        NumObservations: 10000
                  KFold: 10
              Partition: [1x1 cvpartition]
      ResponseTransform: 'none'


  Properties, Methods

Mdl1 = CVMdl.Trained{1}
Mdl1 = 
  RegressionLinear
         ResponseName: 'Y'
    ResponseTransform: 'none'
                 Beta: [1000x1 double]
                 Bias: 0.0107
               Lambda: 1.1111e-04
              Learner: 'svm'


  Properties, Methods

По умолчанию fitrlinear реализует 10-кратную перекрестную проверку. CVMdl является RegressionPartitionedLinear модель. Он содержит свойство Trained, который представляет собой массив ячеек 10 на 1 10 RegressionLinear модели, которые программное обеспечение обучило с использованием обучающего набора.

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

yHat = kfoldPredict(CVMdl);

Потому что есть одна сила регуляризации в Mdl, yHat - числовой вектор.

Смоделировать 10000 наблюдений, как в разделе Прогнозирование перекрестно проверенных ответов.

rng(1) % For reproducibility
n = 1e4;
d = 1e3;
nz = 0.1;
X = sprandn(n,d,nz);
Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);

Создайте набор из 15 логарифмически разнесенных уровней регуляции от 10-5 до 10-1.

Lambda = logspace(-5,-1,15);

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

X = X'; 
CVMdl = fitrlinear(X,Y,'ObservationsIn','columns','KFold',5,'Lambda',Lambda,...
    'Learner','leastsquares','Solver','sparsa','Regularization','lasso');

CVMdl является RegressionPartitionedLinear модель. Его Trained свойство содержит массив обученных ячеек 5 на 1 RegressionLinear модели, каждая из которых имеет различную складку во время тренировки. Поскольку fitrlinear обучены с использованием 15 регуляризационных сильных сторон, вы можете думать о каждом RegressionLinear модель как 15 моделей.

Прогнозировать перекрестно проверенные ответы.

YHat = kfoldPredict(CVMdl);
size(YHat)
ans = 1×2

       10000          15

YHat(2,:)
ans = 1×15

   -1.7338   -1.7332   -1.7319   -1.7299   -1.7266   -1.7239   -1.7135   -1.7210   -1.7324   -1.7063   -1.6397   -1.5112   -1.2631   -0.7841   -0.0096

YHat является матрицей 10000 на 15. YHat(2,:) является перекрестно проверенным ответом для наблюдения 2 с использованием модели, регуляризованной со всеми 15 значениями регуляризации.

Представлен в R2016a