在Matlab中使用套索进行一次性回归

时间:2014-04-14 01:53:43

标签: matlab regression cross-validation glmnet lasso

我有300个数据样本,每个样本大约有4000个维度。每个输入都有5个暗淡。输出在-2到2的范围内。我正在尝试使用套索模型。我浏览了几篇关于交叉验证策略的帖子,如下所示:Leave one out cross validation algorithm in matlab

但是我看到套索不支持Matlab中的预留! http://www.mathworks.com/help/stats/lasso.html

如何使用一次交叉验证训练模型并使用套索在我的数据集上拟合模型?我想在matlab中做这个。我想获得一组权重,我将能够用于未来对其他数据的预测。

我尝试使用glmnet:http://www.stanford.edu/~hastie/glmnet_matlab/intro.html但由于缺少合适的mex编译器,我无法在我的机器上编译它。

我的问题的任何解决方案?谢谢:))

修改

我也在尝试使用MATLAB内置的套索功能。它有一个执行交叉验证的选项。它输出B和拟合统计,其中B是拟合系数,是一个p乘L矩阵,其中p是X中预测变量(列)的数量,L是Lambda值的数量。

现在给出一个新的测试样本,如何使用此模型计算输出?

1 个答案:

答案 0 :(得分:0)

无论您的训练方法如何,您都可以使用留一法。正如here所述,您可以使用crossvalind将数据拆分为训练和测试集。

[Train, Test] = crossvalind('LeaveMOut', N, M)