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

