- 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
广告