R中的非负套索实现

机器算法验证 r 套索
2022-01-26 01:49:20

我正在寻找一些可以使用的开源或现有库。据我所知, glmnet 包不是很容易扩展以涵盖非负面情况。我可能是错的,任何有任何想法的人都非常感谢。

非负是指所有系数都被限制为正(> 0)。

3个回答

里面有glmnet选项

lower.limits=0

您可以使用,这将是对拟合系数强制执行正性约束的适当方法,如果您将参数设置alpha为 1,您将拟合 LASSO。结合参数upper.limits,您还可以指定框约束。glmnet软件包也比软件包快得多penalized,在此处的另一个答案中建议。

一个可以适应套索和弹性网络并支持正性和盒子约束的Rcpp版本glmnet也在准备中,可在https://github.com/jaredhuling/ordinis进行测试

有关一种选择,请参阅惩罚包。随包附带Vignette (PDF!) 在第 3.9 节中有一个示例。

本质positive = TRUE上是在penalized()函数调用中设置参数。

这篇论文和这篇论文表明,在某些条件下,非负最小二乘解的硬阈值处理在性能方面可能与 L1 正则化 (LASSO) 相当或更好。一个例子是,如果您的设计矩阵只有非负条目,这通常是这种情况。

值得一试,因为 NNLS 得到了非常广泛的支持,并且也将更容易/更快地解决。