Class QNMinimizer

java.lang.Object
opennlp.tools.ml.maxent.quasinewton.QNMinimizer

public class QNMinimizer extends Object
Implementation of L-BFGS which supports L1-, L2-regularization and Elastic Net for solving convex optimization problems.

Usage example:

  // Quadratic function f(x) = (x-1)^2 + 10
  // f obtains its minimum value 10 at x = 1
  Function f = new Function() {

    @Override
    public int getDimension() {
      return 1;
    }

    @Override
    public double valueAt(double[] x) {
      return StrictMath.pow(x[0]-1, 2) + 10;
    }

    @Override
    public double[] gradientAt(double[] x) {
      return new double[] { 2*(x[0]-1) };
    }

  };

  QNMinimizer minimizer = new QNMinimizer();
  double[] x = minimizer.minimize(f);
  double min = f.valueAt(x);
 
  • Field Details

  • Constructor Details

    • QNMinimizer

      public QNMinimizer()
    • QNMinimizer

      public QNMinimizer(double l1Cost, double l2Cost)
    • QNMinimizer

      public QNMinimizer(double l1Cost, double l2Cost, int iterations)
    • QNMinimizer

      public QNMinimizer(double l1Cost, double l2Cost, int iterations, int m, int maxFctEval)
    • QNMinimizer

      public QNMinimizer(double l1Cost, double l2Cost, int iterations, int m, int maxFctEval, boolean verbose)
      Constructor
      Parameters:
      l1Cost - L1-regularization cost
      l2Cost - L2-regularization cost
      iterations - maximum number of iterations
      m - number of Hessian updates to store
      maxFctEval - maximum number of function evaluations
      verbose - verbose output
  • Method Details

    • getEvaluator

      public QNMinimizer.Evaluator getEvaluator()
    • setEvaluator

      public void setEvaluator(QNMinimizer.Evaluator evaluator)
    • minimize

      public double[] minimize(Function function)
      Find the parameters that minimize the objective function
      Parameters:
      function - objective function
      Returns:
      minimizing parameters