Main Content

ポアソン回帰の正則化

次の例は、一般化線形モデルから冗長な予測子を見つけて削除する方法を示します。

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

Figure contains an axes object. The axes object with title Cross-Validated Deviance of Lasso Fit, xlabel Lambda, ylabel Deviance contains 5 objects of type errorbar, line. One or more of the lines displays its values using only markers These objects represent Deviance with Error Bars, LambdaMinDeviance, Lambda1SE.

緑の円と破線が、最小交差検証誤差のある 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 に近い値で、データの生成に使用される値です。