前置知識
矩陣的逆
知識地圖

首先我們將了解一種叫升維的方法,用已有特征構造更多的特征。接着通過對空間與投影建立一定的概念后,推導出最小二乘法。
當特征數量不足時
在上一篇《初識線性回歸》中,我們假設要處理的問題有足夠的樣本數量和足夠的特征數量。記得樣本數量是用m表示,特征數量是用n表示。假如只有1個特征該如何構建模型呢?
假設現在有一個數據集,數據集中只包含一個地區房屋的面積信息和銷售情況。即只有面積這一個特征,如何只用一個特征來預測房屋的銷售情況呢?

可視化能幫助我們更好地了解數據間隱藏的規律,先來看一看數據之間的分布情況。

用什么模型可以比較好地擬合數據呢?首先嘗試用一條直線來擬合數據,構建一個線性模型:

關於常數項的說明
還記得在上一篇中講過,線性回歸模型中需要在特征中手動添加一列全為1的特征。這是為什么呢?這是一個很小的但不理順卻很容易混淆的概念,值得反復強調。
我們熟悉的直線公式是以下形式:

其中a為系數,x為變量,b為常數項。常數項是用來控制直線的位置,如果沒有常數項,直線會是經過原點的一條線。顯然有了常數項的模型可以更好地擬合數據。
假設函數是直線的另一種表達方式,兩者是完全等價的。在直線中b是常數項,在假設函數中第一個θ參數是常數項。常數項乘以1等於本身,如下圖所示。

常數項為什么要乘以1呢?因為在實際的運用中,是將參數θ視為一個向量進行運算。特征中添加全為1的一列后,可以使用向量化的方式來運算,提高了效率。

以一個特征為例
原始數據集中特征是不包含全為1的列,將原始數據集傳入函數后,在函數中額外為特征添加全為1的列,在函數中轉換后的形式如下:

設置學習率為0.1,迭代次數為500次。經過特征縮放,訓練后得到的參數如下,其中參數的第一項可以視為常數項:

對應的假設函數與代價函數如下:

我們發現直線似乎不能很好地揭示數據之間存在的規律,但是現在又沒有更多的特征,該怎么辦呢?可以用特征的平方作為新的特征添加進數據集中。

這個模型可以視為非線性模型,同樣也可以通過線性回歸算法來處理,在函數中轉換后的數據集的形式如下:

增加更多的特征以后,模型會不會有更好的表現呢?
設置學習率為0.1,迭代次數為500次。經過特征縮放,訓練后得到的參數如下,其中參數的第一項可以視為常數項:

對應的假設函數與代價函數如下:

似乎並沒有太大的改變?試試其他的學習率。
設置學習率為1,迭代次數為500次。經過特征縮放,訓練后得到的參數如下,其中參數的第一項可以視為常數項:

對應的假設函數與代價函數如下:

升維的方法與局限
可以觀察到相比於直線,新的模型可以更好地擬合數據,或許也能更准確的用於預測新的數據。至此可以總結出以下兩點結論:
1,學習率需要手動調整,這實在是太不智能了,以后我們將了解不需要手動設置學習率的方法。
2,用現有特征的2次方,3次方,4次方......來構造新的特征,可能會得到更准確的模型。
推而廣之,有一個特征的時候,可以用特征的高次方構造新的特征:

推而廣之,有多個特征的時候,可以用特征的高次方的組合構造新的特征:

需要注意的是,雖然用升維的方法可以構造新的特征,但是我們不想頻繁地使用這種方法。如果缺少特征,首先應該想辦法獲取新的特征。相比於人工創造的特征,現實的特征或許會更好一些。
比如我們有一個房子寬度的特征,和一個房子長度的特征。兩者可以組合出房子面積的特征,這顯然是有意義的。但是再添加面積的10次方作為新的特征,似乎失去了現實的意義,變成純粹的數字。
一維空間與投影
一個向量x可以構建一維空間(一條直線),另一個向量y與一維空間可以有以下幾種關系:
1,當向量y垂直一維空間時(內積為0),向量y在一維空間上的投影為0,對應的方程組無解。通過向量x無論如何也無法獲得向量y。

