Chapter 06

Lasso回帰(Lasso Regression)

Lasso回帰

回帰問題。入力xに対する出力yを予測する。

LASSO は Least Absolute Shrinkage and Selection Operator の略。

線形回帰やリッジ回帰に比べ、重みwがスパースに、つまり各要素に0が多くなる。出力yに寄与していない特徴量はどれなのかを調べたり、ノイズを除去したりできる。

ときどき「出力yに寄与している特徴量はどれなのかを調べる」という説明がなされることがあるが、厳密にはLasso回帰には多重共線性を排除する仕組みが備わっていないので、重みが0でない特徴量のうちのどれが本当に寄与しているのかまではわからない(似通った特徴量があるときはそれらに重みが分配されるため、重みの大きい小さいを比較しても有益な情報が得られるとは限らない)。

本シリーズで用いる数式の表記一覧

本シリーズでは独自記号として、以下の「列挙(enumerate)」を使うことがあるので注意。

\overset{n}{\underset{i=1}{\sf E}} x _ i = x _ 1, x _ 2, \ldots, x _ n

モデル

リッジ回帰のときとほとんど同じである。唯一の変更点は重みの事前分布p(w)が正規分布からラプラス分布に変わることである。

入力x \in \mathcal{X}、特徴量写像\phi(x) \colon \mathcal{X} \to \mathbb{R} ^ n、出力y \in \mathbb{R}の状況。パラメータはw \in \mathbb{R} ^ n

出力とパラメータの同時確率分布を以下のように仮定する。

p(y,w|x) = p(y|w,x)p(w) \tag{1}

ただし出力yは平均w ^ \mathrm{T} \phi(x)、分散\sigma ^ 2の正規分布に従い、パラメータwは各要素が平均0、分散2b^2のラプラス分布に従うものとする。

\begin{aligned} & p(y|w,x)= \mathcal{N}(y | w ^ \mathrm{T} \phi(x), \sigma ^ 2) \\ & p(w) = \prod _ {i=1} ^ n \operatorname{Lap}(w _ i | 0, b) \end{aligned} \tag{2}

ラプラス分布の確率密度関数は以下で表される。

\operatorname{Lap}(x | \mu, b) = \frac{1}{2b} \exp \Bigl( - \frac{| x - \mu |}{b} \Bigr)

出力の予測値\hat{y} \in \mathbb{R}は以下で表現する。

\hat{y} = w ^ \mathrm{T} \phi(x)

注意

重みの事前分布にラプラス分布を設定したときにLasso回帰が導出されるのは、あくまで形式的な議論に過ぎず、重みの事前分布が実際にラプラス分布に従っていると解釈するのには懐疑的な意見もある

ラプラス分布からサンプリングしたとき0が実現する確率は0である(連続型確率分布では任意の一点がサンプリングされる確率は0である)が、Lasso回帰の結果としては0が非常に多く観測される。

事後分布もせいぜいガウス分布とラプラス分布の積の形をしているはずなので、0に集中した重みがサンプリングされるのは確率的な解釈のもとでは不可解と言わざるを得ない。0が多く得られるという現象の本質はもっと別の部分に由来するはずだということは、頭の片隅に置いておくとよい。

学習

リッジ回帰のときとまったく同様の手続きで最適化問題

\, \underset{w \in \mathbb{R ^ n}}{\operatorname{arg} \operatorname{min}} \| y - \Phi ^ \mathrm{T} w \| _ 2 ^ 2 + \lambda \| w \| _ 1

が導出される。\| \cdot \| _ 1はベクトルのL ^ 1ノルムであり、

\| x \| _ 1 = \sum _ {i=1} ^ n | x _ i |

である。

目的関数が絶対値を含むので、この最適化問題は(1次元の場合を除いて)解析的に解くことはできず、単純な勾配法でも解くことはできない。

LARS、座標硬化法、FISTA、ADMM、射影勾配法などで解くことができる。

scikit-learn

sklearn.linear_model.Lasso