Predict response after Lasso

I am using Lasso to remove redundant predictors by using cross-validated fits, essentially following this guide. To make predictions on the Train set, I multiplied the Train and B(:,FitInfo.IndexMinMSE) matrices. The predicted values somehow are not close to the actual response of the Train set. Am I missing something here? How do I predict response using coefficients obtained from Lasso?
X = x2fx(X)
rng default % For reproducibility
[B,FitInfo] = lasso(X,Y,'CV',10);
lassoPlot(B,FitInfo,'PlotType','CV'); % Look at MSE vs Lambda
coeff = B(:,FitInfo.IndexMinMSE); % Regression coefficients for min MSE, use these coefficients.
Ypredict = X * coeff; % Predicted response

回答 (1 件)

Lonoko
Lonoko 2018 年 1 月 12 日

2 投票

The first column of X corresponds to the constant (see help for x2fx), but Matlab doesn't save the constant value in B (coef(1)=0), so your predictions are biased. The predicted response is: Ypredict = X * coeff + FitInfo.Intercept(IndexMinMSE);

カテゴリ

質問済み:

2017 年 8 月 10 日

回答済み:

2018 年 1 月 12 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by