弹性网 ElasticNet

在最小二乘的基础上增加对参数的约束,使得参数越小越好,越靠近 0 越好

什么是弹性网?

  • 使用 L1 正则化、L2 正则化练的线性回归模型,该模型允许学习一个稀疏参数,其中很少权重是非 0 的。当有多个相互关联的特征时,弹性网络很有用。Lasso 可能会随机选择其中之一,而 elastic-net 可能会同时选择两

    minw12nsamplesXwy22+αρw1+α(1ρ)2w22\min_{w} { \frac{1}{2n_{\text{samples}}} ||X w - y||_2 ^ 2 + \alpha \rho ||w||_1 + \frac{\alpha(1-\rho)}{2} ||w||_2 ^ 2}

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >>> from sklearn.linear_model import ElasticNet
    >>> from sklearn.datasets import make_regression
    >>> X, y = make_regression(n_features=2, random_state=0)
    >>> regr = ElasticNet(random_state=0)
    >>> regr.fit(X, y)
    ElasticNet(random_state=0)
    >>> print(regr.coef_)
    [18.83816048 64.55968825]
    >>> print(regr.intercept_)
    1.451...
    >>> print(regr.predict([[0, 0]]))
    [1.451...]

什么是多任务弹性网络?

  • 估计多个回归问题共同稀疏系数的弹性网,最小化目标函

    minW12nsamplesXWYFro2+αρW21+α(1ρ)2WFro2\min_{W} { \frac{1}{2n_{\text{samples}}} ||X W - Y||_{\text{Fro}}^2 + \alpha \rho ||W||_{2 1} + \frac{\alpha(1-\rho)}{2} ||W||_{\text{Fro}}^2}

    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> from sklearn import linear_model
    >>> clf = linear_model.MultiTaskElasticNet(alpha=0.1)
    >>> clf.fit([[0,0], [1, 1], [2, 2]], [[0, 0], [1, 1], [2, 2]])
    MultiTaskElasticNet(alpha=0.1)
    >>> print(clf.coef_)
    [[0.45663524 0.45612256]
    [0.45663524 0.45612256]]
    >>> print(clf.intercept_)
    [0.0872422 0.0872422]

简单描述弹性网络回归算法?

  • 弹性网络回归算法是套索回归算法和岭回归算法的混合体,在模型训练时,弹性网络回归算法综合使用 L1 正则化、L2 正则化两种正则化方法。当有多个相关的特征时,弹性网络回归算法是很有用的,套索回归算法会随机挑选算法中的一个,而弹性网络回归算法则会选择两个
  • 优点:允许弹性网络回归继承循环状态下岭回归的一些稳定性;在高度相关变量的情况下,它会产生群体效应;选择变量的数目没有限制;可以承受双重收缩