线性回归与线性方程组求解的疑问

 

主角描述:

线性回归:y=Wx+b,通过多组(x,y)估计出W和b,如果x有多个特征,W、b、y为一维向量,x为多个样本的矩阵,可以通过梯度下降法求解;

 

 

线性方程组求解:Y=AX,X、Y为一维向量,A为矩阵,可以通过最小二乘或梯度下降的方法求解。

 

 

 

矛盾冲突:

可以看出,如果b为0,则线性回归问题和线性方程组求解问题没有什么本质区别,将线性回归的等式两边转置,就是线性方程组的形式,只是未知量的表达形式不同,一个是W一个是X。线性方程组中,A如果是满秩的,则有精确解。那么理论上通过构造凸函数,迭代逼近精确解,然而我发现用线性回归的方法很难得到比较准确的结果。使用tensorflow简单几行代码做一个线性回归分析的程序,当X为方阵的时候,误差很大。

 

 

问题解决:

网上也没有这方面的解释,开始怀疑自己哪里出问题了,可是程序用于线性回归没有问题。开始认为是线性回归属于拟合问题,所以需要的点越多越好,但反过来想,既然是线性拟合,所谓“三个点确定一个面”是不需要多余的样本点啊,想到这里突然灵光一现,三个点如果共线是不能确定一个面的,在矩阵分析中,这属于矩阵A中有相关的基,然而这种情况是A不满秩,并不符合仿真的情况。于是又跑了几遍程序,发现在A为方阵的情况下偶尔会有非常好的结果,这是为什么呢,难道和条件数有关系?于是输出了A的条件数,果然当A的条件数小的时候,结果就非常好。

 

 

那么问题找到了,虽然A满秩,但是其中有基非常相似,可以认为两个向量的夹角非常小,或者有向量的绝对值非常小,不容易“辨认”,给求解造成了困难,迭代的时候自然也很难找对方向。从机器学习的角度看,要想结果准,除了样本多以外,样本间的相关性尽可能的小。这里开个脑洞,回头再仔细分析一下:既然条件数影响这么大,那么在使用梯度下降法迭代的时候,A和梯度有关,是否能够通过计算A的条件数优化迭代步长呢?(有可能已经有这方面的分析,但个人还没有学习到),这对于神经网络的调参应该有指导意义吧。

参考:病态矩阵与条件数

你可能感兴趣的:(线性回归与线性方程组求解的疑问)