Regularize Poisson Regression
This example shows how to identify and remove redundant predictors from a generalized linear model.
Create data with 20 predictors, and Poisson responses using just three of the predictors, plus a constant.
rng('default') % for reproducibility X = randn(100,20); mu = exp(X(:,[5 10 15])*[.4;.2;.3] + 1); y = poissrnd(mu);
Construct a cross-validated lasso regularization of a Poisson regression model of the data.
[B,FitInfo] = lassoglm(X,y,'poisson','CV',10);
Examine the cross-validation plot to see the effect of the Lambda
regularization parameter.
lassoPlot(B,FitInfo,'plottype','CV'); legend('show') % show legend
The green circle and dashed line locate the Lambda
with minimal cross-validation error. The blue circle and dashed line locate the point with minimal cross-validation error plus one standard deviation.
Find the nonzero model coefficients corresponding to the two identified points.
minpts = find(B(:,FitInfo.IndexMinDeviance))
minpts = 7×1
3
5
6
10
11
15
16
min1pts = find(B(:,FitInfo.Index1SE))
min1pts = 3×1
5
10
15
The coefficients from the minimal plus one standard error point are exactly those coefficients used to create the data.
Find the values of the model coefficients at the minimal plus one standard error point.
B(min1pts,FitInfo.Index1SE)
ans = 3×1
0.2903
0.0789
0.2081
The values of the coefficients are, as expected, smaller than the original [0.4,0.2,0.3]
. Lasso works by "shrinkage," which biases predictor coefficients toward zero.
The constant term is in the FitInfo.Intercept
vector.
FitInfo.Intercept(FitInfo.Index1SE)
ans = 1.0879
The constant term is near 1, which is the value used to generate the data.