機器學習A-Z~評估迴歸模型的表現
本文開始講解關於如何評估迴歸模型的表現的幾個方式。
R平方
首先來講一下前面也有提到的R平方的概念。來看下面這個例子。下面紅色的是資料對應的點,黑色的直線是我們擬合出來的一條簡單線性線性迴歸。
怎麼擬合這條直線呢?實際上就是假設平面上有一條直線,我們將這些資料點向這條直線上做投影,那麼這些投影和實際值的差的平方和最小時就能得到這條直線。這個也有個專業術語叫做剩餘平方和($SS_{res}$)。
接下來還有一種看待資料的方式,假設定義$y_{avg}$即y的平均值,如圖中黑色直線,然後表示出所有資料點,那麼這個時候也可以同樣的將所有點對這條線做投影,此時將這些點和平均值的差值平方和叫作共平方和($SS_{tot}$)。
這個表達方式相對於剩餘平方和不是很常見,但這個項和這些資料的方差有很大關係,因為方差其實就是這裡平方和的前面乘以一個係數。
定義完了剩餘平方和和共平方和後我們就可以定義要說的R平方。如下所示:
$$ R^2 = 1 - \frac{SS_{res}}{SS_{tot}} $$
首先我們看看這個共平方和,實際上和擬合出來的線性迴歸模型是沒有什麼關係的,因為只要有這些資料點,那這個共平方和是永遠存在的。那麼會不會出現共平方和為0呢?在實際情況下一般是不存在的,因為那所有資料是一樣的。其實圖中這條水平直線也是線性迴歸模型的一種,這種方式就是以所有因變數的平均值來進行模擬,不考慮自變數的變化。共平方和也是剩餘平方和的一種。當這個剩餘平方和越小,那麼這裡的R平方越大,即模型越好,R平方最大就為1。那麼什麼時候R平方會為負的呢?很簡單其實就是剩餘平方和比共平方和還要大,但這種情況也是基本不會出現。
廣義R平方(Adjusted $R^2$)
對於上述所說的R平方也是存在一定的侷限性。現在來更深入的談談這個R平方。因為剛剛所說的R平方所針對的實際上是簡單線性迴歸。如果說此時有個多元線性迴歸模型$y = b_0 + b_1 * x_1 + b_2 * x_2$,R平方會發生什麼樣的變化?
對於多元線性迴歸,R平方的定義還是類似的,依然是個最優化問題。我們需要尋找$b_0,b_1,b_2$這些引數,來使得其剩餘平方和最小。我們知道R平方是越大越好,那這裡就有個核心的問題。假設這裡有個線性迴歸模型是兩個自變數的,此時再給它新增一個新的自變數,R平方會發生什麼變化?這裡先講一個結論: R平方永遠不會降低 。也就是說,當我們新加一個自變數,不管這個自變數是什麼,我們模型的擬合效果只會越來越好。這裡給個簡單的證明:
假如說可以找到一個b3可以使得擬合效果更好,即使得剩餘平方和更小,由於共平方和是固定的,所以整個的R平方會升高。那麼假設說我們嘗試了很多的b3都無法使得剩餘平方和更小,但有個最差的選擇,就是b3為0。此時就相當於沒有加上這個b3,R平方自然不會降低。
用之前說提過的薪水的例子來說,這裡的自變數可以包括工作年限和職位,此時如果再加入一個手機尾號來做為新的自變數,當然從直觀的感覺上都知道這個跟薪水沒什麼關係。但從資料上而言,是能找到一絲關聯性的,因此這時的b3會很接近於0但不會是0。此時的R平方會更大。但這時能說這個模型就是擬合的更好麼?顯然是不合理的。這時就看出了R平方的侷限性。需要用廣義的R平方來進行評估:
$$ Adj R^2 = 1 - (1 - R^2) * \frac{n-1}{n-p-1} $$
這裡p是指number of regressors(自變數個數),n是指sample size(資料個數)。n由於是資料集的大小,因此跟模型沒什麼關係,但這裡的p對於擬合的模型實際上有一種懲罰的效果,當p升高時,這裡的分母就會降低,那麼這個分數項就會升高,而此時R平方又會升高,那麼$1-R^2$就會降低,此時實際上就有一種類似拔河的感覺,兩個乘數一個升高一個降低,我們就不知道這個廣義R平方到底會降低還是升高。這就要看這個新加入的自變數對於模型的精準度是否有幫助,能不能彌補後面的懲罰項。這個廣義R平方就能來評估多元線性迴歸模型的好壞的一個很好的引數。這時回過頭看之前的一個多元線性迴歸模型的擬合結果會發現有不同的看法了。這裡就不去贅述,可以自己去嘗試。
因為這裡的R平方是個比較客觀的數值來評判模型的好壞,而不是自己主觀定義的比如之前的p值。因此R平方能更好的反映出一個模型的好壞。但是不是說之前說的p值反向淘汰演算法等等沒有意義了,因為這個反向淘汰給予了我們一個順序來一步步的刪除自變數中的一個,直到達到了最好的模型,這也就我們比較不同模型之間的廣義R平方的最好的條件。
迴歸模型係數的含義
現在再來講講多元線性迴歸中各個引數代表著什麼樣的意義。繼續說之前的公司年收入的例子。首先看看這些引數的符號代表的意義。這個其實很明顯,比如如果所有引數符號都是正的,很明顯如果自變數越大那麼因變數就會越大。
接下來看引數的大小,比如自變數有市場營銷的開支和研發的開支。如果研發的開支的係數是市場營銷的20倍,是否能說研發的開支對公司年收入的影響要遠遠大於市場營銷的開支帶來的影響呢?但這裡不能這樣隨便的下結論,因為引數的大小沒有很顯然的影響。假設這裡研發的引數值時0.7379,研發開支的單位是美元,那如果用萬美元來做單位,對於現在的模型,這裡的引數則要變成7379,此時顯然不能說現在的研發開支相對於之前的研發開支的影響力要大很多。因此這裡係數的大小和其自變數的大小也是息息相關的。但我們可以做出的結論是: 在單位自變數的變化下,這個引數代表著相應因變數會有多少變化 。而且在更多的情況下,不同的自變數的單位也是不同的,因此這裡要注意是單位自變數的變化下。但如果兩個自變數的單位是相同的,比如這裡的研發開支和市場營銷的單位就是一樣的。也就是說花一美元在研發上相當於在市場營銷上要花20美元。對於投資人,這條結論就是很有意義的,他可能就會投資更多的錢在於研發上。
再說說不同模型中,同一個自變數對應的引數很可能是不同的,它所對應的係數不僅僅和自變數本身有關,也和同一個線性迴歸模型中其他的係數存在與否,資料怎麼樣也是有關係的。因為這每個引數代表著 在某一個多元線性迴歸模型下,如果其他自變數不變,只對這一個自變數進行改變,那麼它對預測的結果所帶來的影響 。
以上,就是關於如何評估線性迴歸模型的介紹。