IPVM+ - An Improved Inexact Proximal-Newton-Type Method Utilizing Manifold Identification for Partly Smooth Regularized Optimization
This code implements the algorithm proposed in the following paper in C/C++. LEE Ching-pei. On the Iterate Convergence and Manifold Identification of Inexact Proximal-Newton-Type Methods Under a Sharpness Condition. 2020.
To compile the code, you will need a C++ compiler and BLAS and LAPACK libraries. To build, please specify suitable library options in Makefile and input the following in a Linux console.
$ make
Then the program ./train solves the optimization problem to obtain a model, and the program ./predict uses the model to predict on testing data.
Our code uses the same interface as LIBLINEAR.
We provide L1-norm-regularized problems as example, but the general framework can be applied to other regularized problem classes as well.
One just needs to provide related function implementation realizing the regularized_fun class in linear.cpp.
A large part of the code is extended from our previous projects MADPQN and DPLBFGS.
The code solves the following problems that have a dimensionality of n and the inputs are of the LIBSVM format.
(1): the L1-regularized logistic regression problem.
min_{w} |w|_1 + C \sum_{i=1}^l \log(1 + \exp(- y_i w^T x_i))
with y_i being either -1 or +1 and with a user-specified parameter C > 0,
(2): the L1-Regularized least-sqaure regression (LASSO) problem.
min_{w} |w|_1 + C \sum_{i=1}^l (w^T x_i - y_i)^2 / 2.
with y_i being real numbers and with a user-specified parameter C > 0, and
(3): the L1-regularized L2-loss support vector classification problem.
min_{w} |w|_1 + C \sum_{i=1}^l \max\{0,1 - y_i w^T x_i, 0\}^2.
with y_i being either -1 or +1 and with a user-specified parameter C > 0.
The parameter C in the formulation listed above is specified through -c in train.
In the IPVM+_LBFGS solver, we use the previous update directions and gradient differences to construct the approximation of the Hessian of the smooth part. The parameter m decides that we use the latest m iterations to construct such an approximation.
The algorithm is terminated when Q_t <= \epsilon Q_0 for a given epsilon, where Q_t is the objective of the subproblem at the t-th outer iteration. This parameter is specified by -e in train.