我認(rèn)為貝葉斯學(xué)派和頻率學(xué)派之間的紛爭(zhēng)是「可遠(yuǎn)觀而不可褻玩」的學(xué)術(shù)爭(zhēng)論之一。與其熱衷于站隊(duì),我認(rèn)為同時(shí)學(xué)習(xí)這兩種統(tǒng)計(jì)推斷方法并且將它們應(yīng)用到恰當(dāng)?shù)膱?chǎng)景之下會(huì)更加富有成效。出于這種考慮,最近我努力學(xué)習(xí)和應(yīng)用貝葉斯推斷方法,補(bǔ)充學(xué)校課程所學(xué)的頻率統(tǒng)計(jì)方法。 貝葉斯線性模型是我最早對(duì)應(yīng)用貝葉斯推斷的關(guān)注點(diǎn)之一。在我們學(xué)習(xí)的過(guò)程中,最重要的部分也許就是將一個(gè)概念介紹給別人。本文是我介紹貝葉斯線性回歸的一次嘗試。我會(huì)對(duì)線性回歸的頻率派方法做一個(gè)簡(jiǎn)要的回顧,介紹貝葉斯解釋(Bayesian interpretation),并查看將其應(yīng)用于簡(jiǎn)單數(shù)據(jù)集的結(jié)果。 代碼地址:https://github.com/WillKoehrsen/Data-Analysis/blob/master/bayesian_lr/Bayesian%20Linear%20Regression%20Demonstration.ipynbRecap of Frequentist Linear Regression 回顧頻率派線性回歸 線性回歸的頻率派視角可能是你所熟悉的、從學(xué)校學(xué)到的版本:模型假設(shè)反應(yīng)變量(y,也稱因變量)是一組權(quán)重和預(yù)測(cè)變量(x,也稱自變量)乘積的線性組合。完整的公式還包含一個(gè)代表隨機(jī)采樣噪聲的誤差項(xiàng)。例如,如果我們有兩個(gè)預(yù)測(cè)變量,公式可以寫(xiě)成: 其中,y 是反應(yīng)變量(也被稱為因變量),β 為權(quán)重(也被稱為模型參數(shù)),x 為預(yù)測(cè)變量,ε 為代表隨機(jī)采樣噪聲的誤差項(xiàng)或者沒(méi)有被包含在模型中的變量的影響。 線性回歸是一個(gè)易于解釋的簡(jiǎn)單模型: β_0 是截距項(xiàng),其它的權(quán)重(β's)表示預(yù)測(cè)變量的增加對(duì)反應(yīng)變量的影響。例如:如果 β_1 為 1.2,那么 x_1 每增加一個(gè)單位,反應(yīng)變量就會(huì)增加 1.2。 我們可以通過(guò)矩陣方程將線性模型泛化到有任意數(shù)量預(yù)測(cè)變量的情況。將一個(gè)值為 1 的常量項(xiàng)添加到預(yù)測(cè)變量矩陣中代表截距,這樣我們就可以將矩陣公式寫(xiě)成: 從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)線性模型的目標(biāo)是找出系數(shù) β,該系數(shù)能夠最好地解釋數(shù)據(jù)。在頻率派線性回歸中,對(duì)數(shù)據(jù)最好的解釋指的是系數(shù) β 能夠最小化殘差平方和(RSS)。RSS 是已知的真實(shí)值(y)和預(yù)測(cè)模型的輸出(?,讀作「y—hat」,表示一個(gè)估計(jì)值)之間差的平方的總和。殘差平方和是關(guān)于模型參數(shù)的函數(shù): 這個(gè)求和涵蓋了訓(xùn)練集中的 N 個(gè)數(shù)據(jù)點(diǎn)。我們?cè)诖瞬⒉簧罹考?xì)節(jié)(參考資料:http://www.stat./~cshalizi/mreg/15/lectures/13/lecture-13.pdf),不過(guò)該方程具備模型參數(shù)β的封閉解,能夠最小化誤差。這就是對(duì)參數(shù) β 的最大似然估計(jì),因?yàn)樗窃诮o定輸入 X 和輸出 y 的條件下最有可能的 β 值。矩陣形式表達(dá)的封閉解如下: (同樣地,我們必須給 β 加一個(gè)「帽子」,因?yàn)樗韺?duì)模型參數(shù)的估計(jì)值。)別被這里的矩陣數(shù)學(xué)嚇倒了!得益于像 Python 中的 Scikit-learn 這樣的庫(kù),我們通常不需要對(duì)其進(jìn)行手動(dòng)的計(jì)算(盡管自己編寫(xiě)一個(gè)線性回歸的代碼是很好的做法)。這種通過(guò)最小化 RSS 來(lái)擬合模型參數(shù)的方法被稱為普通最小二乘法(OLS)。 我們從頻率線性回歸中得到的是僅僅基于訓(xùn)練數(shù)據(jù)的對(duì)模型參數(shù)的單次估計(jì)。我們的模型是完全通過(guò)數(shù)據(jù)訓(xùn)練出來(lái)的:這樣看來(lái),我們所需要的所有關(guān)于模型的信息都被編碼在了訓(xùn)練數(shù)據(jù)中。 當(dāng)?shù)玫搅?β hat 后,我們可以通過(guò)使用模型的等式來(lái)估計(jì)任意新數(shù)據(jù)點(diǎn)的輸出值: 舉一個(gè)最小二乘法的例子,我們可以對(duì)真實(shí)世界中的數(shù)據(jù)進(jìn)行線性回歸,數(shù)據(jù)中包含對(duì) 15,000 次運(yùn)動(dòng)的持續(xù)時(shí)間和燃燒的卡路里的觀測(cè)值。 通過(guò)最小二乘法,我們得到了對(duì)模型參數(shù)的單次估計(jì)。在這個(gè)例子中,參數(shù)是直線的截距和斜率。我們可以寫(xiě)出通過(guò) OLS 生成的方程: calories = -21.83 + 7.17 * duration 從斜率上,我們可以看到每多鍛煉一分鐘就會(huì)額外消耗 7.17 卡路里的熱量。這個(gè)例子中的截距貌似沒(méi)有什么作用,因?yàn)樗嬖V我們?nèi)绻\(yùn)動(dòng) 0 分鐘,我們會(huì)消耗 -21.86 卡路里!這只是一個(gè) OLS 擬合過(guò)程的案例,在不考慮它的物理意義是否說(shuō)得通的情況下,它找到了在訓(xùn)練數(shù)據(jù)集上最小化誤差的直線。 如果有一個(gè)新的數(shù)據(jù)點(diǎn),假設(shè)運(yùn)動(dòng)持續(xù)時(shí)間為 15.5 分鐘,我們可以將它帶入到方程中得到消耗的卡路里的點(diǎn)估計(jì): calories = -21.83 + 7.17 * 15.5 = 89.2 普通最小二乘法給了我們對(duì)輸出的單次點(diǎn)估計(jì),我們可以將其解釋為給定數(shù)據(jù)時(shí)可能性最大的估計(jì)。然而,如果有一個(gè)很小的數(shù)據(jù)集,我們可能希望將估計(jì)表示為一個(gè)可能值的分布。這就是貝葉斯估計(jì)起作用的地方。 貝葉斯線性回歸 從貝葉斯學(xué)派的觀點(diǎn)來(lái)看,我們使用概率分布而非點(diǎn)估計(jì)來(lái)構(gòu)建線性回歸。反應(yīng)變量 y 不是被估計(jì)的單個(gè)值,而是假設(shè)從一個(gè)正態(tài)分布中提取而來(lái)。貝葉斯線性回歸模型如下: 輸出 y 是從一個(gè)由均值和方差兩種特征刻畫(huà)的正態(tài)(高斯)分布生成的。線性回歸的均值是權(quán)重矩陣的轉(zhuǎn)置和預(yù)測(cè)變量矩陣之積。方差是標(biāo)準(zhǔn)差 σ 的平方(乘以單位矩陣,因?yàn)檫@是模型的多維表示)。 貝葉斯線性回歸的目的不是找到模型參數(shù)的單一「最佳」值,而是確定模型參數(shù)的后驗(yàn)分布。不僅響應(yīng)變量是從概率分布中生成的,而且假設(shè)模型參數(shù)也來(lái)自于概率分布。模型參數(shù)的后驗(yàn)分布是以訓(xùn)練的輸入和輸出作為條件的。 其中,P(β|y, X) 是給定輸入和輸出時(shí)的模型參數(shù)的后驗(yàn)概率分布。它等于輸出的似然 P(y|β, X) 乘以給定輸入的參數(shù) β 的先驗(yàn)概率 P(β|X) 并且除以歸一化常數(shù)。這是貝葉斯定理的一個(gè)簡(jiǎn)單表達(dá)形式,是支撐貝葉斯推斷的基礎(chǔ)。 讓我們稍微停下腳步,想想這意味著什么。與 OLS 相比,我們有一個(gè)模型參數(shù)的后驗(yàn)分布,它與數(shù)據(jù)的似然和參數(shù)的先驗(yàn)概率的乘積成正比。在此,我們可以看到貝葉斯線性回歸主要的兩個(gè)好處。
隨著數(shù)據(jù)點(diǎn)的增加,似然會(huì)降低先驗(yàn)的影響,當(dāng)我們有無(wú)限的數(shù)據(jù)時(shí),輸出的參數(shù)會(huì)收斂到從 OLS 方法獲得的值。 將模型參數(shù)作為概率分布的公式反映了貝葉斯學(xué)派的世界觀:我們從最初的估計(jì)和先驗(yàn)分布開(kāi)始,并隨著收集到更多的證據(jù),模型會(huì)變得更少犯錯(cuò)。貝葉斯推理是我們直覺(jué)的自然延伸。通常,我們有一個(gè)初始的假設(shè),并且隨著收集到那些或支持、或否定想法的數(shù)據(jù)越來(lái)越多,我們對(duì)于世界的模型將會(huì)發(fā)生改變(理想情況下,這就是我們進(jìn)行推理的方式)。 實(shí)現(xiàn)貝葉斯線性回歸 實(shí)際上,對(duì)于連續(xù)變量來(lái)說(shuō),估算模型參數(shù)的后驗(yàn)分布是很困難的。因此我們采用抽樣方法從后驗(yàn)分布中抽取樣本,用來(lái)對(duì)后驗(yàn)分布取近似。從分布中抽取隨機(jī)樣本來(lái)近似估計(jì)分布的技術(shù)是蒙特卡洛方法的應(yīng)用之一。我們有許多蒙特卡洛抽樣的算法,其中最常用的是馬爾可夫鏈蒙特卡洛的變體。 貝葉斯線性模型的應(yīng)用 我將跳過(guò)本文的代碼部分(請(qǐng)參閱 PyMC3 中的代碼實(shí)現(xiàn)),但是實(shí)現(xiàn)貝葉斯回歸的基本流程是:指定模型參數(shù)的先驗(yàn)(在這個(gè)例子中我使用正態(tài)分布),創(chuàng)建將訓(xùn)練數(shù)據(jù)中的輸入映射到輸出的模型,接著用一個(gè)馬爾可夫鏈蒙特卡洛(MCMC)算法從模型參數(shù)的后驗(yàn)分布中抽取樣本。最終的結(jié)果是參數(shù)的后驗(yàn)分布。我們可以查看這些得到的分布,看看究竟發(fā)生了什么! 第一張圖展示了模型參數(shù)后驗(yàn)分布的近似。這些是 MCMC 進(jìn)行了 1000 步的結(jié)果,表示算法從后驗(yàn)分布中采樣了 1000 步。 如果我們將斜率和結(jié)局的平均值和通過(guò) OLS 得到的相比(OLS 得到的截距為 -21.83 且斜率為 7.17),我們看到這二者得到的結(jié)果極為相似。然而,盡管可以使用均值作為一個(gè)單次的點(diǎn)估計(jì),但我們還擁有一系列模型參數(shù)可能的值。隨著數(shù)據(jù)點(diǎn)數(shù)量的增加,這個(gè)范圍將會(huì)縮小并且收斂到一個(gè)確切的值,表示對(duì)模型參數(shù)有更大的置信度(在貝葉斯推斷中,一個(gè)變量的范圍被稱為可信區(qū)間,這與頻率推斷中的置信區(qū)間的解釋稍稍有些不同)。 當(dāng)我們想要展示從貝葉斯模型中得到的線性擬合效果時(shí),我們可以畫(huà)出一系列的直線,每條線代表對(duì)于模型參數(shù)的不同的估計(jì),而并非僅僅顯示估計(jì)值。隨著數(shù)據(jù)點(diǎn)的數(shù)目增加,這些直線開(kāi)始重疊在一起,因?yàn)槟P蛥?shù)的不確定性降低了。 為了顯示數(shù)據(jù)點(diǎn)的數(shù)目在模型中的影響,我使用了兩個(gè)模型。第一個(gè)模型的結(jié)果顯示在左邊,它使用了 500 個(gè)數(shù)據(jù)點(diǎn);而右圖所示的模型使用了 15,000 個(gè)數(shù)據(jù)點(diǎn)。每張圖都顯示了從模型參數(shù)的后驗(yàn)概率中抽樣得到的 100 個(gè)可能的模型。 使用 500 個(gè)(左圖)觀測(cè)值和 15,000 個(gè)(右圖)觀測(cè)值的貝葉斯線性回歸模型的結(jié)果 在使用更少的數(shù)據(jù)點(diǎn)時(shí),線性擬合的變化更大,這代表著模型中更大的不確定性。有了所有的數(shù)據(jù)點(diǎn),OLS 和貝葉斯模型的擬合結(jié)果幾乎是一樣的,因?yàn)橄闰?yàn)的影響被數(shù)據(jù)中的似然降低了。 當(dāng)使用我們的貝葉斯線性模型預(yù)測(cè)單個(gè)數(shù)據(jù)點(diǎn)的輸出時(shí),我們?nèi)匀徊皇堑玫絾我坏闹?,而是一個(gè)分布。下面是 15.5 分鐘的運(yùn)動(dòng)所消耗的卡路里的概率密度圖。紅色的垂直線代表 OLS 的估計(jì)值。 從貝葉斯模型中得到的消耗卡路里的后驗(yàn)概率密度 我們看到,消耗掉的卡路里在 89.3 左右的達(dá)到概率的峰值,但是完整的估計(jì)是一系列的可能值。 結(jié)論 與其在貝葉斯學(xué)派和頻率學(xué)派的討論(或者爭(zhēng)論)中站在任何一方,同時(shí)學(xué)習(xí)這兩種方法才是更加有益的。這樣的話,我們就可以在正確的情況下應(yīng)用它們。 在擁有有限的數(shù)據(jù)或者想要在模型中使用先驗(yàn)知識(shí)的問(wèn)題中,貝葉斯線性回歸方法可以同時(shí)引入先驗(yàn)信息并且顯示不確定性。貝葉斯線性回歸反映了貝葉斯學(xué)派處理問(wèn)題的框架:我們先構(gòu)造一個(gè)初始的估計(jì),并且隨著收集到更多的數(shù)據(jù),不斷改進(jìn)估計(jì)。貝葉斯觀點(diǎn)是一種直觀的看待世界的方法,并且貝葉斯推斷可以成為相應(yīng)的頻率推斷的實(shí)用的替代方法。數(shù)據(jù)科學(xué)并不是選邊站,而是要找出最適合這份工作的工具,并且掌握更多的技能只會(huì)讓你更有效率! |
|
來(lái)自: 牛k8nb72h1x6w1 > 《算法》