Home > dal > dalsql1.m

dalsql1

PURPOSE ^

dallrgl - DAL with the squared loss and the L1 regularization

SYNOPSIS ^

function [ww,status]=dalsql1(ww,A,bb, lambda, varargin)

DESCRIPTION ^

 dallrgl - DAL with the squared loss and the L1 regularization

 Overview:
  Solves the optimization problem:
   xx = argmin ||A*x-bb||^2 + lambda*||x||_1

 Syntax:
  [xx,status]=dallrgl(xx, A, bb, lambda, <opt>)

 Inputs:
  xx     : initial solution ([nn,1])
  A      : the design matrix A ([mm,nn]) or a cell array {fA, fAT, mm, nn}
           where fA and fAT are function handles to the functions that
           return A*x and A'*x, respectively, and mm and nn are the
           numbers of rows and columns of A.
  bb     : the target vector ([mm,1])
  lambda : the regularization constant
  <opt>  : list of 'fieldname1', value1, 'filedname2', value2, ...
   stopcond : stopping condition, which can be
              'pdg'  : Use relative primal dual gap (default)
              'fval' : Use the objective function value
           (see dal.m for other options)
 Outputs:
  xx     : the final solution ([nn,1])
  status : various status values

 Copyright(c) 2009 Ryota Tomioka
 This software is distributed under the MIT license. See license.txt

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 % dallrgl - DAL with the squared loss and the L1 regularization
0002 %
0003 % Overview:
0004 %  Solves the optimization problem:
0005 %   xx = argmin ||A*x-bb||^2 + lambda*||x||_1
0006 %
0007 % Syntax:
0008 %  [xx,status]=dallrgl(xx, A, bb, lambda, <opt>)
0009 %
0010 % Inputs:
0011 %  xx     : initial solution ([nn,1])
0012 %  A      : the design matrix A ([mm,nn]) or a cell array {fA, fAT, mm, nn}
0013 %           where fA and fAT are function handles to the functions that
0014 %           return A*x and A'*x, respectively, and mm and nn are the
0015 %           numbers of rows and columns of A.
0016 %  bb     : the target vector ([mm,1])
0017 %  lambda : the regularization constant
0018 %  <opt>  : list of 'fieldname1', value1, 'filedname2', value2, ...
0019 %   stopcond : stopping condition, which can be
0020 %              'pdg'  : Use relative primal dual gap (default)
0021 %              'fval' : Use the objective function value
0022 %           (see dal.m for other options)
0023 % Outputs:
0024 %  xx     : the final solution ([nn,1])
0025 %  status : various status values
0026 %
0027 % Copyright(c) 2009 Ryota Tomioka
0028 % This software is distributed under the MIT license. See license.txt
0029 
0030 function [ww,status]=dalsql1(ww,A,bb, lambda, varargin)
0031 
0032 opt=propertylist2struct(varargin{:});
0033 opt=set_defaults(opt,'solver','nt',...
0034                      'stopcond','pdg');
0035 
0036 
0037 
0038 prob.floss    = struct('p',@loss_sqp,'d',@loss_sqd,'args',{{bb}});
0039 prob.fspec    = @(xx)abs(xx);
0040 prob.dnorm    = @(vv)max(abs(vv));
0041 prob.obj      = @objdall1;
0042 prob.softth   = @l1_softth;
0043 prob.stopcond = ['stopcond_' opt.stopcond];
0044 prob.ll       = -inf*ones(size(bb));
0045 prob.uu       = inf*ones(size(bb));
0046 prob.Ac       =[];
0047 prob.bc       =[];
0048 prob.info     =[];
0049 
0050 if isequal(opt.solver,'cg')
0051   prob.hessMult = @hessMultdall1;
0052 end
0053 
0054 if isequal(opt.stopcond,'fval')
0055   opt.feval = 1;
0056 end
0057 
0058 [mm,nn]=size(A);
0059 prob.mm       = mm;
0060 prob.nn       = nn;
0061 
0062 [ww,uu,status]=dal(prob,ww,[],A,[],lambda,opt);
0063

Generated on Sat 22-Aug-2009 22:15:36 by m2html © 2003