Yixuan Qiu & Rongrong Zhang
2015-12-02
@ STAT 598 Computing for Big Data
minimizef(θ)+g(z)subject toAθ+Bz=c
f and g are convex functions
Looks bizarre? Let's see two familiar examples
minf(θ)+g(z)s.t.Aθ+Bz=c
minf(θ)+g(z)s.t.Aθ+Bz=c
θk+1:=argminθ(f(θ)+ρ2‖Aθ+Bzk−c+uk/ρ‖22)zk+1:=argminz(g(z)+ρ2‖Aθk+1+Bz−c+uk/ρ‖22)uk+1:=uk+ρ(Aθk+1+Bzk+1−c)
βk+1:=(X′X+ρI)−1(X′y+ρzk−uk)zk+1:=Snλ/ρ(βk+1+uk/ρ)uk+1:=uk+ρ(βk+1−zk+1)
βk+1:=(X′X)−1X′(y+zk−uk/ρ)zk+1:=S1/ρ(Xβk+1−y+uk/ρ)uk+1:=uk+ρ(Xβk+1−zk+1−y)
minN∑i=1fi(θi)+g(z)s.t.θi−z=0, i=1,…,N
θk+1i:=argminθi(fi(θi)+ρ2‖θi−zk+uki/ρ‖22)zk+1:=argminz(g(z)+Nρ2‖z−ˉθk+1−ˉuk/ρ‖22)uk+1i:=uki+ρ(θk+1i−zk+1)
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