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.
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
>>> 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)
>>> print(s.predict(X=Xmat)) [-0.72167257 -0.18245943 -0.77582073]
>>> print(s.coef_) [-21095.74451325 -94129.49591188 25282.3047479 -10810.57632817]