Details of the Program:

ease_acc.py     # Calcualte the model (parameter matrix) of EASE by closed-form solution.  
base1_acc.py    # Calculate training error and test error of the model generated by ease_acc.py.
bound2_acc2.py   # Calculate the PAC-Bayes bound according to Algorithm 1 in our paper.
accelib1.py     # GPU accelerated linear algebra algorithms.

Dependent Libraries: numpy, pandas, scipy, cupy

Hardware Requirements: Nvidia A100 GPU (80G memory)
* Depend on how large your dataset is, we calculate eigenvalue decomposition of a 40000 x 40000 symmetric matrix in double precision, which takes around 60G GPU memory. The GPU usage mainly depends on the number of columns of the matrix R. The program should be able to run on a GPU with smaller memory if R has fewer columns.

Dataset: We provide Yelp2018 dataset for testing the program. This dataset is of the smallest size among all datasets we used in experiments (But when you expand it to a dense matrix, it would very large). Other datasets are too large and exceed the size limit for uploading.

Run time: For bound2_acc2.py, the Yelp2018 dataset on our machine takes around 1.5 hours to complete.

Usage: By default the program tests Yelp2018 dataset: Run ease_acc.py, base1_acc.py and bound2_acc2.py in sequence. It can be applied to you customized dataset or parameter settings by modifying the code.

This program is still in debug version. The program is complete, but the printing information for debugging is not removed. We will provide a formal version later.
