首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用CVX MATLAB软件包实现稀疏群套索

用CVX MATLAB软件包实现稀疏群套索
EN

Stack Overflow用户
提问于 2015-03-25 19:17:43
回答 4查看 4.6K关注 0票数 1

有谁知道如何使用MATLAB中的凸优化软件包CVX实现稀疏组lasso?

我不知道怎么把这个公式描述成CVX原型。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-03-25 22:16:37

我发现了一些这里

我决定分享它!!

票数 3
EN

Stack Overflow用户

发布于 2015-03-29 06:06:40

你一定要用CVX吗?Inria有一个名为垃圾邮件的稀疏建模包,它是用Matlab、R和Python编写的。如果您想要一组lasso正则化器,请查看近端工具箱中mexproximalFlat下的文档。也有一些例子。我经常使用python垃圾邮件包。

票数 1
EN

Stack Overflow用户

发布于 2017-02-21 15:49:25

(校正:两者都支持不同的分组大小。来自nfs的示例使用附加约束支持不同的组大小。)

有关nfshttp://ask.cvxr.com/t/formulating-sparse-group-lasso-in-cvx/793/4给出的示例,请参阅此网页

但是,此示例似乎不允许不同的组大小。您可以参考以下示例(所使用的公式是Eq.3,在Simon、诺亚和Robert中)。“标准化和团体套索处罚”统计资料22.3 (2012):983。

代码语言:javascript
复制
% 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));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29264607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档