Math 高阶线性回归

Math 高阶线性回归,math,linear-algebra,Math,Linear Algebra,我有矩阵系统: A x B=C A是A的n和B是n的B。A和B都是未知的,但是我有关于C的部分信息(我在其中有一些值,但不是全部),并且n被选得足够小,以至于系统预计会受到过度约束。不要求A中的所有行或B中的所有列都过约束 我正在寻找一个最适合这个系统的解决方案(注意:我知道不会有一个唯一的解决方案,但我想要的是一个最好的解决方案) 做一个具体的例子;所有的a和b都是未知的,所有的c都是已知的,而?'s被忽略。我想找到一个只考虑已知c的最小二乘解 [ a11, a12 ]

我有矩阵系统:

A x B=C

A
A
n
B
n
B
A
B
都是未知的,但是我有关于
C
的部分信息(我在其中有一些值,但不是全部),并且
n
被选得足够小,以至于系统预计会受到过度约束。不要求
A
中的所有行或
B
中的所有列都过约束

我正在寻找一个最适合这个系统的解决方案(注意:我知道不会有一个唯一的解决方案,但我想要的是一个最好的解决方案)


做一个具体的例子;所有的a和b都是未知的,所有的c都是已知的,而?'s被忽略。我想找到一个只考虑已知c的最小二乘解

[ a11, a12 ]                                     [ c11, c12, c13, c14, ?   ]
[ a21, a22 ]   [ b11, b12, b13, b14, b15]        [ c21, c22, c23, c24, c25 ]
[ a31, a32 ] x [ b21, b22, b23, b24, b25] = C ~= [ c31, c32, c33, ?,   c35 ]
[ a41, a42 ]                                     [ ?,   ?,   c43, c44, c45 ]
[ a51, a52 ]                                     [ c51, c52, c53, c54, c55 ]


请注意,如果B仅被修剪为b11和b21,而未知的第4行被剔除,那么这几乎是一个标准的最小二乘线性回归问题。

一个猜测:a可能会起作用?

这个问题的问题如前所述

设A,B,C=5为标量。你是在要求解决这个问题 a*b=5 它有无穷多的解

根据上述信息,一种方法是将 函数g定义为

g(A,B)=|AB-C | | ^2=迹线((AB-C)*(AB-C))^2

使用牛顿法或准割线法(BFGS)。
(您可以在此处轻松计算渐变)。 M*是M的转置,乘法是隐式的。 (规范是弗罗贝尼乌斯规范……我删除了 下划线F(因为它未正确显示)

由于这是一个固有的非线性问题,标准线性 代数方法不适用

如果你能提供更多的信息,我也许能提供更多的帮助


还有一些问题:我认为问题在于没有 更多信息,没有“最佳解决方案”。我们需要 确定我们正在寻找的更具体的想法。 一个想法可能是“最稀疏”的解决方案。这个地区是 这是一个热门的研究领域,拥有世界上最优秀的人才 世界在这里工作(见Terry Tao等人关于核规范的工作) 这个问题虽然容易处理,但仍然很难解决


不幸的是,我还不能发表评论,所以我将在这里添加我的评论。 正如下面所说的,LM是解决这个问题的一个很好的方法,它只是一种方法。 按照牛顿式的方法 优化问题或非线性求解问题

下面是一个想法,使用您上面给出的示例:让我们定义 两个新向量V和U,每个向量有21个元素(定义的元素数完全相同 C)中的元素

V正好是C的已知元素,按列顺序排列,所以(用matlab表示法)

V=[C11;C21;C31;C51;C12;…;C55]

U是一个向量,它是乘积AB的列顺序,省略了 矩阵C中与“?”相对应的元素。将所有变量收集到x中 我们有
x=[a11,a21,…a52,b11,b21…,b25]

f(x)=U(如上所述)

现在我们可以用你最喜欢的非线性最小二乘法来解f(x)=V

另外,尽管下面的海报推荐模拟退火,我还是推荐 反对它。有一些问题,它的工作,但它是一个启发。当你有 强大的分析方法,如高斯-牛顿或LM,我说使用它们。(用我自己的
体验(即)

您有两种选择。这种方法被公认为是最好的LS方法。一个免费的实现是在。但是,如果计算速度很快,并且有相当多的参数,我强烈建议使用蒙特卡罗方法,例如

从答案中的一组参数开始,然后将其中一个参数按随机百分比增加到最大值。然后计算系统的适应度函数。现在,诀窍来了。你不能扔掉不好的答案。你用玻尔兹曼概率分布来接受它们

P = exp(-(x-x0)/T)
其中T是温度参数,x-x0是当前适应度值减去前一个。在x个迭代次数之后,您将T减少一个固定的量(这称为冷却计划)。然后对另一个随机参数重复此过程。当T减小时,选择的较差解会减少,最终该过程变成“贪婪搜索”,只接受改善拟合的解。如果您的系统有许多自由参数(>10个左右),这确实是唯一一条有机会达到全局最小值的道路。这种拟合方法大约需要20分钟来编写代码,并需要几个小时来调整。希望这有帮助


仅供参考,Wolfram在旅行商问题的背景下对此进行了很好的讨论,我已经非常成功地使用它来解决一些非常困难的全局最小化问题。它比LM方法慢,但在大多数困难/相对较大的情况下要好得多。

基于将B切分为一列并删除带有未知项的行将这转化为非常接近已知问题的认识,一种方法是:

  • 用随机值为A种子
  • 独立求解B的每一列
  • 重做问题,以允许解决步骤2中给定B值的A的每一行
  • 重复步骤2,直到事情解决

  • 我不知道这是否稳定。

    我不知道如何处理丢失的值,所以我将忽略这个问题

    没有独特的解决方案。要找到最佳解决方案,您需要某种度量来判断它们。我假设你想使用一个最小二乘度量,即a和B的最佳猜测值是那些使数字之和[C_ij-(a B)_ij]^2最小化的值

    有一件事您没有提到,那就是如何确定n的值。简言之,我们可以想出“好的”