Companion code for "PROMISE: Preconditioned Stochastic Optimization Methods by Incorporating Scalable Curvature Estimates". We provide detailed instructions for reproducing each plot in the paper.
📝 Note
We plan to create a version of PROMISE that is easy for practitioners to use in the near future!
-
Download the required datasets to a new folder
data
by runningpython download_data.py
. You may have to use the commanddata_fixes.sh ./data
to fix some issues in the higgs, susy, and webspam datasets. To use the yelp dataset in the showcase experiments , please visit https://www.yelp.com/dataset and preprocess the dataset usingyelp_preprocessing.py
. -
Remove the folders
performance_results
,suboptimality_results
,showcase_results
,streaming_results
,sensitivity_results
,spectra_results
, andregularity_results
.
After completing the preliminary steps, we can run shell scripts (.sh
) in the config
folder and notebooks (.ipynb
) in the plotting
folder to generate the plots.
First, please run sklearn_opt_least_squares.sh
, sklearn_opt_logistic.sh
, sklearn_opt_least_squares_mu_1e-1.sh
, and sklearn_opt_logistic_mu_1e-1.sh
.
Then run performance_exp_least_squares.sh
, performance_exp_logistic.sh
, performance_exp_least_squares_mu_1e-1.sh
, and performance_exp_logistic_mu_1e-1.sh
.
Once these scripts are finished running, please run performance_results_plots.ipynb
.
Please run suboptimality_exp_least_squares.sh
and suboptimality_exp_logistic.sh
.
Once these scripts are finished running, please run suboptimality_results_plots.ipynb
.
Please run showcase_exp_url.sh
, showcase_exp_yelp.sh
, and showcase_exp_acsincome.sh
.
Once these scripts are finished running, please run showcase_results_plots.ipynb
. This notebook will also generate Figure 1 in the Introduction (Section 1).
Please run streaming_exp_logistic_higgs.sh
and streaming_exp_logistic_susy.sh
.
Once these scripts are finished running, please run streaming_results_plots.ipynb
.
Please run sensitivity_exp_least_squares.sh
, sensitivity_exp_logistic.sh
, and compute_spectra.sh
.
Once these scripts are finished running, please run sensitivity_results_plots.ipynb
and spectrum_results_plots.ipynb
.
Please run regularity_exp_logistic.sh
.
Once this script is finished running, please run regularity_results_plots.ipynb
.
⚠️ Warning
Running all the experiments can take a lot of time. If you would like to generate plots based on existing results inperformance_results
,suboptimality_results
,showcase_results
,streaming_results
,sensitivity_results
,spectra_results
, andregularity results
, just run the corresponding notebooks mentioned above.