Elastic netモデルを推定する

EViews 14は既存の罰則付き回帰モデルの機能を完全に更新し、より効率的な推定アルゴリズム、個々の係数の重みや係数境界を含む係数罰則値の制御の追加、モデルを選択するためのより効率的な交差検証ツールを提供します。ラムダパスに沿って、係数の動作、推定目的、パスに沿ったモデルフィット統計量を調べるためのツールが追加されました。

データ

概要


  • リッジ回帰、LASSO、、Elastic Net (E-net)の目的関数$J$は次の通りです。 \[ J = \frac{1}{2T}\sum_{i=1}^T \left( y_{t}-\beta_{0}-\sum_{j=1}^p x_{i}\beta_{j} \right)^2 + \lambda \left[ \alpha \sum_{j=1}^p |\beta_{j}| + \frac{(1-a)}{2} \sum_{j=1}^p \omega_{j} \beta_{j}^2 \right] \]
  • $T$は標本数、$p$は回帰変数の数です。1項目は$\frac{1}{2T}SSR(\beta)$と表すこともできるように残差平方和です。2番目は罰則項で$0≤\alpha≤1$をとります。$\alpha=1$ではLASSO回帰、$\alpha=0$ではリッジ回帰です。
    罰則パラメータ$\lambda>0$が大きいほど強い罰則が科されます。$\lambda=0$の時は通常の最小二乗法です。
  • Automatic Lambda Grid

  • 罰則係数$\lambda$は次のような手順で求められます
    1. 考慮する罰則値の(最大)数を設定します、たとえば$m=100$
    2. 回帰変数の係数がすべてゼロになるλの最大値$\lambda_{max}$を計算します
    3. $\lambda_{max}$の小数値を$\lambda$の最小値$\lambda_{min}$とします
    4. $\lambda_{max}$から$\lambda_{min}$までの自然対数スケールで$m$個の降順に罰則値のグリッドを計算します。
    5. 得られた値の指数を取り、ラムダパスを取得します。
  • 交差検証

    個別の罰則加重

  • 個別罰則加重$\omega_{j}$は全体の罰則$\lambda$を、特定の変数の係数について増加または縮小します。$\omega_{0}=0$は定数項なしを意味します。
  • データスケーリング

  • 最小二乗法を安定させるため、従属変数と回帰変数のスケーリングを行うことができます。
  • 従属変数のスケーリング

  • スケーリングされた従属変数は$y = y_{t} / \phi_{y}$で計算されます。
  • 回帰変数のスケーリング

    • 従属変数$y = y_{t} / \phi_{y}$をスケーリングすると、リッジ回帰係数は、スケーリングされていないデータから得られる係数を単純にスケーリングしただけのものになります。Lasso回帰の場合、罰則パラメータも適切にスケーリングすれば、同様のスケーリング係数が得られます。
    • $0< \alpha <1$のE-net推定を行う前に従属変数$y_{t} / \phi_{y}$をスケーリングすると、スケーリング済み係数推定値とスケーリングなし係数推定値の差は、スケール値よりも大きくなる。
    • 推定前に回帰変数$x_{t} / \phi_{y}$をスケーリングすると、スケーリングされていない回帰変数を用いた場合と比べて、係数結果が個々のスケーリング値以上に異なる結果となります。

ダイアログボックス

データ

Specificationタブ

  1. Equation Specificationでは通常通り、従属変数、独立変数の順番で変数を入力します。PDL項とARMA項はE-netでは利用できません。変数別に罰則加重を指定するには@vw(変数名, 加重値)または、@vw(変数名, wgt=加重値, cmin=係数の最小値, cmax=係数の最大値)と記述します。
    データ
  2. TypeとAlpha

  3. Typeドロップダウンリストでは推定手法をE-net, LASSO, Ridgeから選択します。AlphaテキストボックスはE-net推定におけるα値を指定します。デフォルトは0.9です。
    データ
  4. ラムダ

  5. Lambdaフィールドは全体の罰則係数を指定します。単一の数値またはスペース区切りで複数の値を入力できます。ベクトルオブジェクトを指定することもできます。何も入力しない場合はEViewsが自動的に決定します。
  6. Penaltyタブ

  7. Penalty OptionsセクションではIndividual Penalty Weightsではベクトルオブジェクトで係数の加重を指定します。 Cross-validation OptionsではLambdaフィールドで複数の値を入力または何も入力しない場合に使用し、交差検証の設定を行います。Regressor/Dependent scalingでは変数のスケーリングの設定を行います。デフォルト設定は、回帰変数は母集団標準偏差でスケーリングし、従属変数は変形を行わない、です。
    データ
    • Std. dev. (pop.)とStd. dev. (sample)は母集団($x/T$)および標本標準偏差($x/T-1$)で除算
    • Absolute value (L1)は$L_{1}$ノルムを$T$で除算
    • Squared value (L2)は$L_{2}$ノルムを$T$で除算
    • Min-maxではデータ範囲でスケーリングします。
    Path definitionではSpecificationタブでLambda値を空欄した場合に有効です。Path lengthは考慮するラムダパスの数を指定します、デフォルト設定は100です。Path min/max ratioボックスはラムダの最小値と最大値の比率を指定します。$\lambda_{max}$は前述の通りデータより導かれるので、このボックス値から$\lambda_{min}$が決定されます。デフォルト設定は0.001です。
    Path stopping rulesはラムダパスの探索について、停止条件を指定します。Max. R-squaredは各ラムダ値におけるモデルの決定係数または残差平方和の上限を指定します。Min. change in devianceはラムダの変化率を指定します。Min. path lengthは停止条件が適用される前に探索を停止するラムダの候補の数です。Number of coefficientsは非ゼロの係数を持つ変数の最大数を指定します。
  8. Optionsタブ

  9. Min value vectorとMax value vectorはそれぞれ各変数の非正の最小値と非負の最大値を指定します。Weightsセクションでは個別の推定における加重を指定します。None以外を選択して、加重シリーズ名を指定します。
  10. データ

