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

  • 还要最小化x的“能量”:||A x - b||^2 + m*||x||^2
  • 最小化“x导数中的能量”||A x - b||^2 + m ||H x||^2,其中H是恒等式和第一个非对角
  • 上具有-1的矩阵的和
  • 通常,最小化||A x - b||^2 + m ||H x - f||^2

  • 是否有一种方法可以通过某种巧妙的方式来重现问题1.-3,从而使nnls做到这一点。以上?我对这样的事情抱有希望的原因是Whitall et al(对付费专区表示抱歉)在一篇论文中提出了一点意见,说“很幸运,可以从上面的原始形式采用NNLS来解决问题。 3“。

    最佳答案

    我认为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']'(即,将A堆叠在H之上,将b堆叠在f之上)并解决
    || A * x-b * || ^ 2上的非负线性最小二乘具有向量x的所有元素都≥0的约束。

    关于r - 在R的nnls中实现其他约束,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8107660/

    10-12 18:09