LASSO回归增加了l2正则罚项,再小也不能保留建模时的所有变量,降低模型的复杂度。
LASSO回归,不重要的回归系数缩小为0。
LASSO回归模型的目标函数:
使用坐标轴下降法:
在迭代算法中,坐标轴下降法沿坐标轴下降,梯度下降沿梯度的负方向下降。 对于p维参数的可微凸函数j(b ),如果点b存在使得函数j ) b )对于每个坐标轴为最小值,则j ) b )是b上的全局最小值。
坐标轴下降法对目标函数中的某个Bi建立偏导数。 即,通过不变地控制其他p-1个参数,沿一个轴的方向求出导数,并且对剩馀的p-1个参数求出导数,将每个分量的导数设为0,得到目标函数成为全局最小值。
其中ess(b )表示误差平方和,(lambdal ) b表示惩罚项,
假设XIJ=HJ(Xi )
令
惩罚项是非导数,所以不能直接用梯度法,用副梯度法解决非导凸函数的最小值。
对某些分量Bj来说,惩罚项是lambda|Bj|
副导数如下。
为了求解最终的LASSO回归函数,需要结合ESS和l1的分量导数,使函数为0
如下所示。
1 .可视化
选定的惩罚系数lambda的值
froms klearn.linear _ modelimportlasso,lassocvlasso(alpha=1.0,fit_intercept,normalize,precompute, copy_X selection='cyclic ' ) #precompute :通过在建模前计算Gram矩阵来提高运算速度,缺省False#copy_X :复制参数x的数值#tol :模型收敛warm_start :上次训练结果为下一个开始的默认false#positive :将回归系数强制为正数#selection :反复时选择的回归系数#random :随机更新回归系数#cyclic :更新上次的回归系数forlambdainlambdas : lasso=lasso (alpha=lambda,normalize=True,max_iter=10000 ) lasso.fit ) x_train, y _ train (lasso _ coefficients.append ) lasso.coef_ ) PLT.plot ) lambdas,lasso _ coefficients (PLT.xscale )
2 .交叉核对
lassocv(EPS=0.001,n_alphas,alphas,fit_intercept,normalize,precompute,max_iter,tol,copy_X, 指定cv selection(#EPS )规范化路径的长度,指定默认值0.001、指定lambda的最大值和最小值的商#n_alphas )规范化lambda的数量,以及默认100个#verbose )列表使用n_jobs )并行处理lasso的normalize=True,cv=10,max_iter=10000 ) lasso_cv.fit(x_train,y_train ) lasso
基于Lasso的Lasso回归模型重构
lasso=lasso (alpha=lasso _ best _ alpha,normalize=True,max_iter=10000 ) lasso.fit ) y_train,y _ trairaize