Experiments for the paper "Max-Discrepancy Distributed Learning: Fast Risk Bounds and Algorithms", based on a refined version of parameter sever: ps-lite.
We implement all methods in C++ and some utils in MATLAB, run scripts are written in Shell as well. Code used in experiments locates in ./code
We do experiments based on following softwares:
- g++ >= 4.8.0
- MATLAB R2017b
- ps-lite from https://github.com/dmlc/ps-lite
- Intel Math Kernel Library 2018
- All data sets are from https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/
- util.h: some util functions, including efficient matrix computation based on Intel® Math Kernel Library.
- ridge_regression.h and ridge_regression.cc are used to define a RR class, which is used to implement RR, DRR and MDD-LS.
- kernel_ridge_regression.h and kernel_ridge_regression.cc are used to define a KRR class, but it is only used to implement KRR.
- dist_krr.h and dist_krr.cc are used to define a distributed KRR class, which is used to implement KDRR and MDD-RKHS.
- test_gaussian_kernel.cc is used to generate gaussian kernel efficiently.
- test_krr_central.cc is used to test global KRR method.
- test_krr_dist.cc is used to test KDRR and MDD-RKHS methods, which is implemented based on ps-lite.
- test_rr_central.cc is used to test global RR method.
- test_rr_dist.cc is used to test DRR and MDD-LS methods, which is also implemented based on ps-lite.
- feature_map.m is used to mapping feature to [0, 1] and do random shuffle operation to datasets.
- make.sh is used to complile the code.
- cross_validation_file.sh is used to split file and mv the to certain dictionary.
- gaussian_kernel.sh is used to generate different kernels.
- distributed.sh is used to run distributed methods including DRR, KDRR, MDD-LS and MDD-RKHS.
- AllInOne.sh is a simple script to run all test.