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

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

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

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

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

α^= 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 и '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' должны быть эквивалентными. Они вычисляют то же самое, но только по-разному. Можно также видеть итерации при помощи аргумента пары "имя-значение" '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. Для вычисления использования 'PredictMethod','bcd' с 'BlockSize' 5 000. Аргумент пары "имя-значение" 'BlockSize' в fitrgp задает число элементов вектора, который программное обеспечение оптимизирует в каждой итерации. '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.

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

|

Похожие темы