Generalized Elastic Net

pip install generalized-elastic-net==1.0.1


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


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([1] * 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)
>>>, 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]