稀疏集团通过CVX MATLAB包套索(Sparse Group lasso by CVX MATL

2019-09-27 05:49发布

有谁知道我可以实现稀疏组套索在使用MATLAB CVX,凸优化包?

我不知道我该怎么形容公式CVX原型。

Answer 1:

我发现了一些在这里

我决定分享它!



Answer 2:

你必须使用CVX? INRIA具有稀疏建模软件包称为垃圾邮件写入在Matlab,R和Python。 如果你想要一组套索在文件正则看近工具箱 mexproximalFlat下。 还有一些例子也。 我使用Python的垃圾邮件封装颇有几分。



Answer 3:

校正 :都支持不同组大小从NFS的实施例支持通过使用附加的约束条件不同组的尺寸。)。

请参阅本网页通过NFS给出的例子: http://ask.cvxr.com/t/formulating-sparse-group-lasso-in-cvx/793/4
但是这个例子似乎不允许不同组大小。 你可以参考下面的例子(使用的公式是公式3 西门,诺亚和罗伯特·蒂希雷尼“标准化和组套索的惩罚。”国家统计报22.3(2012):983)

% Refer to Eq. (3) in /Simon, Noah, and Robert Tibshirani. 
%    "Standardization and the group lasso penalty." 
%    Statistica Sinica 22.3 (2012): 983./

% Note that group LASSO allows different group sizes
N = 64; m = 3;   
rho = [2; 4; 6];  % group sizes
n = sum(rho); % num of total parameters
X = rand(N,n);   % X = [X1, X2, ..., X_m]
y = rand(N,1);
lambda = 1;

IndexM = [1, 2; 3, 6; 7, 12];  % indexes of elements in each group
cvx_begin
    % w = [beta1'; beta2'; ...; beta_m']
    variable w(n)    
    expression ws(m)
    for i = 1:m
        ws(i) = norm(w(IndexM(i,1):IndexM(i,2)),2);
    end

    minimize( norm(y-X*w, 2) +  lambda*(sqrt(rho)' * ws) )
cvx_end

% get beta_i, i.e. i-th beta corresponding to i-th group
% e.g. 
i = 2;
beta_i = w(IndexM(i,1):IndexM(i,2));


Answer 4:

我相信CVX不能轻易处理群体规范的SGL,除非你硬编码为每个数据集的群体规范。 如果妳利用Matlab,您可以使用SLEP工具箱 。



文章来源: Sparse Group lasso by CVX MATLAB package
标签: matlab cvx