lasso — Fit lasso or elastic-net regularized linear regression models.
lasso(X,y) fits regularized linear regression coefficients for predictor matrix X and response vector y. Columns of B correspond to ascending Lambda values, and [B,FitInfo] = lasso(...) returns MATLAB-compatible fit metadata.
Syntax
B = lasso(X, y)
B = lasso(X, y, Name, Value)
[B, FitInfo] = lasso(X, y)
[B, FitInfo] = lasso(X, y, Name, Value)Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
X | NumericArray | Yes | — | Predictor matrix with observations in rows and predictors in columns. |
y | NumericArray | Yes | — | Response vector with one value per row of X. |
options | Any | Variadic | — | Name-value options such as Lambda, Alpha, Standardize, Intercept, Weights, CV, NumLambda, LambdaRatio, MaxIter, and RelTol. |
Returns
| Name | Type | Description |
|---|---|---|
B | NumericArray | Coefficient matrix with one column per Lambda value. |
FitInfo | Any | Fit information structure containing Lambda, Alpha, Intercept, DF, MSE, and related fields. |
Returned values from lasso depend on how many outputs the caller requests.
Errors
| Identifier | When | Message |
|---|---|---|
RunMat:lasso:InvalidArgument | Inputs, option names, option values, dimensions, or tolerances are malformed. | lasso: invalid argument |
RunMat:lasso:Convergence | Coordinate descent cannot make numerical progress for the supplied data. | lasso: convergence failure |
RunMat:lasso:Internal | RunMat cannot construct lasso outputs. | lasso: internal error |
How lasso works
Xmust be a finite real numeric matrix with observations in rows and predictors in columns.ymust be a finite real vector whose length matchessize(X,1).Lambdaaccepts a nonnegative scalar or vector. RunMat sorts Lambda values in ascending order for output, matching MATLAB'sFitInfo.Lambdaconvention.- When
Lambdais omitted, RunMat computes a geometric regularization path usingNumLambdaandLambdaRatiofrom the largest lambda that gives an all-zero model. Alphasupports lasso and elastic-net fits for values in(0,1].Alpha=1is lasso; smaller positive values mix in the ridge penalty.StandardizeandInterceptfollow MATLAB's model form. IfInterceptis false, RunMat disables standardization and returns zero intercepts.Weightsaccepts a nonnegative observation-weight vector with positive total weight. Weights are normalized internally.RelTolandMaxItercontrol coordinate-descent convergence. TheIterationsFitInfo field records iterations per Lambda value.CVsupports"resubstitution"and positive integer K-fold cross-validation. K-fold fits addSE,LambdaMinMSE,Lambda1SE,IndexMinMSE, andIndex1SEfields toFitInfo.PredictorNames,DFmax,UseCovariance,CacheSize,MCReps=1,AbsTol,B0,U0,Rho, andOptionsare accepted for script compatibility. Tall-array ADMM behavior and covariance-matrix acceleration are not implemented;FitInfo.UseCovarianceis false because RunMat uses direct coordinate descent.
Examples
Fit a sparse linear model for an explicit Lambda
X = [0 1; 1 1; 2 1; 3 1; 4 1];
y = [1; 3; 5; 7; 9];
B = lasso(X, y, "Lambda", 0, "Standardize", false)Expected output:
B is approximately [2; 0]. Use FitInfo.Intercept for the constant term.Return FitInfo for an elastic-net path
[B,FitInfo] = lasso(X, y, "Alpha", 0.5, "Lambda", [0 0.01 0.1]);
coef0 = FitInfo.Intercept(1)Expected output:
B has one column per Lambda value; FitInfo contains Lambda, Alpha, Intercept, DF, and MSE.Use K-fold cross-validation
[B,FitInfo] = lasso(X, y, "CV", 5);
idx = FitInfo.IndexMinMSE;
coef = B(:,idx)Expected output:
FitInfo includes cross-validation MSE, SE, and Lambda selection fields.Weight observations
w = ones(size(y));
w(1:5) = 2;
[B,FitInfo] = lasso(X, y, "Weights", w)Expected output:
Rows with larger weights contribute more to the weighted least-squares objective.Using lasso with coding agents
Open a RunMat example with live inputs, then ask the agent to explain how lasso changes the result.
Run a small lasso example, explain the result, then change one input and compare the output.
FAQ
Where is the intercept stored?⌄
The coefficient matrix B contains only predictor coefficients. Intercepts are returned in FitInfo.Intercept, one value per Lambda.
Does RunMat implement covariance-matrix acceleration?⌄
No. RunMat accepts UseCovariance for script compatibility, but fitting uses the direct coordinate-descent path and FitInfo.UseCovariance is false.
How are Lambda values ordered?⌄
RunMat returns Lambda values in ascending order in FitInfo.Lambda, and the columns of B use the same order.
Does cross-validation match MATLAB's random partitions exactly?⌄
No. RunMat currently uses deterministic round-robin K-fold partitions. The returned fields and selection semantics are MATLAB-compatible, but fold assignment is deterministic.
Related Stats functions
Ml
bayesopt · classify · confusionmat · crossvalind · cvpartition · fitclinear · fitctree · fitlm · kmeans · knnsearch · lassoglm · linkage · lscov · mnrfit · optimizableVariable · pdist · pdist2 · perfcurve · predict · regress · ridge · squareform · test · training · tsne
Summary
binocdf · boxplot · cdf · cdfplot · chi2cdf · corr · corrcoef · corrcov · cov · cov2corr · dummyvar · ecdf · filloutliers · fitdist · geomean · grpstats · harmmean · icdf · isoutlier · kstest · kurtosis · lsline · mad · mode · nanmax · normalize · normcdf · norminv · normpdf · onehotdecode · onehotencode · pdf · prctile · quantile · refline · rmse · skewness · tabulate · tcdf · tiedrank · tinv · tpdf · ttest2 · wblinv
Random
binornd · bootstrp · datasample · dividerand · exprnd · gamrnd · lhsdesign · mvnrnd · normrnd · random · randsample · rng · trnd · unidrnd · unifrnd · wblrnd
Hist
Open-source implementation
Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how lasso is executed, line by line, in Rust.
- View the source for lasso in Rust on GitHub
- Learn how the RunMat runtime works
- Found a bug? Open an issue with a minimal reproduction.
About RunMat
RunMat is an open-source runtime that executes MATLAB-syntax code blazing on any GPU. It is licensed under the Apache 2.0 license.
- RunMat automatically optimizes your math for GPU execution on Apple, Nvidia, and AMD hardware. No code changes needed. Simulations that took hours now take minutes.
- Start running code in seconds. RunMat runs in the browser, on the desktop, or from the CLI. No license server, no IT ticket.