自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

CRPS:貝葉斯機器學習模型的評分函數(shù)

人工智能 機器學習
連續(xù)分級概率評分(Continuous Ranked Probability Score, CRPS)或“連續(xù)概率排位分數(shù)”是一個函數(shù)或統(tǒng)計量,可以將分布預測與真實值進行比較。

連續(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)

import numpy as np


# Adapted to numpy from pyro.ops.stats.crps_empirical
# Copyright (c) 2017-2019 Uber Technologies, Inc.
# SPDX-License-Identifier: Apache-2.0
def crps(y_true, y_pred, sample_weight=None):
num_samples = y_pred.shape[0]
absolute_error = np.mean(np.abs(y_pred - y_true), axis=0)

if num_samples == 1:
return np.average(absolute_error, weights=sample_weight)

y_pred = np.sort(y_pred, axis=0)
diff = y_pred[1:] - y_pred[:-1]
weight = np.arange(1, num_samples) * np.arange(num_samples - 1, 0, -1)
weight = np.expand_dims(weight, -1)

per_obs_crps = absolute_error - np.sum(diff * weight, axis=0) / num_samples**2
return np.average(per_obs_crps, weights=sample_weight)

根據(jù)NRG形式[2]實現(xiàn)的CRPS函數(shù)。改編自pyroppl[6]

import numpy as np


def crps(y_true, y_pred, sample_weight=None):
num_samples = y_pred.shape[0]
absolute_error = np.mean(np.abs(y_pred - y_true), axis=0)

if num_samples == 1:
return np.average(absolute_error, weights=sample_weight)

y_pred = np.sort(y_pred, axis=0)
b0 = y_pred.mean(axis=0)
b1_values = y_pred * np.arange(num_samples).reshape((num_samples, 1))
b1 = b1_values.mean(axis=0) / num_samples

per_obs_crps = absolute_error + b0 - 2 * b1
return np.average(per_obs_crps, weights=sample_weight)

上面代碼是根據(jù)PWM形式[2]實現(xiàn)CRPS。

總結(jié)

連續(xù)分級概率評分 (CRPS) 是一種評分函數(shù),用于將單個真實值與其預測分布進行比較。此屬性使其與貝葉斯機器學習相關(guān),其中模型通常輸出分布預測而不是逐點估計。它可以看作是眾所周知的 MAE 對分布預測的推廣。

它具有用于參數(shù)預測的解析表達式,并且可以針對非參數(shù)預測進行簡單計算。CRPS 可能會成為評估具有連續(xù)目標的貝葉斯機器學習模型性能的新標準方法。

責任編輯:華軒 來源: DeepHub IMBA
相關(guān)推薦

2021-08-30 11:53:36

機器學習人工智能計算機

2017-07-24 10:36:37

Python機器學習樸素貝葉斯

2012-09-24 10:13:35

貝葉斯

2020-05-21 14:50:37

算法深度學習人工智能

2022-05-06 12:13:55

模型AI

2017-08-07 13:02:32

全棧必備貝葉斯

2017-06-12 06:31:55

深度學習貝葉斯算法

2023-09-12 11:36:15

攜程模型

2013-05-08 09:05:48

狐貍貝葉斯大數(shù)據(jù)

2017-08-19 08:36:25

貝葉斯優(yōu)化超參數(shù)函數(shù)

2021-07-23 11:48:16

深度學習醫(yī)療人工智能

2017-03-29 14:50:18

2016-08-30 00:14:09

大數(shù)據(jù)貝葉斯

2016-08-30 00:19:30

2021-04-18 09:57:45

Java樸素貝葉斯貝葉斯定理

2024-10-11 16:53:16

貝葉斯人工智能網(wǎng)絡(luò)

2023-10-18 08:00:00

貝葉斯網(wǎng)絡(luò)Python醫(yī)療保健

2020-10-09 12:41:04

算法優(yōu)化場景

2012-02-14 10:55:24

2017-07-12 11:27:05

樸素貝葉斯情感分析Python
點贊
收藏

51CTO技術(shù)棧公眾號