ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

lassoglm

一般化線形モデル回帰に対する Lasso または Elastic Net 正則化

構文

B = lassoglm(X,Y)
[B,FitInfo] = lassoglm(X,Y)
[B,FitInfo] = lassoglm(X,Y,distr)
[B,FitInfo] = lassoglm(X,Y,distr,Name,Value)

説明

B = lassoglm(X,Y) は、データ行列 X に対する応答 Y の一般化線形モデルのペナルティ付き最尤近似係数を返します。Y はガウス確率分布と仮定します。

[B,FitInfo] = lassoglm(X,Y) は近似に関する情報を含む構造体を返します。

[B,FitInfo] = lassoglm(X,Y,distr) は、distr に指定された Y の確率分布タイプを使用してモデルを近似します。

[B,FitInfo] = lassoglm(X,Y,distr,Name,Value) は、Name,Value のペアの引数で指定された追加のオプションを使用して、正則化された一般化線形回帰を近似します。

入力引数

X

n 行および p 列の数値行列。各行は 1 つの観測値、各列は 1 つの予測子変数を表します。

Y

distr'binomial' でない場合、Y は長さ n の数値ベクトルです。ここで nX の行数です。Y(i)Xi 行の応答です。

distr'binomial' である場合、Y は次のいずれかになります。

  • 長さ n の数値ベクトルで、各エントリは成功 (1) または失敗 (0) を表す

  • 長さ n の論理ベクトルで、各エントリは成功または失敗を表す

  • 最初の列に各観測の成功回数と 2 列目に試行の合計回数を含む、2 列の数値行列

distr

応答の非体系的偏差の分布ファミリを示す文字列。選択肢は以下のとおりです。

  • 'normal'

  • 'binomial'

  • 'poisson'

  • 'gamma'

  • 'inverse gaussian'

既定の設定では、関数 lassoglmdistr に対応する正準リンク関数を使用します。'link' 名前と値のペアを使用して別のリンク関数を指定してください。

名前/値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。ここで、Name は引数名で、Value は対応する値です。Name は単一引用符 (' ') で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペア引数を、任意の順番で指定できます。

'Alpha'

0 から 1 の (0 を除く) スカラー値で、Lasso の重み (L1) 対リッジ (L2) の最適化を表します。 Alpha = 1 は Lasso 回帰を表し、その他の値は Elastic Net の最適化を表します。Alpha0 に近いと、リッジ回帰に近づきます。「定義」を参照してください。

既定値: 1

'CV'

メソッド lassoglm は逸脱度を推定するために以下を使用します。

  • K、正の整数 — lassoglmK 分割交差検定を使用します。

  • cvpcvpartition オブジェクト — lassoglm は、cvp で表される交差検定メソッドを使用します。'leaveout' 分割は lassoglm と一緒には使用できません。

  • 'resubstitution'lassoglm は、交差検定を使用せずに、XY を使用してモデルを近似し、逸脱度を推定します。

既定値: 'resubstitution'

'DFmax'

モデル内の非ゼロの係数の最大数。lassoglm はこの基準を満たす Lambda 値に対する結果を返します。

既定値: Inf

'Lambda'

非負 Lambda 値のベクトル。「Lasso」を参照してください。

  • Lambda を指定しない場合、lassoglm は非 Null モデルを提供する Lambda の最大値を推定します。この場合、LambdaRatio はシーケンスの最小値/最大値の比を示し、NumLambda はベクトルの長さを示します。

  • Lambda を指定する場合、lassoglmLambdaRatioNumLambda を無視します。

既定値: NumLambda 値の幾何学シーケンス、B = 0 を求めるのに十分な最大値

'LambdaRatio'

正のスカラー値、Lambda を明示的に設定しない場合は、Lambda 値の最小値/最大値の比。

LambdaRatio = 0 に設定する場合、lassoglmLambda 値の既定のシーケンスを生成し、最小値を 0 に置き換えます。

既定値: 1e-4

'Link'

応答の平均 µ と線形予測子 Xb 間のマッピングを指定します。

説明
'comploglog'

log( –log((1–µ))) = Xb

'identity'、分布の既定の設定 'normal'

µ = Xb

'log'、分布の既定の設定 'poisson'

log(µ) = Xb

