ポアソン回帰の正則化
次の例は、一般化線形モデルから冗長な予測子を見つけて削除する方法を示します。
20 個の予測子でデータを作成し、そのうちの 3 つのみの予測子と 1 つの定数を使ってポアソン応答を作成します。
rng('default') % for reproducibility X = randn(100,20); mu = exp(X(:,[5 10 15])*[.4;.2;.3] + 1); y = poissrnd(mu);
データのポアソン回帰モデルの交差検証 LASSO 正則化を構築します。
[B,FitInfo] = lassoglm(X,y,'poisson','CV',10);
Lambda
正則化パラメーターの効果を確認するために交差検証プロットを調べます。
lassoPlot(B,FitInfo,'plottype','CV'); legend('show') % show legend
緑の円と破線が、最小交差検証誤差のある Lambda
を示します。青の円と破線が、最小交差検証誤差のある点と 1 つの標準偏差を示します。
識別された 2 つの点に対応する非ゼロのモデル係数を検出します。
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
最小値に 1 つの標準誤差点を加えたものの係数は、データを作成するために使用した係数そのものです。
最小値に 1 つの標準誤差を加えた点の、モデル係数の値を見つけます。
B(min1pts,FitInfo.Index1SE)
ans = 3×1
0.2903
0.0789
0.2081
これらの係数の値は予想どおり、元の [0.4,0.2,0.3]
より小さい値です。LASSO は予測子の係数をゼロにバイアスにする "縮小" により機能します。
定数項は FitInfo.Intercept
ベクトル内にあります。
FitInfo.Intercept(FitInfo.Index1SE)
ans = 1.0879
この定数項は 1 に近い値で、データの生成に使用される値です。