我有矩阵系统:
A x B = C
{p>A
a
为n
,B
为n
b
。 A
和B
都不为人知,但我有关于C
的部分信息(我有一些值,但不是全部),n
被选为足够小的预计系统将受到过度约束。 A
中的所有行或B
中的列都不需要过度约束。
我正在寻找像least squares linear regression这样的东西来找到最适合这个系统的东西(注意:我知道不会有一个独特的解决方案,但我想要的只是最好的解决方案之一溶液)
举一个具体的例子;所有的a和b都是未知的,所有的c都是已知的,并且?被忽略了。我想找到 a 最小二乘解决方案,只考虑知识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被剔除,则这几乎是标准的最小二乘线性回归问题。
答案 0 :(得分:5)
如上所述,该问题是不正确的。
让A,B和C = 5,成为标量。你要求解决 A * B = 5 它有无穷无尽的解决方案。
根据上面提供的信息,一种方法是尽量减少 函数g定义为
g(A,B)= || AB-C || ^ 2 = trace((AB-C)*(AB-C))^ 2
使用牛顿法或准割线法(BFGS) (您可以在此处轻松计算渐变)。 M *是M的转置,乘法是隐含的。 (标准是frobenius规范......我删除了 强调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,我说使用它们。 (在我自己的 体验是)
答案 1 :(得分:2)
一个疯狂的猜测:singular value decomposition可能会成功吗?
答案 2 :(得分:1)
你有几个选择。 Levenberg-Marquadt algorithm通常被认为是最好的LS方法。 here提供免费实施。但是,如果计算速度很快并且您有相当数量的参数,我强烈建议使用蒙特卡罗方法,例如simulated annealing。
您从答案中的一些参数开始,然后将其中一个增加一个随机百分比,直到最大值。然后,您可以计算系统的适应度函数。现在,这是诀窍。你不要丢掉坏的答案。你接受它们的Boltzmann概率分布。
P = exp(-(x-x0)/T)
其中T是温度参数,x-x0是当前适应值减去前一个。在x次迭代之后,将T减少固定量(这称为冷却计划)。然后,您为另一个随机参数重复此过程。随着T的减少,选择的解决方案越来越少,最终程序变成了“贪婪的搜索”,只接受了改善拟合的解决方案。如果你的系统有很多免费参数(> 10左右),那么这是你有机会达到全局最低要求的唯一方法。这种拟合方法需要大约20分钟来编写代码,并且需要几个小时来调整。希望这会有所帮助。
仅供参考,Wolfram在旅行商问题的背景下对此进行了很好的讨论,并且我一直非常成功地使用它来解决一些非常困难的全局最小化问题。它比LM方法慢,但在大多数困难/相对较大的情况下要好得多。
答案 3 :(得分:1)
我不知道如何处理你的缺失值,所以我将忽略这个问题。
没有独特的解决方案。要找到最佳解决方案,您需要某种度量标准来判断它们。我假设你想要使用最小二乘方度量,即A和B的最佳猜测值是最小化数字之和[C_ij-(A B)_ij] ^ 2的那些。
你没有提到的一件事是如何确定你将用于n的值。简而言之,如果1< = n< = b,我们可以提出'好'的解决方案。这是因为1< = rank(span(C))< = b。其中rank(span(C))= C的列空间的维度。注意,这假设a> = b。为了更正确,我们会写1< = rank(span(C))< = min(a,b)。
现在,假设您已选择n使得1 <= n <= b。如果选择A的列使得span(A)= span(C的前N个本征向量),则将最小化残差平方和。如果你没有任何其他充分的理由,只需选择A的列作为C的第一个特征向量。一旦选择了A,就可以用通常的线性回归方式得到B的值。即B =(A'A)^( - 1)A'C
答案 4 :(得分:0)
基于以下认识:将B切割成单列并且使用未知数移除行将其转换为非常接近已知问题的方法,一种方法是:
我不知道这是否稳定。