1. 程式人生 > >異方差性以及加權最小二乘優化

異方差性以及加權最小二乘優化

異方差性(heteroscedasticity )是相對於同方差而言的。所謂同方差,是為了保證迴歸引數估計量具有良好的統計性質,經典線性迴歸模型的一個重要假定:總體迴歸函式中的隨機誤差項滿足同方差性,即它們都有相同的方差。如果這一假定不滿足,即:隨機誤差項具有不同的方差,則稱線性迴歸模型存在異方差性。對於異方差性的迴歸問題,需要用到加權最小二乘法。

以下內容轉自:https://zhuanlan.zhihu.com/p/22064801

一.前言

在往前可以看得見的歷史裡,我們漫長的一生中不知道做了多少個迴歸,然而並不是每一個迴歸都盡如人意,究其原因就很多了,可能是迴歸的方程選擇的不好,也可能是引數估計的方法不合適。迴歸的本質是在探尋因變數Y和自變數X之間的影響關係國外的論文裡常常叫因變數為響應變數,自變數為解釋變數),如何來描述這種相關關係呢?我們可以假設Y的值由兩部分組成,一部分是X能決定的,記為f(X),另一部分由其它眾多未加考慮的因素(如隨機因素)所組成,記為隨機誤差e,並且我們有理由認為E(e)=0.於是我們得到

特別地,當f(X)是線性函式時,我們便得到了眾多回歸組成的王國裡最平民也最重要的迴歸模型——線性迴歸。迴歸引數的估計方法最基本的就是最小二乘迴歸。儘管長江後浪推前浪,我們有了更多回歸引數的估計方法(詳見優礦量化實驗室),但依然不影響我們對它的喜愛,為了介紹後續的迴歸方法,我依然要先把普通最小二乘法的迴歸模型擺出來致敬一下:

這裡的Y就是n∗1的變數觀測向量,X為n∗p的已知設計矩陣,β為p∗1未知引數向量,e為隨機誤差向量。(這裡需要注意的是由於有常數項,所以自變數個數其實是p-1個)

Gauss-Markov假設可以簡寫為E(e)=0,Cov(e)=\sigma ^{2}In,Cov(e,x)=0

普通最小二乘法就是使得殘差平方和

最小,通過對矩陣的求導,我們就得到了β的估計\left(x^{T} X \right) {-1}x^{T}Y,在假設下,我們可以證明該估計是β所有線性無偏估計中方差最小的。

與之相關的各種分佈和檢驗就不再贅述,社群裡也有很多帖子可以學習。既然模型有假設,那麼侷限性就出來了,我們常常會發現殘差項並不滿足假設,尤其當變數是時間序列時,非平穩性和自相關性常常會造成異方差的問題,那怎麼處理異方差的問題呢?方法也挺多的,本帖主要討論一種加權最小二乘估計的方法和機器學習裡區域性加權線性迴歸的方法。(注:此文中的線性迴歸是普適的多元線性迴歸,所以均用矩陣來表示更方便)

二.加權最小二乘法

加權最小二乘法其實是廣義最小二乘法的一種特殊情形,而普通最小二乘法也是一種特殊的加權最小二乘法。為了保證知識的完整性,不妨把廣義最小二乘介紹一下:

1.廣義最小二乘法

剛才說到我們的殘差項項不滿足Gauss-Markov假設,那麼我們就把假設放寬一些:考慮以下模型:

這裡的Σ是我們已知的一個n∗n正定對稱矩陣,其中\sigma ^{2}不一定是已知的。也就是說不要求誤差項互不相關了。這裡我們的廣義最小二乘法就是使得廣義殘差平方和

最小,最後β的估計為(x^{T}\Sigma ^{-1}X)−1x^{T}\Sigma ^{-1}Y

實際上,Σ也常常是未知的,但當我們知道Σ的某種形式時,我們可以去估計它。舉個例子,如果出於某種原因,我們樣本的資料來源的地方不一樣,怎樣把他們整合在一起呢,我們可以假設那些來源相同的資料樣本的殘差項方差是一樣的,如:

然後我們再通過迭代的方法(第一步就是普通的最小二乘迴歸)去估計\sigma _{i}^{2},直到相鄰兩次迭代求得的β的估計差不多為止。

從上面可以看出,不論你對自變數和因變數作了何等變換,最終都可以用最小二乘的模型去解決迴歸的問題。但普通最小二乘估計裡的那些美好的性質,分佈和檢驗等在廣義最小二乘裡還存在麼?還一致麼?其實,我們可以通過一些變換,把廣義最小二乘的模型轉換為滿足普通最小二乘法假設的模型,關於這一點,我們以下面的加權最小二乘法舉例說明。

2.加權最小二乘法

加權最小二乘法,就是對上述的Σ取一種特殊的矩陣--對角陣,而這個對角陣的對角元都是常數,也就是權重的倒數,如下:

w_{i}表示的就是第i個樣本在迴歸裡的權重,從上式可以看出來,具有較大權的樣本具有較小的方差,它在迴歸問題裡顯得更加重要。 不妨用W來表示權重矩陣,那麼\Sigma ^{-1}=W,這時我們用廣義最小二乘的方法來求係數的估計,即最小化廣義殘差平方和

