見出し画像

【統計学修士の備忘録】#4 最小二乗法からの卒業

こんにちは、ぽむぽむです。いよいよ明日試験ですが、大丈夫そうな気がしてきました。ちなみに明日の試験が終わったら今度は Financial Statistics という科目の勉強が始まるので、機械学習系の話は今日で一旦終わりにしたいと思います。

今回は線形回帰において、最小二乗法では上手くパラメータを推定できない場合に使う方法について記録します。ずばり、それは予測変数が多すぎる場合です。そのような場合、分散大&オーバーフィットによって予測の精度が落ちるというデメリットに加えて、どの変数が大事なのかもよく分からなくなるという解釈上のデメリットもあります。

その様な場合に対処する方法は以下の三通りです。

  • サブセット選択 Subset Selection

  • 縮小推定 Shrinkage

  • 次元削減 Dimension Reduction

サブセット選択 Subset Selection

こちらのアイディアは結構分かりやすいと思います。とりあえず、色々な変数の組み合わせでモデルをフィットしていって、1番よかったものを選択するという方法です。

まず、1番シンプルな Best subset selection。$${k=1,…,p}$$について以下の手順を繰り返します。
①k個の予測変数でモデルをフィットします。この時、$${pC_{k}}$$通りの選び方がありますが、全部やります。
②その中で1番良かったものを選びます。(最も小さいRSSか大きい$${R^{2}}$$)
この様にして、選ばれた$${k}$$個のモデルのうち、ベストなものをAICやBIC、修正$${R^{2}}$$を用いて選択します。

AICやBICなどは、モデルがデータにフィットすればするほど小さくなる一方で、モデルが複雑であるほど(パラメータの数が多いほど)ペナルティーを課されて大きくなってしまうので、パラメータの数が異なるモデル同士を比較する際に役立ちます。ただ、尤度関数を使うなど、仮定に依存してしまっている面もあるので、CVを用いてテストエラーの最も低いものを選ぶという方法もあります。

$$
AIC = -2logL + 2d
$$

$$
BIC = -2logL + log(n)d
$$

($${logL}$$は尤度関数の最大値、$${d}$$はパラメータの数、$${n}$$はデータの数)

この Best subset selection、アイディアとしては分かりやすいのですが、非常に計算コストが高いのでFSSやBSSを使うことが一般的です。

  • FSS:パラメータの数が0もモデルから始まり、そこから1つずつ1番良いパラメータを付け足していく

  • BSS:p個全てのパラメータを使ったモデルから始まり、そこから1つずつ、削減するのが最も効果的だと思われるパラメータを抜いていく

この2つは計算コストは低くなりますが、$${2^{p}}$$個全てのモデルを試せる訳ではないので、本当に1番良いモデルを見落としてしまう可能性はあります。何事も一長一短ですね。

縮小推定 Shrinkage

ここからが本題です。縮小推定はp個全ての変数を使ってモデルをフィットしますが、係数を推定する際に、ダメな変数の係数は罰として0に近づけます(shrink towards zero)。

このメソッドは多重共線性 Multicollinearity と大きく関係しています。統計学でもよく出てくる多重共線性ですが、簡単に言うと、予測(説明)変数同士が関係を持っていると推定に支障が出るよということです。例えば最小二乗法で推定される係数は$${\hat{\beta} = (X^{T}X)^{-1}X^{T}Y}$$と表されますが、$${X^{T}X}$$が正則でない(説明変数が線形従属である)場合、ランクが下がって逆行列が計算できなくなってしまいます。この回避しようとして誕生したのがリッジ回帰です。

リッジ回帰では、以下の様にRSSにペナルティ項を加えた上で、それを最小化する係数を求めます。

$$
\sum_{i}^{n}(y_{i} - \beta_{0}-\sum_{j=1}^{p}\beta_{j}x_{ij})^{2} + \lambda \sum_{j=1}^{p}\beta_{j}^{2}
$$

$${\lambda}$$が大きいほど係数が大きくシュリンクされるので、分散は小さくなりバイアスが大きくなります。逆も然りです。では、この$${\lambda}$$はどのように選べば良いのでしょうか。このようなパラメータはハイパーパラメータと呼ばれており、CVを用いてチューニングすることが一般的です。(様々な値の$${\lambda}$$を試していき、最もCVエラーの小さいものを選びます)

ちなみに係数の推定値をちまちま計算していくと

$$
\hat{\beta}_{ridge} = (X^{T}X+\lambda I_{p})^{-1} X^{T}Y
$$

になります。

次にラッソ回帰です。リッジ回帰に非常に似ていますが、ペナルティ項が$${l_{2}}$$から$${l_{1}}$$になります。

$$
\sum_{i}^{n}(y_{i} - \beta_{0}-\sum_{j=1}^{p}\beta_{j}x_{ij})^{2} + \lambda \sum_{j=1}^{p}| \beta_{j} |
$$

こちらの計算は複雑なので飛ばしますが、リッジ回帰との大きな違いは0になる係数があるということです。

これは先ほどの最小化問題を違う形で書いてみると分かりやすいと思います。リッジ回帰の問題は、

$$
min_{\beta} \sum_{i=1}^{n}(y_{i}-\beta_{0}-\sum_{j=1}^{p} \beta_{j}x_{ij})^{2} \text{ subject to } \sum_{j=1}^{p}\beta_{j}^{2} \leq s
$$

ラッソ回帰の問題は

$$
min_{\beta} \sum_{i=1}^{n}(y_{i}-\beta_{0}-\sum_{j=1}^{p} \beta_{j}x_{ij})^{2} \text{ subject to } \sum_{j=1}^{p} |\beta_{j} | \leq s
$$

と書けます。ここで、切片の項をなくして変数を2個にしてみると、制約はそれぞれ$${\beta_{1}^{2}+\beta_{2}^{2} \leq s}$$と$${|\beta_{1}|+|\beta_{2}| \leq s}$$になります。

出典:ISLR

確かに絶対にリッジではパラメータが0にならないのに対して、ラッソでは0になる可能性があります。つまり、スパースなモデルを叩き出すことができるということです。ですので、まずはリッジを使ってみて、予測に影響を与える変数が少なそうな時はラッソを使う、みたいな使い分けが多いようです。

こんなに長々とラッソやリッジについて説明しましたが、実はこの二つのハイブリッドの Elastic Net というものがあり、実際には最初から Elastic Net を使う場合が多い様です。授業の課題でも、様々なデータに三つの回帰をフィットしてみましたが確かに Elastic Net が1番良かった記憶があります。

次元削減 Dimension Reduction

もともとあったp個の変数を組み合わせて、M個の変数を作り(M<p)、それらを予測変数として回帰を行うことで変数を削減する方法です。

新しい変数の作り方としては主成分分析(PCA)が一般的な様ですが、こちらについてはまたいつか別のnoteで記録したいと思います。



この記事が気に入ったらサポートをしてみませんか?