首先需要做的事,就是选择出一些lambda的备选值,并且以2倍的速度进行增长选取。对于特定的lambda,极小化损失函数得到最优参数,再在验证集上观察验证损失。
加入我们选取了12个备选的lambda值,那么可以得到12组参数以及12个验证损失,我们比较这12个验证损失的值,找出最小的,就是最合适的lambda的值,然后再在测试集上测试。
下面来分析下随着lambda的变化,学习曲线的变化情况,当lambda很小的时候,最极端的是等于0,相当于没有正则项,那么很容易过拟合,而且模型偏复杂,这时候方差比较大,在训练集上表现很好,但是在验证集上表现并不是很好。但是当lambda很大的时候,那么这时候参数都很小,趋近于0,那么只有常数项,此时模型会有很大的偏差,那么训练误差和验证误差都很大。
但是当我们为模型选择合适的复杂度的时候,会得到一个验证误差的最优值,其实此时也是我们应该选择的lambda的值哦~~
如何比较lasso模型和alasso模型的优劣glmnet和lars一样都可以得到整个path,glmnet里面用的是CV选择的最优lambda,本身可以直接求解lasso估计,BIC直接根据其definition formula编写一个小的function来计算。你用glmnet得到的最优lambda不能直接用于计算adaptive lasso估计,因为两者对应的最优lambda不一定相同,都可以按照CV或者BIC来选择。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)