1. 程式人生 > >線性代數 -- 投影矩陣和最小二乘

線性代數 -- 投影矩陣和最小二乘

上一篇文章主要講了子空間的投影, 其中一個主要的知識點是:投影矩陣, P = A(ATA)-1AT, 這個公式的作用就是投影, 比如P*b就是將向量b投影到距離它的列空間最近的位置;

舉兩個極端的例子,

  1. 如果向量b位於它自己的列空間中, 那麼向量b在其列空間中的投影就是它自己, 即:Pb = b
  2. 如果向量b與它自己的列空間垂直, 那麼向量b在其列空間中的投影就是0, 即:Pb = 0

通常情況下, 向量b都可以分解成一個垂直於平行其列空間的向量, 投影的作用就是去除垂直於其列空間的向量, 儲存平行於列空間的那個向量

那為什麼這個矩陣P會有這種作用呢?

為了簡便我將向量b的垂直於自己列空間的分向量記為e, 向量b的平行於自己列空間的分向量記為p。

對於e向量, e是A的轉置零空間的向量, 那麼Pb就為0(ATb=0)。

對於p向量, p位於列空間中, b2可以表示為Ax, PAx = b。

b = e + p。 p = Pb, e = (I - P)b

下面接著講一下前文那個求最優直線, 我們的方法是找到每一個點到直線的誤差, 然後再將所有的誤差平方和相加, 我們要找的就是擁有最小平方和的解[即最小二乘]。這些誤差就是Ax - b = e, e為誤差。 當e=0時, 意味著誤差為零, 也就是所有的點都過這條直線, 但是在這道題裡面 這是不可能的。 在這裡我先做一下說明, 我將三個點記為:b1, b2, b3; 這三個點在最優直線上的投影點記為:p1, p2, p3; 點和投影點的距離記為:e1, e2, e3。易知每個點和最優直線之間的誤差就是e1, e2, e3。 所以誤差的平方和就是e12

+ e22 + e32。 說明一下為什麼要加入投影點p, 因為三個投影點p都在同一條直線上, 所以如果我們可以解出來p就可以知道這一條最優直線了。

下面我們開始解p, x = 這裡寫圖片描述上一篇文章主要講了子空間的投影, 其中一個主要的知識點是:投影矩陣, P = A(ATA)-1AT, 這個公式的作用就是投影, 比如P*b就是將向量b投影到距離它的列空間最近的位置;

舉兩個極端的例子,

  1. 如果向量b位於它自己的列空間中, 那麼向量b在其列空間中的投影就是它自己, 即:Pb = b
  2. 如果向量b與它自己的列空間垂直, 那麼向量b在其列空間中的投影就是0, 即:Pb = 0

通常情況下, 向量b都可以分解成一個垂直於平行其列空間的向量, 投影的作用就是去除垂直於其列空間的向量, 儲存平行於列空間的那個向量

那為什麼這個矩陣P會有這種作用呢?

為了簡便我將向量b的垂直於自己列空間的分向量記為e, 向量b的平行於自己列空間的分向量記為p。 如圖:
這裡寫圖片描述
對於e向量, e是A的轉置零空間的向量, 那麼Pb就為0(ATb=0)。

對於p向量, p位於列空間中, b2可以表示為Ax, PAx = b。

b = e + p。 p = Pb, e = (I - P)b

下面接著講一下前文那個求最優直線問題:當我們遇到一個方程組,有太多的方程,未知數卻只有幾個,現在我們要求它的最優解。假設有三個點(1,1),(2,2),(3,2),這三個點擬合直線b=C+Dt。 我們的方法是找到每一個點到直線的誤差, 然後再將所有的誤差平方和相加, 我們要找的就是擁有最小平方和的解[即最小二乘]。這些誤差就是Ax - b = e, e為誤差。 當e=0時, 意味著誤差為零, 也就是所有的點都過這條直線, 但是在這道題裡面 這是不可能的。 在這裡我先做一下說明, 我將三個點記為:b1, b2, b3; 這三個點在最優直線上的投影點記為:p1, p2, p3; 點和投影點的距離記為:e1, e2, e3。易知每個點和最優直線之間的誤差就是e1, e2, e3。 所以誤差的平方和就是e12 + e22 + e32。 說明一下為什麼要加入投影點p, 因為三個投影點p都在同一條直線上, 所以如果我們可以解出來p就可以知道這一條最優直線了。

下面我們開始解p, x = 這裡寫圖片描述, 可以使用ATAx = ATb, 帶入相關資料可以得到

這裡寫圖片描述
這裡寫圖片描述ize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
通過上面的矩陣等式可以得到
這裡寫圖片描述
所以就可以求出最優的直線。接下來的e和p就都不難了
這裡寫圖片描述這裡寫圖片描述
滿足b = p + e, p和e有什麼關係呢? 除了p + e = b 之外, p垂直於e; 這點應該很好理解, 從影象上可以清晰的看出, e還垂直於整個列空間。 這個方法也叫作最小二乘。