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