y=A*x+B的多维线性回归



给定y和x的一组值,是否存在解决此问题的标准方法/函数?

对于1D变量y和x,似乎存在,但对于N-D变量y和x,我们将有A是NxN矩阵,B是Nx1向量。

我看到的唯一的解决方案是假设y是一维的,这显然没有帮助。

目前,我唯一的解决方案是进行N^2线性多项式拟合,以获得形式的系数集

y(j(=a_jk x(k(+b_jk

然后通过取B_ jk的平均值得到向量B。我不相信这是这个问题的最佳解决方案。

一种方法是使用最小二乘法找到A和B,以最小化

Q = Sum{ (A*x[i]+B - y[i])'*(A*x[i] + B - y[i])}

(这里'表示转置,我假设你有向量x[0]..x[N-1]和y[0]..y[N-1](

虽然你可以用标准的线性最小二乘解算器做到这一点,但这里有另一种方法:

计算x的平均xbar和y的平均ybar,即

xbar = Sum{ x[i]}/N
ybar = Sum{ y[i]}/N

计算以下矩阵

C = Sum{ (x[i]-xbar)*(x[i]-xbar)'}
D = Sum{ (y[i]-ybar)*(x[i]-xbar)'}

计算A和B

A = D*inv(C)
B = A*xbar-ybar

注意,我们只能在C可逆的情况下计算A。这意味着x[]向量必须跨越它们所在的空间。如果它们不跨越,那么A就不是唯一确定的。

上述配方解决问题的证据并不那么有启发性;如果你想看,请告诉我。

Cris Luengo在评论中确实是正确的。函数mldivide兼作最小二乘解算器

如果A是具有m~=n的矩形m-by-n矩阵,而B是具有m行的矩阵,则A\B返回方程组A*x=B 的最小二乘解

所以如果你有方程

y == A * x + B

然后你必须首先从两边减去B,然后应用mldivide,所以类似

xhat = A(y-B);

相关内容

  • 没有找到相关文章