MyNixOS website logo
Description

R Binding for the 'Certifiably Optimal RulE ListS (Corels)'.

The 'Certifiably Optimal RulE ListS (Corels)' learner by Angelino et al described in <arXiv:1704.01701> provides interpretable decision rules with an optimality guarantee, and is made available to R with this package. See the file 'AUTHORS' for a list of copyright holders and contributors.

corels: R interface to 'Certifiably Optimal RulE ListS' (Corels)

CI License CRAN Dependencies Downloads

What is it?

CORELS is a custom discrete optimization technique for building rule lists over a categorical feature space. The algorithm provides the optimal solution with a certificate of optimality. By leveraging algorithmic bounds, efficient data structures, and computational reuse, it achieves several orders of magnitude speedup in time and a massive reduction of memory consumption. This approach produces optimal rule lists on practical problems in seconds, and offers a novel alternative to CART and other decision tree methods.

See the C++ implementation, the live website, the Python implementation, the arXiv paper, the JMLR paper, the senior thesis or the KDD 2017 paper for more.

More about Corels can also be read in this recent post at The Morning Paper.

Illustration

With thanks to the Python implementation for the image.

What is this package?

We use Rcpp to connect the Corels C++ implementation to R.

Status

Installs and works fine, and passed R CMD check. Several extensions possible, see below.

Installation

As the package is not (yet?) on CRAN, do

remotes::install_github("eddelbuettel/rcppcorels")

Note of the GNU GMP library is now optional; configure will enable (via a -DGMP define and link instructions) if found. GMP will improve performance, so you may want to do sudo apt-get install libgmp-dev, or whatever equivalent command you need to install it on your system.

TODOs

Plenty such as adding Travis CI support, adding configure code to detect GNU GMP presence, adding examples, factoring out (input) data reader code, possibly visualizing decision trees, and more.

Author

Dirk Eddelbuettel wrote the R package and integration.

Nicholas Larus-Stone and Elaine Angelino wrote the C++ implementation of Corels.

Elaine Angelino, Nicholas Larus-Stone, Daniel Alabi, Margo Seltzer, and Cynthia Rudin wrote the paper.

Corels uses the rulelib library by Yang et al described in the 2016 arXiv paper by Hongyu Yang, Cynthia Rudin, and Margo Seltzer with this code repo and in the 2015 arXiv paper by Benjamin Letham, Cynthia Rudin, Tyler H. McCormick and David Madigan now published in Annals of Statistics.

License

This package is released under the GPL-3, as is Corels.

The rulelib library is released under the MIT license.

Metadata

Version

0.0.4

License

Unknown

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows