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.