Scikit Learn - MultiTaskElasticNet

MultiTaskElasticNet

它是一个弹性网络模型,可以联合拟合多个回归问题,强制所有回归问题(也称为任务)的选定特征相同。Sklearn 提供了一个名为 MultiTaskElasticNet 的线性模型,该模型使用混合 L1、L2 范数和 L2 正则化进行训练,可以联合估计多个回归问题的稀疏系数。其中,响应 y 是一个形状为 (n_samples, n_tasks) 的二维数组。

以下是最小化 − 的目标函数:

$$\displaystyle\min\limits_{W}\frac{1}{2n_{samples}}\lVert X_{W}-Y Vert_{fro}^2+\alpha ho\lVert W Vert_{21}+\frac{\alpha\lgroup 1- ho group}{2}\ \lVert W Vert_{fro}^2$$

与 MultiTaskLasso 一样,此处的 Fro 表示弗罗贝尼乌斯范数 −

$$\lVert A Vert_{Fro}=\sqrt{\displaystyle\sum\limits_{ij}}a_{ij}^2$$

L1L2 导致以下内容 −

$$\lVert A Vert_{21}=\displaystyle\sum\limits_{i} \sqrt{\displaystyle\sum\limits_{j}}a_{ij}^2$$

MultiTaskElasticNet 的 参数 和 属性 与 ElasticNet 类似。唯一的区别在于 li_ratio,即 ElasticNet 混合参数。在 MultiTaskElasticNet 中,其范围是 0 < l1_ratio < = 1。如果 l1_ratio = 1,则惩罚为 L1/L2 惩罚。如果 l1_ratio = 0,则惩罚为 L2 惩罚。如果 l1 比率的值介于 0 和 1 之间,则惩罚项将是 L1/L2 和 L2 的组合。

此外,与 ElasticNet 相反,MultiTaskElasticNet 没有 precompute 属性。

实现示例

为了展示差异,我们实现了与 Multi-task Lasso 中相同的示例。 −

from sklearn import linear_model
MTENReg = linear_model.MultiTaskElasticNet(alpha = 0.5)
MTENReg.fit([[0,0], [1, 1], [2, 2]], [[0, 0],[1,1],[2,2]])

输出

MultiTaskElasticNet(alpha = 0.5, copy_X = True, fit_intercept = True, l1_ratio = 0.5,
max_iter = 1000, normalize = False, random_state = None,
selection = 'cyclic', tol = 0.0001, warm_start = False)

示例

#预测新值
MTENReg.predict([[1,0]])

输出

array([[0.69056563, 0.69056563]])

示例

#权重向量
MTENReg.coef_

输出

array([[0.30943437, 0.30938224],
[0.30943437, 0.30938224]])

示例

#计算截距
MTENReg.intercept_

输出

array([0.38118338, 0.38118338])

示例

#计算迭代次数
MTENReg.n_iter_

输出

15