我在Matlab2013a中使用lasso函数。它的工作如下:
X = randn(100,5);
r = [0;2;0;-3;0];
Y = X*r + randn(100,1)*.1;
%Construct the lasso fit using ten-fold cross validation. Include the FitInfo
%output so you can plot the result.
[B FitInfo] = lasso(X,Y,'CV',10); %B is a p-by-L matrix, where p is the %number of predictors (columns) in X, and L is the number of Lambda values
%Plot the cross-validated fits.
lassoPlot(B,FitInfo,'PlotType','CV');

绿色圆圈和虚线定位Lambda时,交叉验证误差最小.蓝色圆和虚线定位点的交叉验证误差最小加上一个标准差。
因此,我所理解的是,绿色圆对应于λ的最佳值,它将误差降到最低。,但我如何“自动”(不需要绘制图形)找到向量B,它对应于图形中以绿色圆圈表示的λ值?
任何帮助都将非常感谢!
发布于 2015-09-01 15:47:28
根据文档,它应该在FitInfo.Lambda中,这是一个包含lambdas的1xL向量。您可能可以使用min(FitInfo.Lambda)找到它。如果将CV名称-值对设置为cross validate,则FitInfo结构包含其他字段:FitInfo.LambdaMinMSE,这正是您要寻找的值。
多亏了@Christina,这是一种略显简洁的写作方式:
bestValue = find(FitInfo.Lambda == FitInfo.LambdaMinMSE)这将为您提供最小lambda位于数组L中的索引。
https://stackoverflow.com/questions/32334777
复制相似问题