リッジ回帰


  1. ここでは、Stamey et al.(1989)の前立腺がんデータを用いた弾性ネット推定の例をいくつか示す。このデータは、Hastie、Tibshirani、Friedman(2009、p.3)でも例として用いられている。 著者らのウェブサイトから入手したこれらのデータを含むワークファイルProstate.WF1は、EViewsの下記のフォルダに同梱されています。
    C:\Program Files\EViews 14\Example Files\EV14 Manual Data\Chapter 37 - Elastic Net and Lass
    従属変数は前立腺特異抗原(LPSA)の対数です。回帰変数は、log(癌体積) (LCAVOL)、log(前立腺重量) (LWEIGHT)、年齢、良性前立腺肥大症の量の対数 (LBPH)、精嚢浸潤 (SVI)、log(腺窩浸潤) (LCP)、グリーソンスコア (GLEASON)、およびグリーソンスコア4または5の割合 (PGG45) です。Hastie、Tibrshirani、Friedmanの方法に従い、全データに対して回帰変数を標準化し、元の名前に「_STDZ」を付加した対応する系列が用意されています。
  2. まずは、シンプルなリッジ回帰の例から始めましょう。方程式推定ダイアログを開き、メソッドのドロップダウンメニューから「ENET - Elastic Net Regularization」を選択し、ダイアログに以下のように入力します。
    lpsa c lcavol_stdz lweight_stdz age_stdz lbph_stdz svi_stdz lcp_stdz gleason_stdz pgg45_stdz
    データ
    • EViewsが考慮すべき値のラムダパスを自動的に決定するように、ラムダ編集フィールドは空白のままにしておきます。
    • 推定サンプルは、TRAIN系列が「T」の値をとる観測値に設定します。
    • Penaltyタブで、Regressor scalingドロップダウンをNoneに変更します。これは、データが既にスケーリング済みであるためです。
    • パスの最小値/最大値の比率を0.0001に変更します。
      データ
    その他の設定はデフォルトのままにしておきます。OKをクリックして方程式を推定してください。
  3. EViewsに推定結果が表示されます。出力の上部には、自動パス推定を用いたリッジ回帰モデルを推定していることがわかります。最適値14.23403は、平均二乗誤差を目的関数として5分割交差検証によって算出されました。
    回帰変数は既に標準化されているため、回帰変数のスケーリングは指定しておらず、従属変数のスケーリングも行っていません。出力には、最適なペナルティ値61.16と最大のペナルティ値(211.37と1027.81)を用いた推定結果が表示されています。交差検証の平均二乗誤差は、平均から1標準偏差と2標準偏差離れています。 データ
    3つのケースすべてにおいて、リッジ回帰の想定どおり、すべての係数が仕様に含まれています。そして、結果は、ラムダの値を増やすにつれて、係数値と適合度指標の両方が減少することを明確に示しています。
  4. View/Coefficient Path/Graphをクリックすると、ラムダグラフにさまざまな値に対する係数のプロットが表示されます。垂線は、ログラムダの最適値を示しています。 オプション設定
  5. ペナルティと適合度指標の関係も確認できます。View/Lambda Path/Graphを選択し、Fit Statノードを選択すると、と二乗偏差に基づく適合度指標の関係が表示されます。
    データ
    両方の指標はペナルティに対して単調減少しており、調整済み$R^2$はペナルティ値が大きいほど負の値になります。
  6. 交差検証ビューでは、ペナルティ増加の影響についてより詳細な情報が得られます。View/Model Selection/Cross validation graphをクリックすると、交差検証目的関数とペナルティの関係を示すグラフが表示されます。
    データ
    このグラフは、K分割交差検証から得られた平均二乗誤差を示しており、垂直線は最適なlog$\lambda$値に対応しています。

