【问题标题】:Implementing additional constraints in R's nnls在 R 的 nnls 中实现额外的约束
【发布时间】:2011-11-12 21:23:21
【问题描述】:

我正在使用非负线性最小二乘算法的R interface to the Lawson-Hanson NNLS 实现,该算法在向量 x ≥ 0 的所有元素的约束下求解 ||A x - b||^2。这很好用,但我想添加更多约束。我感兴趣的是:

  1. 同时最小化 x 的“能量”: ||A x - b||^2 + m*||x||^2

  2. 最小化“x 导数中的能量” ||A x - b||^2 + m ||H x||^2,其中 H 是恒等式与第一个非对角线为 -1 的矩阵之和

  3. 通常,最小化||A x - b||^2 + m ||H x - f||^2

有没有一种方法可以通过一些巧妙的方式来重述问题 1.-3 来诱使 nnls 做到这一点。多于?我对这样的事情抱有希望的原因是Whitall et al(对不起付费墙)的一篇论文中有一个小小的评论,声称“幸运的是,可以从上面的原始形式采用 NNLS 来容纳一些东西在问题 3"中。

【问题讨论】:

  • 下面的解决方案是否有效,因为我认为 nnls 要求设计矩阵的所有元素都是正数,对于这个 A* 矩阵来说,情况并非如此......它可以解决上面的案例1。也许使用 quadprog 而不是 nnls 会起作用,就像在stats.stackexchange.com/questions/136563/… 中的情况 2 一样?案例 1 称为岭回归,参见 stats.stackexchange.com/questions/69205/…,案例 2 称为“融合岭”。

标签: r least-squares minimization


【解决方案1】:

我认为 m 是一个标量,对吧?考虑简单的情况 m=1;您可以通过让 H* = sqrt(m) H 和 f* = sqrt(m) f 并使用此处给出的求解方法来推广 m 的其他值。

所以现在你试图最小化 ||A x - b||^2 + ||H x - f||^2。

令 A* = [A' | H']' 令 b* = [b' | f']'(即在 H 上堆叠 A,在 f 上堆叠 b)并解决原始问题 ||A* x - b*||^2 上的非负线性最小二乘,其约束条件是向量 x ≥ 0 的所有元素。

【讨论】:

  • 是的,m 是标量。哦,天哪 - 有点尴尬 - 这很明显,我不知何故将自己与所涉及的矩阵和向量的维度混淆了。我已经把它放在我对 nnls 的调用中,它工作得很好......
  • 这行得通吗,因为我认为 nnls 要求设计矩阵的所有元素都是正数,而对于这个 A* 矩阵,情况并非如此......它可以解决案例1上面虽然。也许使用 quadprog 而不是 nnls 会起作用,就像 stats.stackexchange.com/questions/136563/… 对于案例 2?案例 1 称为岭回归,参见 stats.stackexchange.com/questions/69205/…,案例 2 称为“融合岭”。
猜你喜欢
  • 1970-01-01
  • 2011-01-17
  • 2021-11-20
  • 1970-01-01
  • 2020-05-12
  • 1970-01-01
  • 2015-05-17
  • 1970-01-01
  • 2018-09-17
相关资源
最近更新 更多