LASSO with general linear inequality constraints

Hi,
I’m new to TFOCS and CVX.

I’m trying to solve LASSO with general linear inequality constraints e.g. Wx>=0.

It seems to me that all I need to do is modifying prox_l1pos, from

any( x(:) < 0 )

to

any( W*x < 0 )

Am i being too naive?

Unfortunately that won’t work. That’s valid for implementing the function, but you also need to modify the prox, and that modification is not so simple.

The good news is that TFOCS was built for this case – you simply supply W in the linear operator spot for calling TFOCS_SCD (and give it proj_Rplus for the projection).


Update:

Problem solved. The approach proposed in this post does not work. Should use the composite SCD form introduced in Userguide Sec. 4.4.


Could you elaborate a bit.

The problem i’m trying to solve is:
minimize (1/2)*norm( A * x - b )^2 + lambda * norm( x, 1 )
s.t. W * x >= 0

Do you mean:

objectiveF= tfunc_sum(f1, f2),
where
f1=smooth_quad(A^TA, Ab),
f2=prox_l1(lambda).

affineF=W, and conjnegF= proj_Rplus?

The userguide should clarify this. If it’s still not clear, let us know. I am not able to help now but would perhaps be able to help sometime next week.

Thanks a lot!

Problem solved. I use the composite SCD form introduced in Sec. 4.4. Compared the result with CVX and everything seems fine.

One last question, on this type of problems how does TFOCS compared to CVX in terms of speed?