2,當向量y平行一維空間時,向量y在一維空間上的投影為向量本身,對應的方程組有解。在向量x上乘以某一個系數可以獲得向量y。

3,當向量y與一維空間即不平行也不垂直時,向量y在一維空間上存在投影,對應的方程組無解,但存在能夠得到的最優解。在向量x上乘以某一個系數,不能得到全部的向量y,但可以得到部分的向量y。

如上圖所示,向量e是誤差向量,向量p是投影向量。因為向量y不在一維空間中,只能得到向量y的投影向量。類似於有人告訴你,你得不到最好的,那么現實的問題是,第二好的是什么呢?
投影向量p是我們能得到的第二好的向量,問題轉變為如何使投影向量p最大化?向量y可以分解為投影向量p與誤差向量e的組合,當誤差向量e最小化的時候,投影向量p最大化。
什么情況下誤差向量e最小化?當誤差向量e垂直一維空間時最小化,此時有投影向量p最大化。已知兩個垂直的向量內積為0,根據這一點可以建立等式。

注:此時的θ是一個標量;
二維空間與投影
兩個不在同一條直線的向量可以構建二維空間(一個平面),這兩個向量稱為基向量,另一個向量y與二維空間可以有以下幾種關系:
1,當向量y垂直二維空間時,向量y在二維空間上的投影為0。

2,當向量y平行二維空間時,向量y在二維空間上的投影為向量本身。

3,當向量y與二維空間即不平行也不垂直時,向量y在二維空間上存在投影,對應的方程組無解,但存在能夠得到的最優解。在基向量上分別乘以某一個系數,不能得到全部的向量y,但可以得到部分的向量y。

與之前類似,誤差向量e同時垂直於基向量。已知兩個垂直的向量內積為0,根據這一點可以建立等式。

上述是已知的信息。

以上等式可以寫為矩陣的形式。

X是基向量構成的矩陣,當矩陣可逆時,可寫為如下形式。

最小二乘法
推而廣之無論是2維空間,3維空間還是m維空間,道理都是一樣的。如果向量不在空間內,我們只能得到向量在空間內的投影,這種獲得投影的方法稱為最小二乘法。
投影是基向量的線性組合,所謂能得到的最優解,是指這個線性組合的系數。當矩陣可逆時,通過上述公式可以直接求出系數。

回顧《初識線性回歸》中的例子,如今我們可以從一個新的視角來看問題,矩陣X有4個線性無關的基向量,構成完整的4維空間,向量y在空間中,用最小二乘法求出最優解。

通常數據集中樣本的數量m是遠遠大於特征的數量n,如下圖所示。

矩陣X有n個線性無關的基向量,構成m維空間中的n維子空間,無論向量y是否在子空間內,都可以使用最小二乘法求出能得到的最優解。
因為最小二乘法中需要對矩陣進行求逆運算,比較消耗計算資源。當我們的樣本數量比較大時,比如有10萬個,100萬個,1000萬個樣本,可能就無法通過這種方法來直接計算結果。
因此什么情況下使用最小二乘法,什么情況下使用梯度下降法,只能根據具體情況具體分析,沒有一定之規。至此,我們已經掌握了求解線性回歸的第二種方法。
總結
升維是用現有特征構造更多特征的方法,特征相乘可能具有某種意義,比如已知房屋的長度和寬度可以組合出表示面積的特征。類似的,也可以將特征進行相除。
通過從空間的角度來看待矩陣,理解投影與方程組的解之間的聯系。在矩陣可逆的情況下,可以通過最小二乘法獲得投影,同時也就得到了線性回歸的最優解。
雖然線性回歸還有部分內容沒有介紹,至少目前我們對什么是算法,算法如何工作有了感性的認識。馬上,我們就能掌握第二個用於分類的算法,這將是我們接下來的旅程。
非正規代碼


版權聲明
1,本文為原創文章,未經作者授權禁止引用、復制、轉載、摘編。
2,對於有上述行為者,作者將保留追究其法律責任的權利。
Tieven
2019.1.5
tieven.it@gmail.com