- Scikit Learn 教程
- Scikit Learn - 首頁
- Scikit Learn - 簡介
- Scikit Learn - 建模流程
- Scikit Learn - 資料表示
- Scikit Learn - 估計器API
- Scikit Learn - 約定
- Scikit Learn - 線性模型
- Scikit Learn - 擴充套件線性模型
- 隨機梯度下降
- Scikit Learn - 支援向量機
- Scikit Learn - 異常檢測
- Scikit Learn - K近鄰演算法
- Scikit Learn - KNN學習
- 樸素貝葉斯分類
- Scikit Learn - 決策樹
- 隨機決策樹
- Scikit Learn - 整合方法
- Scikit Learn - 聚類方法
- 聚類效能評估
- 使用PCA進行降維
- Scikit Learn 有用資源
- Scikit Learn - 快速指南
- Scikit Learn - 有用資源
- Scikit Learn - 討論
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
廣告