'logit'、分布の既定の設定 'binomial'

log(µ/(1 – µ)) = Xb

'loglog'

log( –log(µ)) = Xb

'probit'

Φ–1(µ) = Xb、ここで Φ は正規 (ガウス) CDF 関数

'reciprocal'、分布の既定の設定 'gamma'

µ–1 = Xb

p (数値)、分布 'inverse gaussian' の既定の設定 (p = –2 の場合)

µp = Xb

リンク (FL)、リンクの微分 (FD)、逆リンク (FI) を定義する @ を使用して作成される 3 つの関数ハンドルを含んでいる形式 {FL FD FI} のセル配列です。同様に、FL を含むフィールド LinkFD を含むフィールド DerivativeFI を含むフィールド Inverse のある関数ハンドルの構造体にできます。

ユーザー指定のリンク関数 (「カスタム リンク関数」を参照)

'MCReps'

交差検定用のモンテカルロ反復回数を示す正の整数。

  • CV が、タイプ 'resubstitution''resubstitution' または cvpartition である場合、MCReps1 でなければなりません。

  • CV がタイプ 'holdout'cvpartition である場合、MCReps1 よりも大きくなければなりません。

既定値: 1

'NumLambda'

正の整数。Lambda が設定されていない場合に lassoglm が使用する Lambda 値の数です。関数 lassoglm は、近似の逸脱度が null の逸脱度 (予測子 X をいずれも使用していない近似の逸脱度) のしきい値を下回る場合に、NumLambda より少ない近似を返すことがあります。

既定値: 100

'Offset'

X と同じ行数の数値ベクトル。関数 lassoglm は追加の予測子変数として Offset を使用しますが、係数の値は 1.0 に固定します。

'Options'

並列で交差検定するかどうかを指定し、乱数ストリームを指定する構造体。statset を使用して Options 構造体を作成します。以下のオプションのフィールドがあります。

  • UseParallel — 並列計算する場合は true に設定します。既定の設定は false です。

  • UseSubstreams — 再生成可能な方法で並列計算する場合は true に設定します。再現性のある計算を行うには、Streams をサブストリームを許可する型、'mlfg6331_64' または 'mrg32k3a' に設定します。既定値は false です。

  • Streams — そのようなオブジェクト 1 つで構成される RandStream オブジェクトまたはそのようなオブジェクトのセル配列。Streams を指定しないと、lassoglm には既定のストリームが使用されます。

'PredictorNames'

予測子変数の名前を表す文字列のセル配列であり、X に表示される順序で配列される

既定値: {}

'RelTol'

座標下降アルゴリズムの収束しきい値 (Friedman、Tibshirani、および Hastie の「[3]」を参照)。係数ベクトルの連続推定が、L2 ノルムにおいて RelTol 未満の相対的な量の差異がある場合、このアルゴリズムは終了します。

既定値: 1e-4

'Standardize'

lassoglm がモデルを近似する前に X をスケーリングするかどうかを指定する論理値。

既定値: true

'Weights'

観測の重み、長さ n の非負ベクトルです。nX の行数です。少なくとも 2 つの値が正でなければなりません。

既定値: 1/n * ones(n,1)

出力引数

B

近似した係数、pL 列の行列で、pX の予測子 (列) の数、LLambda 値の数です。

FitInfo

モデルの近似に関する情報を含む構造体。

FitInfo のフィールド説明
Alphaパラメーター Alpha の値、スカラー値
DevianceLambda の各値の近似モデルの逸脱度、1L 列のベクトル
交差検定が実行されると、Deviance の値は、交差検定によって計算されるため、新しいデータに適用したモデルの推定期待逸脱度を表します。実行しない場合、Deviance は近似を実行するために使用されたデータに適用される近似モデルの逸脱度です。
DFLambda の各値に対する B 内の非ゼロ係数の数、1L 列のベクトル
Intercept各線形モデルの切片の項 β01L 列のベクトル
Lambda降順のパラメーター Lambda で、1L 列のベクトル

CV 名前と値のペアを交差検定に設定した場合、FitInfo 構造体には追加のフィールドが含まれます。