LASSO


  1. 次に、Lassoペナルティ関数を使用して推定します。ペナルティ仕様タイプをLASSOに変更し、メイン推定ダイアログに以前と同じ変数を入力しますが、PGG45_STDZの相対罰則加重を大きくします。
    lpsa c lcavol_stdz lweight_stdz age_stdz lbph_stdz svi_stdz lcp_stdz gleason_stdz @vw(pgg45_stdz, 1.2)
    ここでは、単一の引数が重み値であると想定される、@vwのシンプルな形式を使用します。
    データ
  2. PGG45_STDZの個別加重を 1.2 に設定しているため、この変数にはより大きなペナルティが課されます。EViews は指定された重みを適用し、すべての非ゼロの重みを正規化して、ペナルティの対象となる変数の数と合計が一致するようにします。出力の上部は概ね見慣れたものですが、PGG45_STDZ のペナルティ重みが高いことを示す行が追加されています。
    データ
    予想通り、Lasso ペナルティはリッジ ペナルティよりも 0 値の係数を多く生成します。メインの推定出力テーブルでは、GLEASON_STDZ がモデルから除外されます。これは、これら 3 つのモデルすべてで対応する係数が 0 であるためです。ペナルティが右方向の列で増加するにつれて、追加の係数が 0 に設定されます。$\lambda$が 0.49 の場合、残る係数はペナルティなしの切片、LCAVOL_STDZ、および LWEIGHT_STDZ のみです。
  3. View/Coefficient Path/Graphを選択し、ラムダグラフを調べると、ペナルティパラメータのさまざまな値に対して係数がプロットされています。
    データ

  4. 特に注目すべきは、直線が水平軸と交差するlog ラムダの値です。例えば、ペナルティを増加させると、GLEASON_STDZが最初に脱落し、LCP_STDZ、そしてAGE_STDZがそれに続きます。残りの変数の係数は、最適値よりも大きなlog値でのみゼロになります。この挙動の概要は、非ゼロ係数の数とlog値の関係を示すグラフ(View/Lambda Path/Graph)を見ることで確認できます。
    データ
  5. View/Model Selection/Cross-validation Graphでは、パスに沿った交差検証目的関数の挙動が表示されます。
    データ

Elastic net

  1. このモデルを推定するには、推定ダイアログを開き、次のように入力し、Penalty spcificationセクションのTypeをElastic netに設定します。
    lpsa c lcavol_stdz lweight_stdz @vw(age_stdz, cmax=0.4) lbph_stdz svi_stdz lcp_stdz gleason_stdz @vw(pgg45_stdz, cmax=0.1, w=1.2)
    データ
    この仕様では、AGE_STDZ変数の係数を0.4以下に制限し、PGG45_STDZには個別の重みを1.2、係数の最大値を0.1とします。ここでも、ラムダ編集フィールドは空白のままにして、EViewsが考慮する値のラムダパスを自動的に決定するようにします。推定サンプルは、TRAIN系列が「T」の値をとる観測値に設定します。残りの設定は、上記の「リッジ回帰」と同じです。
  2. 出力は見慣れたものだと思います。ヘッダーに、LCAVOL_STDZとPGG45_STDZそれぞれの重みと係数の上限値を示す行があることに注目してください。
    データ
    ここで、LCAVOL_STDZの係数の上限値は、最適値と「+1 SE」ペナルティの両方で拘束力がありますが、「+2 SE」ペナルティではもはや関係がないことがわかります。PGG45_STDZの係数の上限値は、最適値では拘束力がありますが、それより高い2つのペナルティでは拘束力がありません。
  3. View/Coefficient Path/Graphをクリックし、ラムダグラフを選択して、パスに沿った係数を表示します。
    データ
    注目すべきは、LCAAVOL_STDZとPGG45_STDZの経路です。これらの経路では、ペナルティが係数を許容範囲内に収まるほど大きくなるまで、制約が経路に沿って拘束されます。予想通り、ペナルティが増加するにつれてモデルの複雑さは減少し、係数は徐々に0に収束します。

参考文献

  1. Friedman, J., T. Hastie, and R. Tibshirani. (2010). Regularization paths for generalized linear models via coordinate descent. Journal of Statistical Software, 33(1), 1–22.
  2. Hastie, T., R. Tibshirani, and J. Friedman (2009). The Elements of Statistical Learning, Second Edition. New York: Springer.
  3. Hastie, T., R. Tibshirani, and M. Wainwright. (2015). Statistical learning with sparsity: the lasso and generalizations. CRC Press.
  4. Stamey TA, Kabalin JN, McNeal JE, Johnstone IM, Freiha F, Redwine EA, Yang N. Prostate specific antigen in the diagnosis and treatment of adenocarcinoma of the prostate. II. Radical prostatectomy treated patients. J Urol. 1989 May;141(5):1076-83. doi: 10.1016/s0022-5347(17)41175-x. PMID: 2468795.
page_top_icon