1. 程式人生 > >機器學習之線性迴歸(機器學習基石)

機器學習之線性迴歸(機器學習基石)

引子

在一個二元分類的問題中我們通常得到的結果是1/0,而在分類的過程中我們會先計算一個得分函式然後在減去一個門檻值後判斷它的正負若為正則結果為1若為負結果為0。

事實上從某種角度來看線性迴歸只是二元分類步驟中的一個擷取它沒有後面取正負號的操作,它的輸出結果為一個實數而非0/1。我們稱這樣的數學模型為線性迴歸。

在傳統上統計學家給出的結果是如下:

它的物理意義就是要提取多筆資料的特徵用一個線性的函式所表示,我們要做的就是讓我們資料的表現與我們函式之間的差距之和越小越好。進一步來說我們就是要找一個h(x)通過調整它的權重W來達到上述目的。(當然此時的W的維度包括常數在內)

幾何意義


圖中的點代表我們資料的表現,而那條藍色的線就是我們的h(x),每個點到線(或者超平面)的距離就是資料與我們線性模型的誤差。我們的目的就是使得所有點到線的距離之和最小。

傳統上我們的線性迴歸的誤差計算為平方誤差表現為下圖:

進一步來說我們模型所犯的錯誤如下圖所示:

左圖中是模型h(x)在樣本上犯的錯誤,右邊是模型h(x)在總體資料上犯的錯誤,我們相信在VC維度的保障下我們可以從大量的資料中學到東西。也就是我們在大量資料下學習使得我們的模型的Ein很小就是我們下一步要完成的目標。

如何最小化Ein

Ein的矩陣表示

由於一個h(x)對應的一個W向量而其他的x與y都為已知量所以我們對h(x)的優化也就是我們對W的優化所以下面的推到中只有W為變數:


經過一系列的推導我們將Ein寫成了更為直觀的矩陣的形式,我們要求的就是Ein最小時W的值是多少。經過一些數學上的推導我們發現Ein

對應的函式是一個凸函式(大陸好像一般都是凹函式)如下圖所示:

根據凸函式的性質我們可以知道在函式的梯度為0的時候我們可以得到函式的最小值,也就是我們要求的W正是Ein的梯度為0的時候所對應的W。

Ein梯度的表示與W的計算

上圖從一維的w(單一變數)推廣到了多維的W(向量)最後得到了最終的梯度表示式如上圖下方所示。

令梯度為0我們可以得到W:

在上圖的上方我們得到了最優的W的表示式,在大多數的情況下X的轉置與X的乘積是有反矩陣的此時的W可以一步計算出來(它只有一個解)如上圖左方所示,在不是反矩陣的情況下我們也會求出一個假的反矩陣來這個假的反矩陣與反矩陣有類似的性質(這種情況下會有多組解我們會選擇其中的一組解)如上圖右方所示。在實務上很多的軟體都寫好了求(假的)反矩陣的包我們可以直接呼叫。

這樣我們就求出了最優的W,同時也求出了最優的h(x)。

線性迴歸的演算法看起來像是一步登天沒有經過看起來一步一步的學習,但是在整個過程中在最後Eout≈0我們說這個演算法確實發生了學習只是學習的步驟隱藏起來了(如果我們編寫一個程式就有直觀的感受我們會有一次一次的迭代)。

Ein的另一種表現形式

H矩陣的意義

如上圖所示Ein可以用一個含有雜訊的式子來表示,在上圖的式子中我們將y矩陣與他的線性變換分離開來我們得到了H矩陣。現在已知Hy = y hat(y上面加^),從線性代數的基礎知識中我們知道H是一個y的線性變換如下圖所示:

在圖中粉紅色部分為X矩陣展開的線性空間而y hat = XWlin所以y hat也在X矩陣所展開的線性空間上,而已知y在X的線性空間外則y - y hat 的向量的大小就是y與X空間上最近的距離(因為我們的y hat是一個最優解)。又知道y與y在X空間投影的距離最小,那麼我們就知道y hat就是y在X空間上的投影。也就是我們的H矩陣是y到X空間的投影動作。同時也知道了(I - H)是y在X空間上取餘數的動作(由y得到y-yhat的線性變換)。

如果我們用力計算的話我們會得到trace(I - H) = N - (d + 1),其中trace是矩陣對角線只和。它的物理意義是什麼N個自由度的向量(x向量的個數與y向量維度都是N)投影到一個d+1維的空間裡(x向量的維度)再經過取餘數之後會得到餘數的自由度為

N-(d+1),也就是y - y hat的維度。

Ein的另一種表現形式


在上圖上線性代數告訴我們我們的目標函式也在X空間中,而我們的標籤y正是f(x)+noise的結果,而在加上我們討論過的線性變換我們就會得出y - y hat = (I - H)noise,加上我們的trace(I - H) = N - (d + 1),在加上我們對noise做平均得到noise level,最後將這些結論帶入以前的Ein表示式得到一個全新的Ein表示式如上圖下方所示。與此同時Eout也可以採用類似的演算法來計算只是相對困難如上圖下方所示。

學習曲線

在經過上述的推導之後我們得到了如下曲線:


他描述了我們的資料量與我們平均可以的得到平均的Ein與Eout的關係,我們可以看出隨著資料量的增大Ein的平均與Eout的平均越來越接近,而且如果在雜訊很小的情況下我們就能辦到Eout≈0,此時我們學到了東西。

最後再次感謝林軒田老師,更多關於機器學習的內容請關注智慧時代的道與術