GitHub Link: https://github.com/mntabassm/SAEN-LARS
Title: Sequential Adaptive Elastic Net Approach and Sparsity (or Model) Order Detection with an Application to Single-snapshot Source Localization
Short Title: Sequential Adaptive Elastic Net | Sparsity (or Model) Order Detection
Authors: Muhammad Naveed Tabassum and Esa Ollila
Maintainer: Muhammad Naveed Tabassum
Date (Last update): 20.06.2018
The software package SAEN-LARS provides an implementation (and examples) of algorithms proposed in our following papers:
- "Sequential Adaptive Elastic Net Approach for Single-snapshot Source Localization" < https://doi.org/10.1121/1.5042363 >
- "Simultaneous Signal Subspace Rank and Model Selection with an Application to Single-snapshot Source Localization" < https://doi.org/10.23919/EUSIPCO.2018.8553171 >
In first paper and accordingly in this package, sequential adaptive elastic net (SAEN) approach applies the complex-valued pathwise method in the weighted elastic-net framework, named as c-PW-WEN, sequentially by decreasing the sparsity level (or order) from 3K to K in three stages. SAEN utilizes smartly chosen adaptive (i.e., data dependent) weights that are based on solutions obtained in the previous stage. The c-PW-WEN algorithm computes the WEN solution paths for different values of EN tuning parameter and then selects the best solution. To achieve this in a computationally efficient way, we develop a homotopy method that is a complex-valued extension of the least angle regression and shrinkage (LARS) algorithm for weighted Lasso problem, which we refer to as c-LARS-WLasso. It is numerically cost effective and avoids an exhaustive grid-search over candidate values of the regularization parameter.
NOTE: The c-PW-WEN algorithm contains both
- Lasso and EN as special cases for unit weights.
- Adaptive Lasso and adaptive EN as special cases for data-dependent weights.
For second paper, we develop the c-LARS-GIC method that is a two-stage procedure, where firstly precise values of the regularization parameter, called knots, at which a new predictor variable enters (or leaves) the active sets are computed in the Lasso solution path (using c-LARS-WLasso with unit weights). Active sets provide a nested sequence of regression models and GIC then selects the best model using c-LARS-GIC. The sparsity order of the chosen model serves as an estimate of the model order.
Demo | Example
The package contains a simple demo (Demo.mlx) that explains the usage of algorithms (of first paper) for direction-of-arrival (DoA) estimation with a uniform linear array (ULA) in compressed beamforming (CBF) application. Moreover, an example (Example.m) for setup 4 in the first paper is also included in the package. Another example (Example_GIC.m) in this package is for second simulation setup (i.e., Fig. 2) of the second paper, when the number of sensors in the ULA is n = 40.
NOTE: To have repeatable results, the pseudorandom number generator settings, in terms of seed and type, are provided along with scenarios data in the package as 'seed_data.mat' and 'seed_data_gic.mat'.
Download | Usage
The SAEN-LARS package contains following files:
README: This file.
Functions: Function files for implementation of algorithms proposed in both above mentioned papers.
- saen.m: The main function, sequential adaptive elastic net (SAEN) approach.
- cpwwen.m: Auxiliary function, called by the main function three times.
- clarswlasso.m: Auxiliary function for finding knots and respective solutions at found knots.
- clarsgic.m: Auxiliary function for detecting the true sparsity (or model) order and estimating corresponding solution.
Usage: The files for the demo and examples.
- Demo.mlx: A live script demo.
- Example.m: An example for DoA estimation with a ULA in CBF application.
- seed_data.mat: Scenario data and pseudorandom number generator settings.
- Example_GIC.m: An example for detection of sparsity (or model) order, i.e., the number of sources in CBF application.
- seed_data_gic.mat: Scenario data and pseudorandom number generator settings for application of c-LARS-GIC.
Download the package and extract the files into a folder with “full control” permission. Set the MATLAB home directory to the above folder. Thereafter, open either 'Demo.mlx', 'Example.m' or 'Example_GIC.m' file in MATLAB and follow the steps.