入門| 貝葉斯線性回歸方法的解釋和優點

2020-12-05 機器之心Pro

本文對比了頻率線性回歸和貝葉斯線性回歸兩種方法,並對後者進行了詳細的介紹,分析了貝葉斯線性回歸的優點和直觀特徵。

我認為貝葉斯學派和頻率學派之間的紛爭是「可遠觀而不可褻玩」的學術爭論之一。與其熱衷於站隊,我認為同時學習這兩種統計推斷方法並且將它們應用到恰當的場景之下會更加富有成效。出於這種考慮,最近我努力學習和應用貝葉斯推斷方法,補充學校課程所學的頻率統計方法。

貝葉斯線性模型是我最早對應用貝葉斯推斷的關注點之一。在我們學習的過程中,最重要的部分也許就是將一個概念介紹給別人。本文是我介紹貝葉斯線性回歸的一次嘗試。我會對線性回歸的頻率派方法做一個簡要的回顧,介紹貝葉斯解釋(Bayesian interpretation),並查看將其應用於簡單數據集的結果。

回顧頻率派線性回歸

線性回歸的頻率派視角可能是你所熟悉的、從學校學到的版本:模型假設反應變量(y,也稱因變量)是一組權重和預測變量(x,也稱自變量)乘積的線性組合。完整的公式還包含一個代表隨機採樣噪聲的誤差項。例如,如果我們有兩個預測變量,公式可以寫成:

其中,y 是反應變量(也被稱為因變量),β 為權重(也被稱為模型參數),x 為預測變量,ε 為代表隨機採樣噪聲的誤差項或者沒有被包含在模型中的變量的影響。

