從線性模型到決策樹再到深度學習的分位數迴歸

人工智慧頻道發表於2018-10-26

假設房地產分析師想要根據家庭、年齡以及就業中心的距離來預測房價。其典型的目標是在給定這些因素的情況下生成最佳房價點估計,其中"最佳"通常是指預測與現實之間的最小平方偏差。

但是,如果他們想要預測的不只是單一的估計,還有其範圍呢?這稱為預測區間,產生它們的一般方法稱為分位數迴歸。在這篇文章中,我將描述這個問題是如何正式化,如何採用六種線性,基於決策樹和深度學習的方法中實現它(在Python中,這是Jupyter記事本),以及它們如何針對真實資料集執行的。

分位數迴歸的最小化分位數損失

正如迴歸最小化平方誤差損失函式以預測單點估計一樣,分位數迴歸最小化了預測某個分位數時的分位數損失。最流行的分位數是中位數或第50%,在這種情況下,分位數損失只是絕對誤差的總和。其他分位數可以給出預測區間的終點。例如,中間80%的範圍由第10%和90%來定義。分位數損失根據評估的分位數而不同,使得更多的負誤差對於更高的分位數更多地受到懲罰,並且更多的正誤差對於更低的分位數更加不利。

在深入研究公式之前,假設我們已經預測了一個真值為零的單點,我們的預測範圍從-1到+1。也就是說,我們的錯誤範圍從-1到+1。該圖表示分位數損失如何隨誤差而變化,具體取決於分位數。  

讓我們分別看每一行:

  • 中藍色線顯示中位數,它在零附近對稱,其中所有損失均等於零,因為預測是完美的。到目前為止看起來很好:中位數的目的是將預測集合平分,因此我們希望將低估等同於高估。正如我們很快就會看到的那樣,中位數附近的分位數損失是絕對偏差的一半,因此-1和-1都是0.5,0時是0。

  • 淺藍色線顯示第10個百分位數,它為負誤差分配較低的損失,對正誤差分配較高的損失。第10個百分位意味著我們認為真實價值低於該預測值的可能性為10%,因此將低估的損失分配給低估,而不是高估是有意義的。

  • 深藍色線顯示第90個百分位數,這是與第10個百分位數相反的模式。我們還可以透過分位數來檢視低估和高估的預測。分位數越高,分位數損失函式懲罰低估的次數就越多,懲罰高估的次數就越少。  

從線性模型到決策樹再到深度學習的分位數迴歸


鑑於這種直覺,這裡是分位數損失公式:

從線性模型到決策樹再到深度學習的分位數迴歸


在Python程式碼中,我們可以用最大語句替換分支邏輯:

從線性模型到決策樹再到深度學習的分位數迴歸


接下來我們將看看六種方法:最小二乘法(OLS)、線性分位數迴歸、隨機森林、梯度提升、Keras和TensorFlow,並瞭解它們如何與一些真實資料一起工作。

資料

該分析將使用波士頓住房資料集,其中包含代表波士頓地區城鎮的506個觀測值。它包括目標旁邊的13個特徵,自住房屋的中位值。因此,分位數迴歸預測城鎮(非住宅)的比例,其中位值住宅價值低於一個值。

我訓練80%的模型並測試剩餘的20%。為了便於視覺化,第一組模型使用單一特徵:AGE,即1940年之前建造的住戶自用單位的比例。正如我們所預期的那樣,城鎮的較舊房屋擁有較低的價值,儘管這種關係是嘈雜的。

從線性模型到決策樹再到深度學習的分位數迴歸


對於每種方法,我們將預測測試集上的第10個,第30個,第50個,第70個和第90個百分位數。

(1)普通最小二乘法(OLS)

雖然最小二乘法(OLS)預測均值而不是中值,但我們仍然可以根據標準誤差和逆正態累積分佈函式(CDF)計算預測區間:

從線性模型到決策樹再到深度學習的分位數迴歸


這種基線方法產生以均值為中心的線性和平行分位數(預測為中位數)。經過良好調整的模型將在頂部和底部線之間顯示大約80%的點。請注意,這些點與第一個散點圖不同,因為我們在此處顯示了用於評估樣本外預測的測試集。

從線性模型到決策樹再到深度學習的分位數迴歸


(2)線性分位數迴歸