FitInfo のフィールド説明
IndexMinDevianceLambdaMinDeviance をもつ Lambda のインデックス、スカラー値。
Index1SELambda1SE をもつ Lambda のインデックス、スカラー値。
LambdaMinDeviance交差検定によって計算された、最小期待逸脱度をもつ Lambda 値、スカラー値。
Lambda1SEDeviance が最小の 1 標準誤差内に存在する最大の Lambda、スカラー値。
SE交差検定中に計算される各 LambdaDeviance の標準誤差、1L 列のベクトル。

すべて展開する

一般化線形モデルの Lasso 正則化

ポアソン モデルからデータを作成し、関数 lassoglm を使用して重要な予測子を特定します。

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');

緑の円と破線が、最小交差検定誤差のある Lambda を示します。青の円と破線が、最小交差検定誤差のある点と 1 つの標準偏差を示します。

識別された 2 つの点に対応する非ゼロのモデル係数を検出します。

minpts = find(B(:,FitInfo.IndexMinDeviance))
minpts =

     3
     5
     6
    10
    11
    15
    16
min1pts = find(B(:,FitInfo.Index1SE))
min1pts =

     5
    10
    15

最小値に 1 つの標準誤差点を加えたものの係数は、データを作成するために使用した係数そのものです。

詳細

すべて展開する

リンク関数

リンク関数 f(μ) は次の式を使用して、平均 μ の分布を、データ X と係数ベクトル b をもつ線形モデルにマッピングします。

f(μ) = Xb.

Link 名前と値のペアで記述で、このリンク関数の式を検索します。この式の "typical" は、リストされた分布で通常使用されるリンク関数を意味します。

分布ファミリリンク関数 (typical, {default})
'normal'{'identity'}
'binomial''comploglog', 'loglog', 'probit', {'logit'}
'poisson'{'log'}
'gamma'{'reciprocal'}
'inverse gaussian'{-2}

Lasso

λ の非負の値に対して、lasso は次の問題を解決します。

ここで

  • 逸脱度とは、切片 β0 と予測子係数 β を使用して応答に近似するモデルの逸脱度です。逸脱度の式は、lassoglm に指定する distr パラメーターに依存します。λ ペナルティ付き逸脱度を最小化することは λ ペナルティ付き対数尤度を最大化することと等価です。

  • N は、観測数です。

  • λ は Lambda の 1 つの値に対応する非負の正則化パラメーターです。

  • パラメーター β0 と β はそれぞれ、スカラーとベクトル p です。

λ が増えると、β の非ゼロの要素が減ります。

Lasso の問題は、Elastic Net のアルゴリズムとは対照的に β の L1 ノルムと関わっています。

Elastic Net

厳密に 0 と 1 の間の α および非負の λ の場合、Elastic Net で次の問題を解決します。

ここで以下のようになります。

Elastic Net は α = 1 のとき Lasso と同じです。α の他の値の場合、ペナルティ項 Pα(β) は、β の L1 ノルムと β の二乗 L2 ノルム間を内挿します。α が 0 に向かって縮小するにつれて、Elastic Net は ridge 回帰に近づきます。

参考文献

[1] Tibshirani, R. Regression Shrinkage and Selection via the Lasso. Journal of the Royal Statistical Society, Series B, Vol. 58, No. 1, pp. 267–288, 1996.

[2] Zou, H. and T. Hastie. Regularization and Variable Selection via the Elastic Net. Journal of the Royal Statistical Society, Series B, Vol. 67, No. 2, pp. 301–320, 2005.

[3] Friedman, J., R. Tibshirani, and T. Hastie. Regularization Paths for Generalized Linear Models via Coordinate Descent. Journal of Statistical Software, Vol. 33, No. 1, 2010. http://www.jstatsoft.org/v33/i01

[4] Hastie, T., R. Tibshirani, and J. Friedman. The Elements of Statistical Learning, 2nd edition. Springer, New York, 2008.

[5] Dobson, A. J. An Introduction to Generalized Linear Models, 2nd edition. Chapman & Hall/CRC Press, New York, 2002.

[6] McCullagh, P., and J. A. Nelder. Generalized Linear Models, 2nd edition. Chapman & Hall/CRC Press, New York, 1989.

[7] Collett, D. Modelling Binary Data, 2nd edition. Chapman & Hall/CRC Press, New York, 2003.

参考

| | |

この情報は役に立ちましたか?