CRPS:貝葉斯機器學習模型的評分函數(shù)
連續(xù)分級概率評分(Continuous Ranked Probability Score, CRPS)或“連續(xù)概率排位分數(shù)”是一個函數(shù)或統(tǒng)計量,可以將分布預測與真實值進行比較。
機器學習工作流程的一個重要部分是模型評估。這個過程本身可以被認為是常識:將數(shù)據(jù)分成訓練集和測試集,在訓練集上訓練模型,并使用評分函數(shù)評估其在測試集上的性能。
評分函數(shù)(或度量)是將真實值及其預測映射到一個單一且可比較的值 [1]。例如,對于連續(xù)預測可以使用 RMSE、MAE、MAPE 或 R 平方等評分函數(shù)。如果預測不是逐點估計,而是分布呢?
在貝葉斯機器學習中,預測通常不是逐點估計,而是值的分布。例如預測可以是分布的估計參數(shù),或者在非參數(shù)情況下,來自MCMC方法的樣本數(shù)組。
在這種情況下,傳統(tǒng)的評分函數(shù)不適合統(tǒng)計設(shè)計;預測的分布聚合成它們的平均值或中值會導致關(guān)于預測分布的分散和形狀的大量信息的損失。
CRPS
連續(xù)分級概率評分(CRPS)是一個分數(shù)函數(shù),它將單個真實值與累積分布函數(shù)(CDF)進行比較:
它于 70 年代首次引入 [4],主要用于天氣預報,現(xiàn)在在文獻和行業(yè)中重新受到關(guān)注 [1] [6]。當目標變量是連續(xù)的并且模型預測目標的分布時,它可以用作評估模型性能的指標;示例包括貝葉斯回歸或貝葉斯時間序列模型 [5]。
通過使用CDF, CRPS 對于參數(shù)和非參數(shù)預測都很有用:對于許多分布,CRPS [3] 都有一個解析表達式,對于非參數(shù)預測, CRPS 使用經(jīng)驗累積分布函數(shù) (eCDF)。
在計算測試集中每個觀察值的 CRPS 后,還需要將結(jié)果聚合成一個值。與 RMSE 和 MAE 類似,使用(可能是加權(quán)的)平均值對它們進行匯總:
將單個值與分布進行比較的主要挑戰(zhàn)是如何將單個值轉(zhuǎn)換成為分布的表示。CRPS通過將基本真值轉(zhuǎn)換為帶有指標函數(shù)的退化分布來解決這一問題。例如如果真值是7,我們可以用:
指標函數(shù)是一個有效的 CDF,可以滿足 CDF 的所有要求。然后就可以將預測分布與真值的退化分布進行比較。我們肯定希望預測的分布盡可能接近真實情況;所以可以通過測量這兩個 CDF 之間的(平方)面積來數(shù)學表示:
MAE與MAE關(guān)系
CRPS與著名的MAE(平均絕對誤差)密切相關(guān)。如果采用逐點預測將其視為退化 CDF 并將其注入 CRPS 方程可以得到:
所以如果預測分布是退化分布(例如逐點估計),則 CRPS 會降低為 MAE。這有助于我們從另一個角度理解CRPS:它可以被視為將 MAE 推廣到分布的預測中,或者說當預測分布退化時,MAE 是 CRPS 的特例。
當模型的預測是參數(shù)分布時(例如需要預測分布參數(shù)),CRPS 對一些常見的分布有一個解析表達式 [3]。如果模型預測正態(tài)分布的參數(shù) μ 和 σ,則可以使用以下公式計算 CRPS:
這個方案可以解決已知的分布,如Beta, Gamma, Logistic,對數(shù)正態(tài)分布和其他[3]。
當預測是非參數(shù)的,或者更具體地說——預測是一系列模擬時,計算 eCDF 是一項繁重的任務。但是CRPS 也可以表示為:
其中 X, X' 是 F 獨立同分布。這些表達式雖然仍然需要一些計算量,但更易于計算。
Python實現(xiàn)
根據(jù)NRG形式[2]實現(xiàn)的CRPS函數(shù)。改編自pyroppl[6]
上面代碼是根據(jù)PWM形式[2]實現(xiàn)CRPS。
總結(jié)
連續(xù)分級概率評分 (CRPS) 是一種評分函數(shù),用于將單個真實值與其預測分布進行比較。此屬性使其與貝葉斯機器學習相關(guān),其中模型通常輸出分布預測而不是逐點估計。它可以看作是眾所周知的 MAE 對分布預測的推廣。
它具有用于參數(shù)預測的解析表達式,并且可以針對非參數(shù)預測進行簡單計算。CRPS 可能會成為評估具有連續(xù)目標的貝葉斯機器學習模型性能的新標準方法。