線性模型超出平均值到中位數和其他分位數。線性分位數迴歸預測給定的分位數,放鬆最小二乘法的平行趨勢假設,同時仍然強加線性(它使分位數損失最小化)。這對於statsmodel來說很簡單:

從線性模型到決策樹再到深度學習的分位數迴歸


從線性模型到決策樹再到深度學習的分位數迴歸


(3)隨機森林

我們首次離開線性模型的是決策樹的一種集合隨機森林。雖然這個模型沒有明確地預測分位數,但我們可以將每棵樹視為一個可能的值,並使用其經驗CDF計算分位數:

https://blog.datadive.net/prediction-intervals-for-random-forests/

從線性模型到決策樹再到深度學習的分位數迴歸


在這種情況下,它有點瘋狂,暗示過度擬合。由於隨機森林更加常用於高維資料集,我們將在向模型新增更多功能後返回它們。  

從線性模型到決策樹再到深度學習的分位數迴歸


(4)梯度提升

另一種基於決策樹的方法是梯度提升,scikit-learn的實現支援顯式分位數預測:ensemble.GradientBoostingRegressor(loss ='quantile',alpha = q)

雖然不像隨機森林那樣跳躍,但它在單一特徵模型上看起來並不好看。  

從線性模型到決策樹再到深度學習的分位數迴歸


(5)Keras(深度學習)

Keras是一個使用者友好的包裝器,包括TensorFlow的神經網路工具包。因此需要檢視Jupyter記事本或閱讀Sachin Abeywardana的更多資訊,瞭解它是如何工作的。#scrollTo=g7s7Grj-A-Sf

最底層的網路是具有扭結的線性模型(稱為整流線性單元,或ReLU),我們可以在視覺上看到:Keras預測在1940年之前建造的城鎮住宅價值會增加70%,同時在非常低和非常高的房齡。這似乎是基於測試資料擬合的良好預測。  

從線性模型到決策樹再到深度學習的分位數迴歸


(6)TensorFlow

Keras的一個缺點是必須分別訓練每個分位數。為了利用分位數共有的模式,我們必須轉到TensorFlow本身。請參閱Jupyter筆記本和Jacob Zweig的筆記本以瞭解更多相關資訊。

#scrollTo=g7s7Grj-A-Sf

我們可以在其預測中看到跨越分位數的這種共同學習,其中模型學習共同的扭結而不是每個分位數的單獨的扭結。這看起來是一個很好的奧卡姆風格的選擇。  

從線性模型到決策樹再到深度學習的分位數迴歸


哪個做得最好?

透過觀察表明深度學習表現良好,線性模型表現良好,基於決策樹的方法表現不佳,但我們能否量化哪個最好?是的,我們可以使用測試集上的分位數損失。

回想一下,分位數損失根據分位數而不同。由於我們計算了五個分位數,因此測試集中的每個觀測值都有五個分位數損失。對所有分位數觀測值求平均證實了視覺直覺:隨機森林的表現最差,而TensorFlow表現最佳。  

從線性模型到決策樹再到深度學習的分位數迴歸


我們也可以透過分位數來解決這個問題,揭示基於決策樹的方法在第90百分位時表現得特別差,而深度學習在較低的分位數處表現最佳。  

從線性模型到決策樹再到深度學習的分位數迴歸


較大的資料集提供了更多改進最小二乘法(OLS)的機會

因此,隨機森林對於這個單一特徵的資料集非常糟糕,但這並不是它們的目的。如果我們將其他12個功能新增到波士頓的住宅模型會發生什麼?  

從線性模型到決策樹再到深度學習的分位數迴歸


基於決策樹的方法捲土重來,最小二乘法(OLS)在改進後,將與其他非決策樹方法之間的差距不斷擴大。

現實世界的問題往往超出預測手段。也許應用程式開發人員不僅對使用者的預期用途感興趣,而且對他們成為超級使用者的可能性感興趣。或者一家汽車保險公司想知道司機在不同門檻下的高價值索賠的可能性。經濟學家可能希望隨機將資訊從一個資料集歸結於另一個資料集,從CDF中挑選以確保適當的變化(我將在後續文章中探討一個例子)。

分位數迴歸對於這些用例中的每一個都很有價值,並且機器學習工具通常可以勝過線性模型,尤其是易於使用的基於樹的方法。那麼嘗試採用自己的資料,讓我知道它是怎麼回事!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545819/viewspace-2217710/,如需轉載,請註明出處,否則將追究法律責任。

相關文章