03. 統計學習模型:預測和推斷

上文提到,統計學習中通常要基于數據進行建模來實現預測和推斷。實際上,針對未來數據所做的預測和推斷就是我們構建模型最初的動力和目標。這里有必要區分一下預測(prediction)推斷(inference)

預測是指我們給所構建的模型一定的輸入,利用模型對輸出進行預測。這在很多時候代表著未知場景下對關鍵指標的估計,比如根據候選人的學歷、工作經營等因素預測其薪資時,我們更好奇某個條件(如碩士學歷、3 年工作經驗)的候選人能拿到的薪資數額是多少?不難發現,在預測中我們對輸出更感興趣。

而推斷則與預測不同,簡單來說,當我們的目的是推斷時,我們對輸入和輸出之間的關系(而不是輸出)更為感興趣,我們更好奇哪個輸入對輸出的有什么樣的影響?同樣的例子,當我們的任務是推斷時,我們要解決的問題很可能就是學歷對薪資的影響有多大?或是學歷和工作經驗到底哪一個對薪資的影響更大?

04. 如何構建學習模型?

要想實現預測和推斷,構建統計學習模型是第一步。大致來分的話,構建統計學習模型的方法可以分為兩種:參數式方法非參數式方法

參數式方法比較直接,可以分為兩步。第一步先對模型的形式做一個假設,比如最簡單的模型假設就可以說它是線性的。選擇完模型假設后,我們對模型有一個較為準確的認知了,此時的模型中只剩下眾多未知的參數。所以第二步就是利用已有的數據對模型中的參數進行估計。很容易看出,參數式方法把尋找一個未知模型(函數)的問題通過預先假設模型形式的方法轉變成了根據數據估計一堆參數的問題,這是一個化繁為簡的過程,其代價就是對模型形式進行了限制。

而非參數式的方法則對模型的形式沒有具體的假設,這使得它理論上可以構建任何能最接近訓練集的模型。

通過上面的簡單解釋,不難發現為什么它們擁有這樣的命名。此外,參數式方法和非參數式方法的優缺點也一覽無余:參數式方法將構建模型的問題簡單化,然而卻面臨模型假設與數據背后未知的真實模型相差甚遠的風險,所以對于參數式方法來說,如果模型假設提的好,效果自然好,構建起來也輕松一些,但如果模型假設不那么好甚至相差很遠,就是完完全全的災難。非參數式方法的優勢則在于其理論上可以根據數據擬合任何種類的模型(能夠最大程度的貼近數據),而其劣勢則是需要更大量的數據(相較參數式方法而言)來構建一個準確的模型。

通過不同的方法,我們可以構建很多不同的模型。可為什么要有這么多不同的統計學習方法/模型呢?沒有一個最高級、最 fancy 的模型一勞永逸的解決所有問題嗎?確實沒有,no free lunch 說的就是這么個事,沒有一個最好的模型可以在任何問題上優于其他模型,模型好不好都是 problem-dependent 的。換句話說,拋開具體問題談哪個模型更好是沒有一點意義的。

05. 預測精度 v.s. 模型可解釋性

如在眾多的統計學習方法中,不同的方法有著不同的特點,有些方法靈活性/彈性(flexibility)較差(約束較多),只能夠構建有限的模型集合來擬合數據,如線性模型。有些方法 flexibility 則較好,能夠構建更多的模型來擬合數據。

說到這不禁會有疑問,這樣說來 flexibility 更好的方法不是我們的最佳選擇嗎?為什么還需要那些 flexibility 較差的方法呢?實際上,這里有一個很重要的 trade-off,那就是模型的預測精度與模型的可解釋性。通常來說,以線性模型為代表的 flexibity 較差的模型,雖然它們能夠構建的模型范圍有限,導致其可能捕捉不到一些數據里的信息、造成預測精度較低,但是它們通常有著較為清晰的模型形式,比如線性模型可以將輸出 Y 表示為輸入 X 的線性組合,我們就可以清晰的分析出哪些變量會影響輸出,這樣的模型可解釋性就非常高。

相反地,有些 flexibility 較好的方法,其試圖利用更復雜的模型去擬合、貼近數據,預測精度上就會較高,但受限于更復雜的模型形式,我們很難清晰的解釋清楚輸入與輸出之間的關系。下圖即為眾多方法的 flexibility 與模型可解釋性之間的關系:

關于這一點,我們耳熟能詳的基于神經網絡的深度學習就是最好的例子。理論上來說,神經網絡可以擬合任意一種非線性的模型或函數。通常這些非線性的模型或函數其 flexibility 都非常好,預測精度也非常高,而最嚴重的缺點就是模型的可解釋性非常差。這就是通常我們所說的深度學習模型可解釋性較差的由來。

