Ограниченная оптимизация с запаздывающей регрессией - PullRequest
0 голосов
/ 06 апреля 2019

Я пытаюсь закодировать проблему выпуклой оптимизации, используя пакет CVXR в R, и пытаюсь переформулировать целевую функцию в нечто выпуклое, если, на самом деле, это возможно.

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

equation

Таким образом, это в основном фактор-ориентир, заключенный в оптимизацию наименьших квадратов с ограничением.Я надеюсь, что это можно сделать как задачу выпуклой оптимизации, потому что я минимизирую сумму квадратов ошибок во внешней функции, но внутренние бета-версии оказались проблематичными до сих пор.

Вот воспроизводимая попытка кодирования этого:

library(CVXR)

# number of inner beta variables
IB <- 4
# number of outer beta variables
OB <- 3

n <- 102
Y <- rnorm(n-2,mean=1,sd=2)

# F Matrix
F.mat <- matrix(rnorm(n * IB),ncol=IB)

# establish variables for optimization
InnerBetas <- Variable(IB)
OuterBetas <- Variable(OB)

# Set up objective function
OB_IB.obj <- Minimize(sum((Y - (OuterBetas[1] * (F.mat %*% InnerBetas)[1:100] +
                                OuterBetas[2] * (F.mat %*% InnerBetas)[2:101] + 
                                OuterBetas[3] * (F.mat %*% InnerBetas)[3:102]))^2))

#> Error in OuterBetas[1] * (F.mat %*% InnerBetas)[1:100]: 
#> Cannot multiply elementwise AFFINE and AFFINE

Это работает, если я подключаю номера для внутренних или внешних бета-версий и оптимизирую для других, но вы увидите, когда я попробуючтобы сформулировать эту целевую функцию я получаю вышеуказанную ошибку.Есть ли способ сформулировать это так, чтобы оно было выпуклым?

...