Generalized Elastic Net

# Generalized Elastic Net Library

Generalized elastic net is a penalty method for variable selection and regularization in high-dimensional sparse linear models. It generalizes and outperforms the lasso, ridge, and nonnegative elastic net through (1) capturing the penalty weights for individual features or/and interactions between any two features; (2) controling the range of the coefficients.

The algorithm is available through this public Python library. It applys multiplicative updates on a quadratic programming problem but contains absolute values of variables and a rectangle-range constraint. The algorithm is shown to converge monotonically to the global in the publication.

## To install

The generalized elastic net library requires Python 3 and is pip friendly. To get started, simply do:

``````pip install generalized-elastic-net
``````

or check out the code from out GitHub repository. You can now use the package in Python with:

``````from generalized_elastic_net import GeneralizedElasticNet
``````

## Example

Input parameters:

``````>>> N = 3
>>> K = 4
>>> Xmat = np.random.randn(N, K)
>>> Yvec = np.random.randn(N)
>>> print(Yvec)
[-0.72166018 -0.18367545 -0.77768828]
>>> lam_1 = 0.0034
>>> lam_2 = 0
>>> sigma = np.diag( * K)
>>> wvec = np.ones(K)
>>> lowbo = -1e5 * np.ones(K)
>>> upbo = np.inf * np.ones(K)
``````

Fit the model:

``````>>> s = GeneralizedElasticNet(lam_1=lam_1, lam_2=lam_2, lowbo=lowbo, upbo=upbo, wvec=wvec, sigma=sigma)
>>> s.fit(Xmat=Xmat, Yvec=Yvec)
``````

Output prediction:

``````>>> print(s.predict(X=Xmat))
[-0.72167257 -0.18245943 -0.77582073]
``````

Output coefficients:

``````>>> print(s.coef_)
[-21095.74451325 -94129.49591188  25282.3047479  -10810.57632817]
``````

## Project details

This version 1.0.1 1.0.0 0.2.0 0.1.2 0.1.0

Uploaded `source`
Uploaded `py3`