上圖中有一點需要指出的是,我們最常用來擬合線性模型的 least squares 方法并不是 flexibility 最低的方法。比如 lasso 就通過增加了正則項來對模型的預測變量做了選擇,換句話說,lasso 方法通過正則化項限定了某些預測變量的參數為 0,所以 lasso 方法的模型更不 flexible。

此外,對于統計學習的方法而言,還有很多分類:例如有監督學習和無監督學習,分類問題和回歸問題等,這些很多書籍和材料都有涉獵,此處不再贅述。

模型構建起來后,有一個很直觀的問題就是:這個模型好不好?

06. 如何衡量一個模型的好壞?

對于一個給定的數據集,為了衡量一個模型的好壞,我們需要某種方式來衡量模型的預測是否貼合實際觀測到的數據。換句話說,我們需要量化模型預測值與真實值之間的差距,如果此差距很小,說明模型擬合數據擬合得很好,反之同理。

上文提到統計學習方法可分為處理分類問題的方法和處理回歸問題的方法,此處從回歸問題中如何量化模型預測值與真實值之間的差距開始談起。對于回歸問題,通常我們常用的用來衡量模型擬合效果的 metric 就是 mean squared error (MSE):

其中 y 代表觀測到的真實值,f(x) 代表模型的預測值。如果 MSE 的值很小,說明模型擬合數據的能力強,反之同理。然而,當我們利用上式計算 MSE 的時候,用的都是我們已經用來訓練模型的數據,所以上式更準確的名字應該是訓練 MSE (train MSE)。

而我們訓練模型歸根結底的目的是要用其去預測或推斷沒見過的數據(未曾用于訓練模型的數據),所以通常情況下我們不會太在意訓練 MSE,與此同時我們更在意測試 MSE (test MSE)。顧名思義,測試 MSE 就是將模型用于測試集得到的 MSE。雖然區分訓練集和測試集是再簡單不過的概念,但在實際操作中,還是有很多誤用數據導致 data snooping 現象的出現,data snooping 指的是在做統計推斷之前先查看了數據的特征(甚至包括訓練數據),這無疑與我們利用模型推斷未知數據的基準相違背。這一點在課上 Prof. Yang Can 給了幾個例子,確實讓我想起了我之前的一些沙雕操作。

實際上,這種利用 MSE 來衡量模型擬合效果的行為對應著監督學習里兩種策略的其中一種:經驗風險最小化(這種 squared-error 只是經驗風險最小化策略中的一種損失函數)。如果對上式的期望形式做拆解,考慮隨機誤差項時可寫為:

很容易發現,總的誤差被分為了兩部分:一部分是可消除的誤差,這部分誤差來源于模型與真實數據之間的關系,模型擬合數據好自然這部分誤差就小;而另一部分則是不可消除的誤差,來源于隨機誤差。訓練模型的過程,就是尋找一個能將可消除誤差降到最低的模型。

針對同樣的數據,我們可以擬合很多不同參數的同類模型、不同種類的模型,根據經驗風險最小化的策略,我們選擇目標模型的標準很簡單:test MSE 最小。

如下圖所示,在一個模擬數據集中,左圖中圓圈為樣本點,黑線所代表的是生成樣本點的真實模型。橙色、藍色、綠色的線分別是針對這個數據集所擬合的不同的模型,可以看出,橙色線是一個線性模型,藍色和綠色線都是非線性模型,但藍色離真實模型更接近,綠色則是過多的捕捉了樣本點分布的局部特征。

給定一個輸入,用這三個模型中的任何一個,我們都能得到一個輸出,然而,到底哪個模型能給我們更準確的輸出?三個模型中,直觀來看無疑藍色是最好的。反應在下圖右側的圖中,則是紅色所代表的 test MSE,藍色模型的 test MSE 是最低的,所以我們在三個模型中會選擇它。

此外,在右圖中,我們發現紅色所代表的 test MSE 出現了一個典型的先降后升的“U型”趨勢圖,然而灰色所代表的 train MSE 則是一路下降。換句話說,隨著模型 flexibility 的提升,train MSE 不斷下降,這很容易理解,因為模型 flexibility 不斷提升的過程中在不斷的貼近訓練集中的數據。而作為我們衡量模型好壞的標準,test MSE 先降后升,說明模型 flexibility 不是越高越好。模型 flexibility 不斷提升的過程中,到底發生了什么?

07. 過擬合與variance-bias trade-off

實際上,對于給定數據集,隨著模型的 flexibility 不斷提升,模型的復雜程度也在不斷上升。以上圖為例,綠色模型的非線性程度更高,相較其他模型,它能捕捉到很多其他模型無法擬合的局部特征。但實際在此例子中,真實模型是黑色線所代表的模型,并沒有綠色模型那么復雜,換句話說,綠色模型通過提升 flexibility 過度學習到了很多不屬于真實數據的部分。這種現象稱為過擬合 (overfitting)。過擬合過程中學習到的不屬于真實數據的部分實際上來源于訓練集中數據的隨機誤差等。

