投稿者「admin」のアーカイブ

ロジスティック回帰におけるグループLasso

$\beta_j,\gamma_j\in R^{K}$ ($j=1,\ldots,p$)に関して、
$$(\beta_j-\gamma_j)\{\sum_{i=1}^Nx_{i,j}x_{i,j’}W_i\}(\beta_{j’}-\gamma_{j’})^T\leq t\sum_{i=1}^Nx_{i,j}x_{i,j’}(\beta_j-\gamma_j)(\beta_{j’}-\gamma_{j’})^T$$
とできます。$W_i$は非負定値ではありませんので、$tI -W_i$, $i=1,\ldots,N$が非負定値となる$t$の中で最小のものを求めます。したがって、(3.16)の場合と同様、第3項を凸な上界に置き換えることができます。必ずしも、
$$\sum_{i=1}^Nx_{i,j}x_{i,j’}W_i\leq L I$$
(L: Lipschitz定数)というように、最大固有値で置き換えなくてもよいということです(この方が厳密な上界になります)。

これに近接勾配法を適用します。

スパースグループLasso

(3.10)(3.11)の更新式を以前に説明しました。スパースグループLassoは、$f=g+k+h$, $g,k,h$は凸、$g$は微分可能という一般的な場合を扱います。
\[\gamma\leftarrow \beta+\nu X^T(y-X\beta) \tag{3.10}\]
\[\beta \leftarrow (1-\frac{\nu \lambda}{\|\gamma\|_2})_+\gamma\tag{3.11}\]
の間に更新式をいれて、
$$\gamma\leftarrow \beta+\nu X^T(y-X\beta) $$
$$\delta \leftarrow {S}_{\lambda\alpha}(\gamma)$$
$$\beta \leftarrow (1-\frac{\nu \lambda(1-\alpha)}{\|\delta\|_2})_+\delta$$
としたのがスパースグループLassoです。特に、最後の2式をまとめたのが、
\[\beta\leftarrow (1-\frac{\nu\lambda(1-\alpha)}{\|S_{\lambda \alpha}(\gamma)\|})_+S_{\lambda\alpha}(\gamma) \tag{3.23}\]
になります。$k(\gamma)=\alpha\lambda \|\gamma\|_1$, $h(\delta)=(1-\alpha)\lambda\|\delta\|_2$が微分可能であれば
$$\gamma \leftarrow \beta-\nu \nabla g(\beta)$$
$$\delta \leftarrow \gamma-\lambda\alpha$$
$$ \beta \leftarrow \delta -\nu\lambda(1-\alpha)\frac{\delta}{\|\delta\|_2}$$
とできます。

グループLassoの更新式(3.10)(3.11)

\[\gamma\leftarrow \beta+\nu X^T(y-X\beta) \tag{3.10}\]
\[\beta \leftarrow (1-\frac{\nu \lambda}{\|\gamma\|_2})_+\gamma\tag{3.11}\]
を更新することによって、1グループ(複数変数)のグループLassoの解が得られます。これは、近接勾配法で、ある$\nu>0$に対して
$$\beta \leftarrow \beta-\nu (\nabla g+\partial h)$$
なる更新を繰り返すことと同じです。それによって、$f=g+h$の最小化がはかれます。ただし、$g,h$は凸, $g$は微分可能, $\partial h$で$h$の劣微分をあらわします。(3.10)(3.11)の両方に$\nu$があるのは、近接勾配法の漸化式で$\nabla g$, $\partial h$同じが$\nu$倍されていることに起因します。$h(\gamma)=\lambda \|\gamma\|_2$が微分できる場合、$\partial h(\gamma)=\lambda \frac{\gamma}{\|\gamma\|_2}$となり、(3.11)は
$$\beta \leftarrow \gamma-\nu \lambda\frac{\gamma}{\|\gamma\|_2}$$
とかけます。また$g(\beta)=\frac{1}{2}\|y-X\beta\|^2$を微分すると$\nabla g(\beta)=-X^T(y-X\beta)$となり、(3.10)(3.11)は、
$$\gamma \leftarrow \beta-\nu \nabla g$$
$$\beta \leftarrow \gamma-\nu \partial h$$
を交互に行っていることになります。

講義の学生がglmnet for Pythonを動かす環境を作成してくれました。

スパース推定のglmnetは、PythonだとCentOSRでないとが動かないので、悩んでいました。講義は、Rの学生とPythonの学生がいるので。dockerで動作する環境を、受講する学生の一人が作成してくれました。windowsでも動きます。

https://github.com/oriki101/sparse_estimation_docker