'L-BFGS' Algorithm Based on 'Blaze' for 'R' and 'Rcpp'

The 'L-BFGS' algorithm is a popular optimization algorithm for unconstrained optimization problems. 'Blaze' is a high-performance 'C++' math library for dense and sparse arithmetic. This package provides a simple interface to the 'L-BFGS' algorithm and allows users to optimize their objective functions with 'Blaze' vectors and matrices in 'R' and 'Rcpp'.


RcppLbfgsblaze

This package provides an implementation of the L-BFGS algorithm based on Blaze for R and Rcpp. The L-BFGS algorithm is a popular optimization algorithm for unconstrained optimization problems. Blaze is a high-performance C++ math library for dense and sparse arithmetic. The package provides a simple interface to the L-BFGS algorithm and allows users to optimize their objective functions with Blaze vectors and matrices in R and Rcpp.

Installation

You can install:

  • the latest development version from github with

    install.packages("remotes")
    remotes::install_github("ChingChuan-Chen/RcppLbfgsblaze")
    

If you encounter a bug, please file a reproducible example on github.

Logistic Model Fitting Benchmark

You can refer to the file logisticBenchmark.R to find the code. Below code and corresponding results show that RcppLbfgsblaze provides a fast and efficient algorithm for logistic model fitting. In the benchmark, RcppLbfgsBlaze is only slower than RcppNumerical, but faster than others.

```R
source(system.file("examples", "logisticBenchmark.R", package = "RcppLbfgsBlaze"))
# logistic model fitting benchmark for n = 10000, p = 100 and non-zero p = 6: nrep = 20
# Unit: milliseconds
#            expr      min        lq      mean    median        uq      max neval
#         glm.fit 254.8283 259.26340 277.47036 263.97765 283.17805 336.0213    20
#           optim  65.6519  69.05245  73.98623  70.32615  71.59410 148.2856    20
#      optim_arma  16.1281  16.97425  22.05490  17.81580  18.27810  94.6341    20
#          glmnet  38.5915  39.07820  44.26353  39.85460  41.21905 114.7233    20
#           lbfgs  85.7390  88.19755  96.58998  92.39210  94.74080 165.2018    20
#      lbfgs_arma  20.7813  21.87255  23.06615  22.71525  23.43450  29.2101    20
#   RcppNumerical   8.5511   9.06755   9.81808   9.54100   9.92005  16.1381    20
#  RcppLbfgsBlaze  10.0476  10.53910  11.26658  11.16235  11.59385  14.2053    20
```

When the sample size and number of predictors increase, RcppLbfgsBlaze will be faster than RcppNumerical and others. It shows that RcppLbfgsBlaze provides relatively fast algorithm comparing to otehrs.

```R
# logistic model fitting benchmark for n = 50000, p = 500 and non-zero p = 6: nrep = 20
# Unit: milliseconds
#            expr       min        lq      mean    median        uq       max neval
#      optim_arma  547.1768  556.3317  578.6516  576.7488  594.5491  632.7897    20
#      lbfgs_arma 1501.6494 1537.9691 1573.0044 1561.6261 1606.5876 1675.4529    20
#   RcppNumerical  250.6525  255.3796  263.2894  262.5797  269.0240  286.2630    20
#  RcppLbfgsBlaze  150.5987  154.8733  158.7338  156.8559  161.5664  173.0606    20
```

Above results are run on my desktop (i9-13900K, DDR5-4000 128GB).

Authors

Ching-Chuan Chen

License

MIT License

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.

install.packages("RcppLbfgsBlaze")

0.1.0 by Ching-Chuan Chen, 2 years ago


https://github.com/ChingChuan-Chen/RcppLbfgsBlaze, https://github.com/ChingChuan-Chen/LBFGS-blaze, https://github.com/ZJU-FAST-Lab/LBFGS-Lite, https://bitbucket.org/blaze-lib/blaze/src/master/


Report a bug at https://github.com/Chingchuan-chen/RcppLbfgsBlaze/issues


Browse source code at https://github.com/cran/RcppLbfgsBlaze


Authors: Ching-Chuan Chen [aut, cre, ctr] , Zhepei Wang [aut] (LBFGS-Lite) , Naoaki Okazaki [aut] (liblbfgs)


Documentation:   PDF Manual  


MIT + file LICENSE license


Imports Rcpp, RcppBlaze

Suggests tinytest, microbenchmark

Linking to Rcpp, RcppBlaze


See at CRAN