為什么過擬合會降低 train MSE、提升 test MSE 呢?此處將 MSE 進行拆解可分為以下部分:

從上式中不難看出,要想最小化經驗風險,最好的模型應該同時具有兩個特點:variance 小、bias 小。通常情況下,具有高 flexibility 的模型其擬合數據的能力很強,所以 bias 很小,然而因為模型過于 flexible,其很容易受到新數據、或是數據變化的影響,variance 很大;而低 flexibility 的模型不容易受到新數據變化的影響、但擬合數據的能力較弱,所以 bias 較大而 variance 很小。兩者似乎無法同時縮小,這就是統計學習中一個重要的概念:variance-bias trade-off。

下圖是在三個不同的模擬數據集上所擬合模型的結果,很容易看出,不管真實模型如何,variance-bias trade-off 都存在。有一點需要說明的是,紅線指的是 test MSE,黑色虛線指的則是隨機誤差的方差,可以看出針對給定數據集,任何統計學習方法/模型所能達到的理論最小 test MSE 就是隨機誤差的方差。

我們的目標模型是 test MSE 最小,而這實際上就是奧卡姆剃刀法則所闡述的:我們需要的模型是在能最大程度擬合數據的同時最簡單的模型。想要獲得這樣的模型,只利用經驗風險最小化是無法達到的,經驗風險最小化只會最大程度降低 bias,這種伴隨而來的是由 variance-bias trade-off 帶來的 variance 上升。最直接的解決辦法就是同時對 bias 和 variance 進行約束,這就帶給了我們監督學習中的另外一個策略:結構風險最小化。結構風險最小化就是在經驗風險最小化的基礎上加上一個正則項對模型的復雜度做約束,以實現 bias 和 variance 的平衡。

讀到這里,或許會有好奇,深度學習的模型flexibility都很高,為什么不會有明顯的過擬合現象存在呢?那就是另一個跟正則化有關的有趣的故事了,最近正好在學習gradient boosting相關的內容,此處暫時講不清楚,先略過等啥時候能講清楚了再來填坑。

08. 分類問題

上文提到回歸問題中利用 test MSE 來衡量模型好壞,對于分類問題,也有一個類似的衡量指標:誤分類率 (error rate)。可寫為以下形式:

其中 I 是指示函數,當模型預測值與真實值不同時該函數取 1,反之取 0。我們可以簡單根據 test error rate 來選擇模型。

上式所提到的 test error rate 可以通過一個簡單的分類器來達到最小,該分類器根據預測變量的值將每一個樣本分到最有可能的類別。可以寫成以下形式:

當以上條件概率最大時,我們把該樣本分到第j類(證明此處省略),而這個分類器就叫做貝葉斯分類器 (bayes classifier)。對于最簡單的二分類問題,如果上式的 j=1 時,可以簡單考慮 0.5 為一個 threshold,當上式的條件概率大于 0.5 時將該樣本分為 1,反之分為 0。

下圖所示即為利用貝葉斯分類器執行一個二分類任務(模擬數據集),橙色和藍色圓圈所代表的是兩類樣本點。紫色虛線代表的點就是概率為 0.5 的地方,這就是 bayes decision boundary。

考慮到貝葉斯分類器的特點,理論上我們總是想用它來做分類任務。但是在真實數據集中,對于給定的樣本 x,其所屬類 Y 的條件分布是不可知的。所以貝葉斯分類器對我們而言是一個無法達到的標準,很多分類器也是通過根據訓練數據估計以上條件分布來對樣本進行分類的。一個很簡單的例子就是 K 近鄰法(KNN),在 KNN 中,可以通過調整 K 值來調整模型的 flexibility,K 值較大時模型 flexibility 較小,而 K 值較小時模型 flexibility 較大。選擇合適的K值可以達到接近(略低于)貝葉斯分類器的分類效果。

09. 總結

以上就是我對最近看的一些統計學習的基礎概念的簡單分享,這些內容全都是入門內容,奈何之前絲毫不在意,走馬觀花導致基礎不牢,以此作為簡單的反思和記錄。內容雖然簡單,如有錯誤也請各位批評指正。文中圖均來自于以下書籍:

James, G., Witten, D., Hastie, T., & Tibshirani, R. (2013). An introduction to statistical learning(Vol. 112, p. 18). New York: springer.

文章轉自微信公眾號@算法進階

上一篇:

機器學習&深度學習的算法概覽

下一篇:

樹模型決策的可解釋性與微調(Python)
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費