線性回歸是一個易於解釋的簡單模型: β_0 是截距項,其它的權重(β's)表示預測變量的增加對反應變量的影響。例如:如果 β_1 為 1.2,那麼 x_1 每增加一個單位,反應變量就會增加 1.2。

我們可以通過矩陣方程將線性模型泛化到有任意數量預測變量的情況。將一個值為 1 的常量項添加到預測變量矩陣中代表截距,這樣我們就可以將矩陣公式寫成:

從訓練數據中學習線性模型的目標是找出係數 β,該係數能夠最好地解釋數據。在頻率派線性回歸中,對數據最好的解釋指的是係數 β 能夠最小化殘差平方和(RSS)。RSS 是已知的真實值(y)和預測模型的輸出(,讀作「y—hat」,表示一個估計值)之間差的平方的總和。殘差平方和是關於模型參數的函數:

這個求和涵蓋了訓練集中的 N 個數據點。我們在此並不深究細節(參考資料:http://www.stat.cmu.edu/~cshalizi/mreg/15/lectures/13/lecture-13.pdf),不過該方程具備模型參數β的封閉解,能夠最小化誤差。這就是對參數 β 的最大似然估計,因為它是在給定輸入 X 和輸出 y 的條件下最有可能的 β 值。矩陣形式表達的封閉解如下:

(同樣地,我們必須給 β 加一個「帽子」,因為它代表對模型參數的估計值。)別被這裡的矩陣數學嚇倒了!得益於像 Python 中的 Scikit-learn 這樣的庫,我們通常不需要對其進行手動的計算(儘管自己編寫一個線性回歸的代碼是很好的做法)。這種通過最小化 RSS 來擬合模型參數的方法被稱為普通最小二乘法(OLS)。

我們從頻率線性回歸中得到的是僅僅基於訓練數據的對模型參數的單次估計。我們的模型是完全通過數據訓練出來的:這樣看來,我們所需要的所有關於模型的信息都被編碼在了訓練數據中。

當得到了 β hat 後,我們可以通過使用模型的等式來估計任意新數據點的輸出值:

舉一個最小二乘法的例子,我們可以對真實世界中的數據進行線性回歸,數據中包含對 15,000 次運動的持續時間和燃燒的卡路裡的觀測值。

通過最小二乘法,我們得到了對模型參數的單次估計。在這個例子中,參數是直線的截距和斜率。我們可以寫出通過 OLS 生成的方程:

calories = -21.83 + 7.17 * duration

從斜率上,我們可以看到每多鍛鍊一分鐘就會額外消耗 7.17 卡路裡的熱量。這個例子中的截距貌似沒有什麼作用,因為它告訴我們如果運動 0 分鐘,我們會消耗 -21.86 卡路裡!這只是一個 OLS 擬合過程的案例,在不考慮它的物理意義是否說得通的情況下,它找到了在訓練數據集上最小化誤差的直線。

如果有一個新的數據點,假設運動持續時間為 15.5 分鐘,我們可以將它帶入到方程中得到消耗的卡路裡的點估計:

calories = -21.83 + 7.17 * 15.5 = 89.2

普通最小二乘法給了我們對輸出的單次點估計,我們可以將其解釋為給定數據時可能性最大的估計。然而,如果有一個很小的數據集,我們可能希望將估計表示為一個可能值的分布。這就是貝葉斯估計起作用的地方。

貝葉斯線性回歸

從貝葉斯學派的觀點來看,我們使用概率分布而非點估計來構建線性回歸。反應變量 y 不是被估計的單個值,而是假設從一個正態分布中提取而來。貝葉斯線性回歸模型如下:

輸出 y 是從一個由均值和方差兩種特徵刻畫的正態(高斯)分布生成的。線性回歸的均值是權重矩陣的轉置和預測變量矩陣之積。方差是標準差 σ 的平方(乘以單位矩陣,因為這是模型的多維表示)。

貝葉斯線性回歸的目的不是找到模型參數的單一「最佳」值,而是確定模型參數的後驗分布。不僅響應變量是從概率分布中生成的,而且假設模型參數也來自於概率分布。模型參數的後驗分布是以訓練的輸入和輸出作為條件的。

其中,P(β|y, X) 是給定輸入和輸出時的模型參數的後驗概率分布。它等於輸出的似然 P(y|β, X) 乘以給定輸入的參數 β 的先驗概率 P(β|X) 並且除以歸一化常數。這是貝葉斯定理的一個簡單表達形式,是支撐貝葉斯推斷的基礎。

讓我們稍微停下腳步,想想這意味著什麼。與 OLS 相比,我們有一個模型參數的後驗分布,它與數據的似然和參數的先驗概率的乘積成正比。在此,我們可以看到貝葉斯線性回歸主要的兩個好處。

先驗分布:如果具備領域知識或者對於模型參數的猜測,我們可以在模型中將它們包含進來,而不是像在線性回歸的頻率方法那樣:假設所有關於參數的所需信息都來自於數據。如果事先沒有沒有任何的預估,我們可以為參數使用無信息先驗,比如一個正態分布。後驗分布:使用貝葉斯線性回歸的結果是一個基於訓練數據和先驗概率的模型參數的分布。這使得我們能夠量化對模型的不確定性:如果我們擁有較少的數據點,後驗分布將更加分散。

隨著數據點的增加,似然會降低先驗的影響,當我們有無限的數據時,輸出的參數會收斂到從 OLS 方法獲得的值。

將模型參數作為概率分布的公式反映了貝葉斯學派的世界觀:我們從最初的估計和先驗分布開始,並隨著收集到更多的證據,模型會變得更少犯錯。貝葉斯推理是我們直覺的自然延伸。通常,我們有一個初始的假設,並且隨著收集到那些或支持、或否定想法的數據越來越多,我們對於世界的模型將會發生改變(理想情況下,這就是我們進行推理的方式)。

實現貝葉斯線性回歸

實際上,對於連續變量來說,估算模型參數的後驗分布是很困難的。因此我們採用抽樣方法從後驗分布中抽取樣本,用來對後驗分布取近似。從分布中抽取隨機樣本來近似估計分布的技術是蒙特卡洛方法的應用之一。我們有許多蒙特卡洛抽樣的算法,其中最常用的是馬爾可夫鏈蒙特卡洛的變體。

貝葉斯線性模型的應用

我將跳過本文的代碼部分(請參閱 PyMC3 中的代碼實現),但是實現貝葉斯回歸的基本流程是:指定模型參數的先驗(在這個例子中我使用正態分布),創建將訓練數據中的輸入映射到輸出的模型,接著用一個馬爾可夫鏈蒙特卡洛(MCMC)算法從模型參數的後驗分布中抽取樣本。最終的結果是參數的後驗分布。我們可以查看這些得到的分布,看看究竟發生了什麼!

第一張圖展示了模型參數後驗分布的近似。這些是 MCMC 進行了 1000 步的結果,表示算法從後驗分布中採樣了 1000 步。

如果我們將斜率和結局的平均值和通過 OLS 得到的相比(OLS 得到的截距為 -21.83 且斜率為 7.17),我們看到這二者得到的結果極為相似。然而,儘管可以使用均值作為一個單次的點估計,但我們還擁有一系列模型參數可能的值。隨著數據點數量的增加,這個範圍將會縮小並且收斂到一個確切的值,表示對模型參數有更大的置信度(在貝葉斯推斷中,一個變量的範圍被稱為可信區間,這與頻率推斷中的置信區間的解釋稍稍有些不同)。

當我們想要展示從貝葉斯模型中得到的線性擬合效果時,我們可以畫出一系列的直線,每條線代表對於模型參數的不同的估計,而並非僅僅顯示估計值。隨著數據點的數目增加,這些直線開始重疊在一起,因為模型參數的不確定性降低了。

為了顯示數據點的數目在模型中的影響,我使用了兩個模型。第一個模型的結果顯示在左邊,它使用了 500 個數據點;而右圖所示的模型使用了 15,000 個數據點。每張圖都顯示了從模型參數的後驗概率中抽樣得到的 100 個可能的模型。

使用 500 個(左圖)觀測值和 15,000 個(右圖)觀測值的貝葉斯線性回歸模型的結果

在使用更少的數據點時,線性擬合的變化更大,這代表著模型中更大的不確定性。有了所有的數據點,OLS 和貝葉斯模型的擬合結果幾乎是一樣的,因為先驗的影響被數據中的似然降低了。

當使用我們的貝葉斯線性模型預測單個數據點的輸出時,我們仍然不是得到單一的值,而是一個分布。下面是 15.5 分鐘的運動所消耗的卡路裡的概率密度圖。紅色的垂直線代表 OLS 的估計值。

從貝葉斯模型中得到的消耗卡路裡的後驗概率密度

我們看到,消耗掉的卡路裡在 89.3 左右的達到概率的峰值,但是完整的估計是一系列的可能值。

結論

與其在貝葉斯學派和頻率學派的討論(或者爭論)中站在任何一方,同時學習這兩種方法才是更加有益的。這樣的話,我們就可以在正確的情況下應用它們。

在擁有有限的數據或者想要在模型中使用先驗知識的問題中,貝葉斯線性回歸方法可以同時引入先驗信息並且顯示不確定性。貝葉斯線性回歸反映了貝葉斯學派處理問題的框架:我們先構造一個初始的估計,並且隨著收集到更多的數據,不斷改進估計。貝葉斯觀點是一種直觀的看待世界的方法,並且貝葉斯推斷可以成為相應的頻率推斷的實用的替代方法。數據科學並不是選邊站,而是要找出最適合這份工作的工具,並且掌握更多的技能只會讓你更有效率!

相關焦點

  • 貝葉斯線性回歸在期貨交易中的應用
    貝葉斯線性回歸模型與經典的線性回歸模型有很大區別,後者把回歸係數看作是固定的未知參數,而前者則把回歸係數看作是一個未知的概率分布,然後根據可獲得的樣本對這些未知分布進行推斷。在計算待預測變量的分布時需要根據回歸係數的分布在給定自變量的情況下進行採樣,從而得到待預測變量的分布。因此通常訓練貝葉斯模型和利用該類模型做預測的計算量都會比常規線性回歸要大。
  • ...詳解線性回歸、樸素貝葉斯、隨機森林在R和Python中的實現應用...
    線性回歸(Linear Regression)線性回歸常用於根據連續變量估計實際數值(房屋成本、電話呼叫次數、總銷售額等)。在此,我們通過擬合一條最佳直線來建立自變量和因變量之間的關係。這條最佳擬合直線被稱為回歸線,用線性方程Y= a *X + b 來表示。回顧童年經歷能幫你更好地理解線性回歸。
  • 詳解線性回歸、樸素貝葉斯、隨機森林在R和Python中的...
    線性回歸(Linear Regression)線性回歸常用於根據連續變量估計實際數值(房屋成本、電話呼叫次數、總銷售額等)。在此,我們通過擬合一條最佳直線來建立自變量和因變量之間的關係。這條最佳擬合直線被稱為回歸線,用線性方程Y= a *X + b 來表示。回顧童年經歷能幫你更好地理解線性回歸。
  • 如何通俗地解釋貝葉斯線性回歸的基本原理?
    在一個基礎模型之下我們需要去estimate一些未知的參數(比如在linear regression, 需要去計算W這個向量), 但在貝葉斯模型下我們需要去計算的是W的分布(而不是W的point estimation),用其分布直接計算對y的預測值p(y|x,D),所以我們需要去需要integrate W,也就是說我們把所有可能的W向量都會去考慮, 這也為什麼貝葉斯模型通常intractable,
  • 機器學習算法集錦:從貝葉斯到深度學習及各自優缺點
    例子:分類和回歸樹(Classification and Regression Tree,CART)Iterative Dichotomiser 3(ID3)C4.5 和 C5.0(一種強大方法的兩個不同版本)優點:容易解釋非參數型缺點:趨向過擬合可能或陷於局部最小值中沒有在線學習回歸(Regression
  • 95後哈佛小哥撰寫從零開始的機器學習入門必備,書籍資源已開放
    線性回歸擴展(Linear Regression Extensions)正則回歸(Regularized Regression)貝葉斯回歸(Bayesian Regression)廣義線性模型(Generalized Linear Models)
  • 95後哈佛小哥撰寫《從零開始的機器學習》,入門必備,書籍資源已開放
    線性回歸擴展(Linear Regression Extensions)正則回歸(Regularized Regression)貝葉斯回歸(Bayesian Regression)廣義線性模型(Generalized Linear Models)3.
  • 多元線性回歸的模型解釋、假設檢驗、特徵選擇
    線性回歸是最流行和討論最多的模型之一,它無疑是深入機器學習(ML)的入門之路。這種簡單、直接的建模方法值得學習,這是進入ML的第一步。在繼續討論之前,讓我們回顧一下線性回歸可以大致分為兩類。簡單線性回歸:當只有一個輸入變量時,它是線性回歸最簡單的形式。
  • 想入門機器學習?機器之心為你準備了一份中文資源合集
    )維基百科上也有很多好資源,對方程、定理等進行了清晰易懂的解釋。Bokeh 和 Seaborne 提供了有趣的替代方案。不必要徹底了解所有包,但是了解每一個包的優點和弱點還是很有用的,可以幫助你選擇合適的包。了解 Matplotlib 細節的資源:《掌握 Matplotlib》,McGreggor D. 著線性回歸線性回歸是最簡單的模型之一,可以把它作為一個優化問題來研究,該問題可通過最小化均方誤差而得到求解。
  • 基於貝葉斯推斷的回歸模型(理論篇)| 機器學習你會遇到的「坑」
    但是我們可以用一個概率密度函數來指定屬性的類條件概率的估計,比如我們可以令條件概率為一個高斯分布:高斯分布由兩個參數(均值和標準差)唯一確定,我們在訓練分類器的過程,其實就是對每個屬性的每個類條件概率的參數進行估計,這裡面所用的方法就是極大似然估計。
  • 入門機器學習之線性回歸
    回歸分析按照涉及的變量的多少,分為一元回歸和多元回歸分析;按照因變量的多少,可分為簡單回歸分析和多重回歸分析;按照自變量和因變量之間的關係類型,可分為線性回歸分析和非線性回歸分析。如果在回歸分析中,只包括一個自變量和一個因變量,且二者的關係可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析。
  • 你了解機器學習中的線性回歸嗎
    然而,隨著機器學習和深度學習的迅速興起,因為線性(多層感知器)層的神經網絡執行回歸,線性回歸的使用也日益激增。 這種回歸通常是線性的,但是當把非線性激活函數合併到這些網絡中時,它們就可以執行非線性回歸。 非線性回歸使用某種形式的非線性函數(例如多項式或指數)對輸入和輸出之間的關係進行建模。
  • 回歸、分類與聚類:三大方向剖解機器學習算法的優缺點(附Python和R...
    1、回歸方法回歸方法是一種對數值型連續隨機變量進行預測和建模的監督學習算法。使用案例一般包括房價預測、股票走勢或測試成績等連續變化的案例。回歸任務的特點是標註的數據集具有數值型的目標變量。也就是說,每一個觀察樣本都有一個數值型的標註真值以監督算法。1.1 線性回歸(正則化)線性回歸是處理回歸任務最常用的算法之一。
  • 線性回歸:簡單線性回歸詳解
    【導讀】本文是一篇專門介紹線性回歸的技術文章,討論了機器學習中線性回歸的技術細節。線性回歸核心思想是獲得最能夠擬合數據的直線。
  • 8種用Python實現線性回歸的方法,究竟哪個方法最高效?
    今天,讓我們來談談線性回歸。沒錯,作為數據科學界元老級的模型,線性回歸幾乎是所有數據科學家的入門必修課。拋開涉及大量數統的模型分析和檢驗不說,你真的就能熟練應用線性回歸了麼?未必!在這篇文章中,文摘菌將介紹8種用Python實現線性回歸的方法。了解了這8種方法,就能夠根據不同需求,靈活選取最為高效的方法實現線性回歸。
  • 入門| 從線性回歸到無監督學習,數據科學家需要掌握的十大統計技術
    統計學系側重模型及其可解釋性,以及精度和不確定性。二者之間的區別越來越模糊。1. 線性回歸在統計學中,線性回歸通過擬合因變量和自變量之間的最佳線性關係來預測目標變量。最佳擬合通過儘量縮小預測的線性表達式和實際觀察結果間的距離總和來實現。沒有其他位置比該形狀生成的錯誤更少,從這個角度來看,該形狀的擬合是「最佳」。線性回歸的兩個主要類型是簡單線性回歸和多元線性回歸。簡單線性回歸使用一個自變量通過擬合最佳線性關係來預測因變量的變化情況。
  • 8種用Python實現線性回歸的方法
    拋開涉及大量數統的模型分析和檢驗不說,你真的就能熟練應用線性回歸了麼?未必!「寶刀不老」的線性回歸時至今日,深度學習早已成為數據科學的新寵。即便往前推10年,SVM、boosting等算法也能在準確率上完爆線性回歸。
  • SPSS分析技術:線性回歸分析
    相關分析請點擊回顧:SPSS分析技術:Pearson相關、Spearman相關及Kendall相關;SPSS分析技術:偏相關分析;SPSS分析技術:低測度數據的相關性分析;回歸分析就是分析變量之間隱藏的內在規律,並建立變量之間函數變化關係的一種分析方法,回歸分析的目標就是建立由一個因變量和若干自變量構成的回歸方程式
  • 線性回歸分析詳解10(完結篇):線性回歸分析預測的十大步驟
    許栩原創專欄《從入門到高手:線性回歸分析詳解》第10章,這是本專欄的最後一章,是專欄的完結篇:用線性回歸分析做預測,多元線性回歸分析預測的十大步驟。線性回歸分析專格欄總目錄請見上圖,前9章,我分別講述了回歸分析及與回分析相關的概念,一元、多元線性回歸分析的公式與計算方法,以及多重共線性、回歸方程的精度、顯著性驗證和置信區間等進行回歸分析的重要步驟及其計算方法。至此,以回歸分析進行需求預測的各項知識點及各項準備工作全部完成,我們可以正式的以回歸分析進行需求預測。
  • 具有貝葉斯優化的XGBoost和隨機森林
    XGBoost(XGB)和隨機森林(RF)都是集成學習方法,並通過組合各個決策樹的輸出(我們假設基於樹的XGB或RF)來預測(分類或回歸)。優點由於通過優化目標函數導出了增強樹,基本上XGB可以用來解決幾乎所有可以寫出漸變的目標函數。這包括排名和泊松回歸等內容,RF難以實現。缺點如果數據有噪聲,XGB模型對過度擬合更敏感。由於樹木是按順序建造的,因此培訓通常需要更長時間。