Lasso原理与Python实现
-
lasso原理
-
Python实现
Lasso 原理
在一般的回归情形中,对于数据集 ( x i , y i ) \left(\mathrm{x}^{i}, y^{i}\right) (xi,yi),最小二乘法估计通过计算预测值与真实值之间的最小平方和对数据进行预测,但是数据分析不常满足最小二乘估计,而提升最小二乘估计的两个标准技术:子集选择与岭回归都存在缺陷。子集选择通过从特征中选择部分特征的方法建立模型,但数据中很小的变化就能导致不一样的模型,因此子集选择降低了预测的准确度。而岭回归不把任何系数设置为0,并不提供易于解释的模型。
针对以上问题,作者提出了Lasso方法,即“最小绝对值收敛和选择算子”,从本质上说,Lasso方法能够收缩系数并将一些系数设置为0,保留了子集选择和岭回归的优点。
Lasso的公式为:
min β 1 2 ∥ y − ∑ i = 1 n x i β i ∥ 2 2 + λ ∥ β ∥ 1 \min _{\beta} \frac{1}{2}\left\|\mathbf{y}-\sum_{i=1}^{n} \mathbf{x}_{i} \beta_{i}\right\|_{2}^{2}+\lambda\|\beta\|_{1} minβ21∥y−∑i=1nxiβi∥22+λ∥β∥1
其中,前一项为最小二乘估计公式,后一项实际为正则化项L1。为计算使得误差最小的beta值,对公式做如下推导:
f = R S S ( w ) + λ ∥ w 1 ∥ 1 f=R S S(w)+\lambda\left\|w_{1}\right\|_{1} f=RSS(w)+λ∥w1∥1
= ∑ i = 0 N ( y i − ∑ j = 0 D w j x i j ) 2 + λ ∑ j = 0 D ∣ w j ∣ =\sum_{i=0}^{N}\left(y_{i}-\sum_{j=0}^{D} w_{j} x_{i j}\right)^{2}+\lambda \sum_{j=0}^{D}\left|w_{j}\right| =∑i=0N(yi−∑j=0Dwjxij)2+λ∑j=0D∣wj∣
∂ R S S ∂ W j \frac{\partial R S S}{\partial W_{j}} ∂Wj∂RSS