β最後的估計結果為:β^=(x^{T}WX)−1x^{T}WY

我們並不滿足於求出廣義的最小二乘估計,我們還要研究它的很多性質,下面上面提過的廣義最小二乘轉換的方法把這個模型轉化為滿足普通最小二乘迴歸假設的模型:

首先我們找一下\Sigma ^{-1}的平方根C,在這個問題裡,很容易得到C:

對迴歸模型每一項乘以C,得到:

這時候Ce的協方差陣為:

這就是滿足Gauss-Markov假設的普通線性迴歸模型了

不妨重新對變數命名:

其中,

感興趣的讀者可以驗證一下,這個新模型用普通最小二乘所估計出來的β和原模型是一樣的,而且線性無偏方差最小的性質和分佈,檢驗等都可以用起來了,如R_{2}及顯著性檢驗等來看擬合的好壞。

三.區域性加權線性迴歸

區域性加權線性迴歸是機器學習裡的一種經典的方法,彌補了普通線性迴歸模型欠擬合或者過擬合的問題。機器學習裡分為無監督學習和有監督學習,線性迴歸裡是屬於有監督的學習。普通的線性迴歸屬於引數學習演算法(parametric learning algorithm);而區域性加權線性迴歸屬於非引數學習演算法(non-parametric learning algorithm)。所謂引數學習演算法它有固定的明確的引數,引數 一旦確定,就不會改變了,我們不需要在保留訓練集中的訓練樣本。而非引數學習演算法,每進行一次預測,就需要重新學習一組 , 是變化的,所以需要一直保留訓練樣本。也就是說,當訓練集的容量較大時,非引數學習演算法需要佔用更多的儲存空間。

上面的話好像不夠直觀,下面我們來直觀地看一下區域性加權線性迴歸到底是怎麼樣的。

區域性加權線性迴歸就是在給待測點附近的每個點賦予一定的權重,也就是加一個核函式矩陣W,最後需要最小化的目標函式如下:

這就是剛剛的加權最小二乘法,再來看看係數的估計項:

好吧,這就是加權最小二乘法,當然,如果這就是區域性加權線性迴歸的全部,也不用發明它了,我們接著看。這裡出現了一個問題,權重是如何確定的,也就是這個所謂的核函式矩陣的形式,百度了一下,通常使用的都是高斯核,形式如下:

x_{i}代表的是第i個樣本點,x是我們預測點,對於金融資料來說,完全可以用時間t來衡量,也就是說時間越近的樣本資料越重要,這樣的預測對想研究的物件而言更準確。

介紹到這裡似乎沒有體現出機器學習的意思,仔細觀察就會發現K是一個很重要的東西,不信,我們舉個例子來看看:

為了簡單起見,我們就用一元的線性迴歸來看看,方便資料視覺化。這裡我們取一些非線性擬合的資料,因為區域性加權線性迴歸的優勢就在於處理非線性關係的異方差問題。

看一下我們需要擬合的樣本資料(點選檢視原文程式碼):

很明顯,這是一個非線性關係的樣本資料,我們先用普通最小二乘迴歸來處理這個問題:

y=1.34568655273+0.979532165941x

可以看到,要用直線來擬合非線性關係略有牽強,這個例子還算舉的不錯,金融資料裡很多時間序列的關係都是非線性的,迴歸的結果往往不好.

下面我們用剛才介紹的區域性加權線性迴歸來擬合一下這個模型,簡單回顧一下過程:

1.用高斯核函式計算出第i個樣本處,其它所有樣本點的權重W

2.用權重w對第i個樣本作加權線性迴歸,得到迴歸方程,即擬合的直線方程

3.用剛才得到的經驗迴歸直線計算出xi處的估計值y^i

4.重複一至三步,得到每個樣本點的估計值

這裡作加權線性迴歸時,我使用的是把加權最小二乘轉換為普通最小二乘的方法,也就是本帖第二部分內容,網上的做法大多是直接用上面的公式算出β的估計值。

剛才說到,k是一個很關鍵的引數,我們從高斯函式的形式可以看出,k取非常大的時候,每個樣本點的權重都趨近於1,我們可以先取k很大,檢驗一下是否正確

可以看到用普通最小二乘估計出來的值和我們用區域性加權估計出來的值非常的一致,說明邏輯是對的。 下面調整一下k的值,來看看各種k值下的擬合狀況:

可以看到,當k越小時,擬合的效果越好,但是我們擬合的目的在於預測,需要避免過擬合的問題,這時候需要做Bias/Variance Trade-off:

Cross Validation可以幫助我們做Bias/Variance Trade-off:

一般的Validation就是把資料分為隨機的兩部分一部分做訓練,一部分作驗證。還有leave-one-out validation,k-fold Cross Validation等方法。

訓練的目的是為了讓訓練誤差儘量減小,同時也要注意模型的自由度(引數個數),避免測試誤差很大。

訓練誤差一般用MSE來衡量:


比如在我們這個簡單的例子裡,如果要對之後的資料進行預測,就需要通過Validation選擇引數k的大小,再對離需要預測的點最近的點做加權線性迴歸去估計那個點的值。