線性回歸與線性方程組求解的疑問

2021-08-20 09:18:28 字數 901 閱讀 4625

主角描述:

線性回歸: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的條件數優化迭代步長呢?(有可能已經有這方面的分析,但個人還沒有學習到),這對於神經網路的調參應該有指導意義吧。

參考:病態矩陣與條件數

MATLAB 線性方程組求解

clc,clear all close all 高斯消去法 a 2 3 4 3 5 2 4 3 30 線性方程組的係數矩陣 b 6 5 32 線性方程組的右端列向量 m,n size a 測量係數矩陣的維數 if m n fprint 線性方程組的係數矩陣非方陣 break end fprintf ...

MATLAB線性方程組求解

對於一般的,有唯一解的線性方程組,我們可以轉換成矩陣的形式 a x bax b ax b 則可以用矩陣運算求解x,即x a b 求解齊次線性方程組基礎解系的函式是null z null a 表示返回矩陣a的基礎解系組成的矩陣。z還滿足ztz i z null a,r 得出的z不滿足ztz i,但得出...

SVD求解線性方程組

對於任一給定的矩陣am n boldsymbol am n 都存在這樣的分解 a u dv t boldsymbol boldsymbol boldsymbol boldsymbol t a udvt 這裡 u boldsymbol u是乙個 m m m times m m m 的正交矩陣,d bo...