Блокируйте координатное приближение спуска для моделей GPR

Для большого количества наблюдений, с помощью точного метода для оценки параметра и делая предсказания на новых данных может быть дорогим (см. Точный Метод GPR). Один из методов приближения, что справка занимается этой проблемой для предсказания, является методом Спуска координаты блока (BCD). Можно сделать предсказания с помощью метода BCD первым определением предсказать метод с помощью 'PredictMethod','bcd' аргумент пары "имя-значение" в вызове fitrgp, и затем использование predict функция.

Идея метода BCD состоит в том, чтобы вычислить

α^=(K(X,X)+σ2IN)1(yHβ)

по-другому, чем точный метод. Оценки BCD α^путем решения следующей задачи оптимизации:

α^=arg minαf(α)

где

f(α)=12αT[K(X,X)+σ2IN]ααT(yHβ).

fitrgp спуск координаты блока (BCD) использования, чтобы решить вышеупомянутую задачу оптимизации. Для пользователей, знакомых с машинами опорных векторов (SVMs), раньше соответствовали последовательная минимальная оптимизация (SMO) и ISDA (итеративный один алгоритм данных), SVMs являются особыми случаями BCD. fitrgp выполняет два шага для каждого обновления BCD - обновление блока и выделение блока. В фазе выделения блока, fitrgp использует комбинацию случайных и жадных стратегий выбора набора α коэффициенты, чтобы оптимизировать затем. В блоке обновляют фазу, выбранное α коэффициенты оптимизированы при хранении другого α коэффициенты зафиксированы к их предыдущим значениям. Эти два шага повторяются до сходимости. BCD не хранит n*n матрица K(X,X) в памяти, но это только вычисляет фрагменты K(X,X) матрицируйте по мере необходимости. В результате BCD использует память более эффективно по сравнению с 'PredictMethod','exact'.

Практический опыт указывает, что не необходимо решить задачу оптимизации для вычисления α к очень высокой точности. Например, разумно остановить итерации когда ||f(α)|| отбрасывания ниже η||f(α0)||, где α0 начальное значение α и η маленькая константа (сказать η=103). Результаты 'PredictMethod','exact' и 'PredictMethod','bcd' эквивалентны кроме BCD, вычисляет α по-другому. Следовательно, 'PredictMethod','bcd' может считаться памятью эффективный способ сделать 'PredictMethod','exact'. BCD часто быстрее, чем 'PredictMethod','exact' для большого n. Однако вы не можете вычислить интервалы предсказания с помощью 'PredictMethod','bcd' опция. Это вызвано тем, что вычислительные интервалы предсказания требуют решения задачи как та, решенная для вычисления α для каждой тестовой точки, которая снова является дорогой.

Подходящие модели GPR Используя приближение BCD

Этот пример показывает подбор кривой модели Gaussian Process Regression (GPR) данным с большим количеством наблюдений, с помощью Приближения Спуска координаты блока (BCD).

Маленький n - PredictMethod 'exact' и 'bcd' Приведите к тем же результатам

Сгенерируйте набор данных небольшой выборки.

    rng(0,'twister');
    n = 1000;
    X = linspace(0,1,n)';
    X = [X,X.^2];
    y = 1 + X*[1;2] + sin(20*X*[1;-2])./(X(:,1)+1) + 0.2*randn(n,1);

Создайте модель GPR с помощью 'FitMethod','exact' и 'PredictMethod','exact'.

    gpr = fitrgp(X,y,'KernelFunction','squaredexponential',...
        'FitMethod','exact','PredictMethod','exact');

Создайте другую модель GPR с помощью 'FitMethod','exact' и 'PredictMethod','bcd'.

    gprbcd = fitrgp(X,y,'KernelFunction','squaredexponential',...
        'FitMethod','exact','PredictMethod','bcd','BlockSize',200);

'PredictMethod','exact' и 'PredictMethod','bcd' должно быть эквивалентным. Они вычисляют то же самое$\hat{\alpha}$, но только по-разному. Можно также видеть итерации при помощи 'Verbose',1 аргумент пары "имя-значение" в вызове fitrgp .

Вычислите подходящие значения с помощью этих двух методов и сравните их:

    ypred    = resubPredict(gpr);
    ypredbcd = resubPredict(gprbcd);

    max(abs(ypred-ypredbcd))
ans =

   5.8853e-04

Подходящие значения друг близко к другу.

Теперь отобразите данные на графике наряду с подходящими значениями для 'PredictMethod','exact' и 'PredictMethod','bcd'.

    figure;
    plot(y,'k.');
    hold on;
    plot(ypred,'b-','LineWidth',2);
    plot(ypredbcd,'m--','LineWidth',2);
    legend('Data','PredictMethod Exact','PredictMethod BCD','Location','Best');
    xlabel('Observation index');
    ylabel('Response value');

Это видно тот 'PredictMethod','exact' и 'PredictMethod','bcd' произведите почти идентичные подгонки.

Большой n - Использование 'FitMethod','sd' и 'PredictMethod','bcd'

Сгенерируйте больший набор данных, похожий на предыдущий.

    rng(0,'twister');
    n = 50000;
    X = linspace(0,1,n)';
    X = [X,X.^2];
    y = 1 + X*[1;2] + sin(20*X*[1;-2])./(X(:,1)+1) + 0.2*randn(n,1);

Для n = 50000, матрица K (X, X) была бы 50000 50000. Хранение K (X, X) в памяти потребовало бы приблизительно 20 Гбайт RAM. Чтобы подбирать модель GPR к этому набору данных, используйте 'FitMethod','sd' со случайным подмножеством m = 2 000 точек. 'ActiveSetSize' аргумент пары "имя-значение" в вызове fitrgp задает активный размер набора m. Для вычисления$\alpha$ использования 'PredictMethod','bcd' с 'BlockSize' из 5 000. 'BlockSize' аргумент пары "имя-значение" в fitrgp задает число элементов$\alpha$ вектора, который программное обеспечение оптимизирует в каждой итерации. 'BlockSize' из 5 000 принимает, что компьютер, который вы используете, может сохранить 5000 5000 матрица в памяти.

   gprbcd = fitrgp(X,y,'KernelFunction','squaredexponential',...,
        'FitMethod','sd','ActiveSetSize',2000,'PredictMethod','bcd','BlockSize',5000);

Отобразите на графике данные и подходящие значения.

    figure;
    plot(y,'k.');
    hold on;
    plot(resubPredict(gprbcd),'m-','LineWidth',2);
    legend('Data','PredictMethod BCD','Location','Best');
    xlabel('Observation index');
    ylabel('Response value');

График похож на тот для меньшего n.

Ссылки

[1] Grippo, L. и М. Скиэндроун. "На сходимости блока нелинейный метод гаусса-seifel при выпуклых ограничениях". Буквы Исследования операций. Издание 26, стр 127–136, 2000.

[2] Филиал, L. и К. Сминчисеску. "Блок Greed координирует спуск для крупномасштабной Гауссовой регрессии процесса". В Продолжениях Двадцать четвертой Конференции по Неопределенности в Искусственном интеллекте (UAI2008): http://arxiv.org/abs/1206.3238, 2012.

Смотрите также

|

Похожие темы