用于fminunc的matlab函数渐变

时间:2011-08-16 14:46:10

标签: algorithm math matlab gradient

f = @(w) sum(log(1 + exp(-t .* (phis * w'))))/size(phis, 1) + coef * w*w';
options = optimset('Display', 'notify', 'MaxFunEvals', 2e+6, 'MaxIter', 2e+6);
w = fminunc(f, ones(1, size(phis, 2)), options);
  • phis 尺寸为NxN + 1
  • t 尺寸为Nx1
  • coef 是const

我正在尝试最小化函数 f ,首先我使用 fminsearch ,但它工作时间很长,这就是为什么现在我使用 fminunc ,但有一个问题:我需要功能梯度来加速。你能帮我吗,请为函数 f 构建渐变,因为我总是得到这个警告:

Warning: Gradient must be provided for trust-region algorithm;
  using line-search algorithm instead.

1 个答案:

答案 0 :(得分:2)

您要做的事情被称为逻辑回归,具有L2正则化。有一个更好的方法来解决这个问题,而不是调用Matlab函数,因为对数似然函数是凹的。

您应该在the statistical website中提出问题,或者查看my former question there