Scikit Learn - 多任务弹性网络



多任务弹性网络

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

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

$$\displaystyle\min\limits_{W}\frac{1}{2n_{samples}}\lVert X_{W}-Y\rVert_{fro}^2+\alpha\rho\lVert W\rVert_{21}+\frac{\alpha\lgroup 1-\rho\rgroup}{2}\ \lVert W\rVert_{fro}^2$$

与MultiTaskLasso一样,这里Fro也表示弗罗贝尼乌斯范数:

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

而L1L2则导致:

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

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

并且,与ElasticNet相反,MultiTaskElasticNet没有precompute属性。

实现示例

为了展示差异,我们将实现与多任务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)

示例

#Predicting new values
MTENReg.predict([[1,0]])

输出

array([[0.69056563, 0.69056563]])

示例

#weight vectors
MTENReg.coef_

输出

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

示例

#Calculating intercept
MTENReg.intercept_

输出

array([0.38118338, 0.38118338])

示例

#Calculating number of iterations
MTENReg.n_iter_

输出

15
广告
© . All rights reserved.