Jensen: A toolkit with API support for Convex Optimization and Machine Learning For further documentation, please see https://arxiv.org/abs/1807.06574
Copyright (C) Rishabh Iyer, John T. Halloran, and Kai Wei Licensed under the Open Software License version 3.0 See COPYING or http://opensource.org/licenses/OSL-3.0
- Rishabh Iyer
- John Halloran
- Kai Wei
- Convex Function API
- Base class for convex optimization
L1LogistocLoss
andL2LogistocLoss
,L1SmoothSVMLoss
andL2SmoothSVMLoss
,L1HingeSVMLoss
andL2HingeSVMLoss
,L1ProbitLossLoss
andL2ProbitLoss
,L1HuberSVMLoss
andL2HuberSVMLoss
,L1SmoothSVRLoss
andL2SmoothSVRLoss
,L1HingeSVMLoss
andL2HingeSVMLoss
- Convex Optimization Algorithms API
Trust Region Newton
(TRON)LBFGS Algorithm
LBFGS OWL
(L1 regularization)Conjugate Gradient Descent
Dual Coordinate Descent for SVMs
(SVCDual)Gradient Descent
Gradient Descent with Line Search
Gradient Descent with Nesterov's algorithm
Gradient Descent with Barzilai-Borwein step size
Stochastic Gradient Descent
Stochastic Gradient Descent with AdaGrad
Stochastic Gradient Descent with Dual Averaging
Stochastic Gradient Descent with Decaying Learning Rate
- ML Classification API
L1 Logistic Regression
,L2 Logistic Regression
L1 Smooth SVM
L2 Smooth SVM
L2 Smooth SVM
- ML Regression API
L1 Linear Regression
L2 Linear Regression
L1 Smooth SVRs
L2 Smooth SVRs
L2 Hinge SVRs
- Install CMake
- Go to the main directory of jensen
- mkdir build
- cd build/
- cmake ..
- make
Once you run make, it should automatically build the entire library. Once the library is built, please try out the example codes in the build directory.
To test the optimization algorithms please run the test executables: ./TestL1LogisticLoss ./TestL2LogisticLoss ./TestL1SmoothSVMLoss ./TestL2LeastSquaresLoss etc.
You can also play around with the examples for testing classification and regression models. You can try them out as: ./ClassificationExample -trainFeatureFile ../data/heart_scale.feat -trainLabelFile ../data/heart_scale.label -testFeatureFile ../data/heart_scale.feat -testLabelFile ../data/heart_scale.label Optionally you can also play around with the method (L1LR, L2LR etc.), the algtype (LBFGS, TRON etc.), the regularization and so on.