Yixuan Qiu & Rongrong Zhang
2015-12-02
@ STAT 598 Computing for Big Data
\[ \begin{aligned} \text{minimize}\quad & f(\theta)+g(z)\\ \text{subject to}\quad & A\theta + Bz = c \end{aligned} \]
\( f \) and \( g \) are convex functions
Looks bizarre? Let's see two familiar examples
\[ \begin{aligned} \min & f(\theta)+g(z)\\ \text{s.t.} & A\theta + Bz = c \end{aligned} \]
\[ \begin{aligned} \min & f(\theta)+g(z)\\ \text{s.t.} & A\theta + Bz = c \end{aligned} \]
\[ \begin{align} \scriptstyle \theta^{k+1} & \scriptstyle :=\underset{\theta}{\arg\min}\left(f(\theta)+\frac{\rho}{2}\Vert A\theta+Bz^{k}-c+u^{k}/\rho\Vert_{2}^{2}\right)\\ \scriptstyle z^{k+1} & \scriptstyle :=\underset{z}{\arg\min}\left(g(z)+\frac{\rho}{2}\Vert A\theta^{k+1}+Bz-c+u^{k}/\rho\Vert_{2}^{2}\right)\\ \scriptstyle u^{k+1} & \scriptstyle :=u^{k}+\rho(A\theta^{k+1}+Bz^{k+1}-c) \end{align} \]
\[ \begin{align} \scriptstyle \beta^{k+1} & \scriptstyle :=(X'X+\rho I)^{-1}(X'y+\rho z^{k}-u^{k})\\ \scriptstyle z^{k+1} & \scriptstyle :=S_{n\lambda/\rho}(\beta^{k+1}+u^k/\rho)\\ \scriptstyle u^{k+1} & \scriptstyle :=u^{k}+\rho(\beta^{k+1}-z^{k+1}) \end{align} \]
\[ \begin{align} \scriptstyle \beta^{k+1} & \scriptstyle :=(X'X)^{-1}X'(y+z^{k}-u^{k}/\rho)\\ \scriptstyle z^{k+1} & \scriptstyle :=S_{1/\rho}(X\beta^{k+1}-y+u^{k}/\rho)\\ \scriptstyle u^{k+1} & \scriptstyle :=u^{k}+\rho(X\beta^{k+1}-z^{k+1}-y) \end{align} \]
\[ \begin{aligned} \min & \sum_{i=1}^N f_i(\theta_i)+g(z)\\ \text{s.t.} & \theta_i - z = 0,\ i=1,\ldots,N \end{aligned} \]
\[ \begin{align} \scriptstyle \theta_i^{k+1} & \scriptstyle :=\underset{\theta_i}{\arg\min}\left(f_i(\theta_i)+\frac{\rho}{2}\Vert \theta_i-z^{k}+u_i^{k}/\rho\Vert_{2}^{2}\right)\\ \scriptstyle z^{k+1} & \scriptstyle :=\underset{z}{\arg\min}\left(g(z)+\frac{N\rho}{2}\Vert z-\bar{\theta}^{k+1}-\bar{u}^{k}/\rho\Vert_{2}^{2}\right)\\ \scriptstyle u_i^{k+1} & \scriptstyle :=u_i^{k}+\rho(\theta_i^{k+1}-z^{k+1}) \end{align} \]
class PADMML1
class PLogisticLasso extends PADMML1
class LogisticRidge
class LogisticRidgeNative
LogisticRidge
: pure Java codeLogisticRidgeNative
: using C++ code to speed upimport statr.stat598bd.PLogisticLasso
// Create RDD objects x and y representing
// the data matrix and response vector
// ...
val model = new PLogisticLasso(x, y, sc)
model.set_lambda(2.0)
model.set_opts(max_iter = 500,
eps_abs = 1e-3,
eps_rel = 1e-3,
logs = true)
model.run()
val beta = model.coef