r中的函数最小化与参数函数的约束

时间:2017-04-03 15:26:09

标签: r optimization constraints minimization

R中有许多库可用于执行最小化。但是,我能找到的所有内容(例如rcgmin或optimx)只允许输入参数的上限和上限:

opt_Params <- Rcgmin(par = Params_init,
                     fn = cost_func,
                     gr = params_grad,
                     lower = min_par,
                     upper = max_par
                     )

我正在寻找不同的东西:边界不在输入参数上,而是在接受它们的函数的值上。

具体来说,我的cost_func是一个成本函数,它测量我的(固定)观测数据Y_obs与我拟合参数Y_calc的预测之间的残差平方和:

cost_func <- function(Params) {
        X <- Params[1:(num_items*num_features)]
        dim(X) <- c(num_items,num_features)

        Theta <- Params[(num_items*num_features+1):length(Params)]
        dim(Theta) <- c(num_users,num_features)

        Y_calc <- X * t(Theta)
        J <- ((Y_calc - Y_obs) * (Y_calc - Y_obs))

        cost <- sum(rowSums(J)[])

        return(cost)
}

最小化费用功能,我可以确保我的预测Y_calc更接近Y_obs

然而,这允许Y_calc中的任意值。我想要做的是强加同样的边界,我知道它存在于Y_obs中(0到10之间 - 这是一种协同过滤算法)。 所以我不是试图对我的输入参数设置约束,而是根据它们的函数(即Y_calc <- X * t(Theta)的每个元素)。

是否有可能的R最小化库?或者我需要改变我的方法吗?

0 个答案:

没有答案