机器学习-05 基于sklearn 广义线性模型- MultiTaskLasso
用线性回归拟合曲线方程——分段线性化
要想把MultiTaskLasso说明白,我们需要从它的一个应用说起。在sklearn官方手册中提供了这么一个例子,让我们利用线性回归的方法去拟合一个曲线方程。如图所示:
那么怎么用线性回归去拟合曲线方程呢,在程序里提供了这么一个思路。我们可以把这个曲线分成数段,每一段看成一条直线,那么当分的份数足够多时,就可以近似看成一条曲线。于是,我们就引入了一个思想,叫做极限的思想,笔者想在这里夸夸这种思想,因为这是跨世纪的发现。这里面有着牛顿与莱布尼兹之争,且极限也是高等数学的基础,“曾经有一棵树,叫做高数,上面挂了很多人。”在计算不规则图形面积时,就用到了极限,我们把每一段近似看成长方形,那么就可以求各段长方形的面积,加在一起就是不规则图形的面积。另外一个应用就是,用多边形近似等于圆形。
既然使用了分段线性化,那么如果分成n段,我们岂不是要训练n个线性方程,那么输出岂不是有n个表达式,如果每个表达式的系数是m个,那岂不是要训练m*n个系数,是这样吗,是的。
那么这样的话,我们用分段线性化的思想,任何一种线性回归的算法其实都可以拿来用。那么为什么要提出MultiTaskLasso算法呢。其实这就要说到多任务学习了,我们观看图像就不难发现,这个曲线是sin(x)函数,sin函数之间是有联系的。如果我们只是简单的分段线性化,那么就割裂了每一段之间的联系,就没有考虑每一段之间的相互影响。分段的思想不单要能分开,还要能再次聚在一起。“聚是一团火,散做满天星”,就是这个道理。而MultiTaskLasso考虑了每一段之间的联系,这也就是为什么MultiTaskLasso的效果要好于Lasso的原因了。
MultiTaskLasso
接下来,我们就可以抄公式了。O(∩_∩)O哈哈~
MultiTaskLasso 是一个估计多元回归稀疏系数的线性模型: y 是一个形状为(n_samples, n_tasks) 的二维数组,其约束条件和其他回归问题(也称为任务)是一样的,都是所选的特征值。其中n_samples代表每段线性方程的系数个数,n_tasks代表线性方程的个数。
在数学上,它由一个线性模型组成,以混合的 ℓ 1 ℓ 2 \ell_1 \ell_2 ℓ1ℓ2 作为正则化器进行训练。目标函数最小化是:
m i n w 1 2 n s a m p l e s ∣ ∣ X W − Y ∣ ∣ F r o 2 + α ∣ ∣ W ∣ ∣ 21 \underset{w}{min\,} { \frac{1}{2n_{samples}} ||X W - Y||_{Fro} ^ 2 + \alpha ||W||_{21}} wmin2