Elvira Clement committed Sep 06, 2021 1 # Safe screening rules for the identification of zeros in the solution of the Slope problem  Elvira Clement committed Sep 06, 2021 2   Elvira Clement committed Sep 06, 2021 3 4 5 6 7 8 9 10 11 12 13 14 15 This repository contains numerical procedure to evaluate the solution of the SLOPE problem with / without safe screening [1]. More precisely, the SLOPE problem is defined as math \text{Find } \mathbf{x}^\star\in\underset{\mathbf{x}\in\mathbb{R}^n}{\arg\min}\; \frac{1}{2}\left\Vert \mathbf{y} - \mathbf{A}\mathbf{x} \right\Vert_2^2 + \lambda\sum_{k=1}^n \gamma_k\vert\mathbf{x}\vert_{[k]}  where  Elvira Clement committed Sep 06, 2021 16 17 18 19 20  - $\mathbf{x}\in\mathbb{R}^m$ is the observation vector - $\mathbf{A}\in\mathbb{R}^{m\times n}$ is the so-called dictionary - $\lambda>0$ a (positive) scalar - $\{\gamma_k\}_{k=1}^n$ a sequence of non-increasing nonnegative scalars such that $\gamma_1=1$, - $\vert\mathbf{x}\vert_{[k]}$ denotes the $k$th largest entry of $\mathbf{x}$ in absolute value  Elvira Clement committed Sep 06, 2021 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104  > [1] Clément Elvira, Cédric Herzet: “Safe rules for the identification of zeros in the solution of the Slope problem”, arXiv, septembre 2021; [arXiv:1911.07508](http://arxiv.org/abs/0000.00000) The above paper contains theoretical results and several applications that can be reproduced with this toolbox. This python toolbox is currently under development and is hosted on Gitlab. If you encounter a bug or something unexpected please let me know by [raising an issue](https://gitlab-research.centralesupelec.fr/2020elvirac/slope-screening/-/issues) on the project page or by contacting me by mail. ## Requirements This toolbox works with python 3.5+. Dependencies: - [NumPy](http://www.numpy.org) - [SciPy](https://www.scipy.org) - [Matplotlib](http://matplotlib.org) ## Install from sources 1. Clone the repository bash git clone https://gitlab-research.centralesupelec.fr/2020elvirac/slope-screening  2. Enter the folder bash cd slope-squeezing  3. (Optional) Create a virtual environment and activate it bash virtualenv venv -p python3 source venv/bin/activate  4. Install the dependencies bash pip install -r requirements.txt  5. And execute setup.py bash pip install .  or bash pip install -e .  if you want it editable. ## Running the experiments bash cd experiments/SIAM python exp.py python vizu.py  or bash python python vizu.py --save  if you want to save the plot. ## Licence This software is distributed under the [CeCILL Free Software Licence Agreement](http://www.cecill.info/licences/Licence_CeCILL_V2-en.html) ## Cite this work If you use this package for your own work, please consider citing it with this piece of BibTeX: bibtex @article{Elvira2019arxiv, Author = {Elvira, Cl\'ement and Herzet, C\'edric}, Journal = {}, Month = {}, Pdf = {}, Title = {Safe rules for the identification of zeros in the solution of the Slope problem}, Year = {2021}, }