連續分級機率評分(Continuous Ranked Probability Score, CRPS)或「連續機率排位分數」是一個函數或統計量,可以將分佈預測與真實值進行比較。
機器學習工作流程的一個重要部分是模型評估。這個過程本身可以被認為是常識:將資料分成訓練集和測試集,在訓練集上訓練模型,並使用評分函數評估其在測試集上的表現。
評分函數(或測量)是將真實值及其預測映射到單一且可比較的值 [1]。例如,對於連續預測可以使用 RMSE、MAE、MAPE 或 R 平方等評分函數。如果預測不是逐點估計,而是分佈呢?
在貝葉斯機器學習中,預測通常不是逐點估計,而是值的分佈。例如預測可以是分佈的估計參數,或是在非參數情況下,來自MCMC方法的樣本陣列。
在這種情況下,傳統的評分函數不適合統計設計;預測的分佈聚合成它們的平均值或中位數會導致關於預測分佈的分散和形狀的大量資訊的損失。
CRPS
連續分級機率評分(CRPS)是一個分數函數,它將單一真實值與累積分佈函數(CDF)進行比較:
它在70 年代首次引入[4],主要用於天氣預報,現在在文獻和行業中重新受到關注[1] [6]。當目標變數是連續的並且模型預測目標的分佈時,它可以用作評估模型性能的指標;示例包括貝葉斯回歸或貝葉斯時間序列模型 [5]。
透過使用CDF, CRPS 對於參數和非參數預測都很有用:對於許多分佈,CRPS [3] 都有解析表達式,對於非參數預測, CRPS 使用經驗累積分佈函數(eCDF) 。
在計算測試集中每個觀察值的 CRPS 後,還需要將結果聚集成一個值。與RMSE 和MAE 類似,使用(可能是加權的)平均值對它們進行匯總:
將單一值與分佈進行比較的主要挑戰是如何將單一值轉換成為分佈的表示。 CRPS透過將基本真值轉換為帶有指標函數的退化分佈來解決這一問題。例如如果真值是7,我們可以用:
指標函數是有效的 CDF,可以滿足 CDF 的所有要求。然後就可以將預測分佈與真值的退化分佈進行比較。我們肯定希望預測的分佈盡可能接近真實情況;所以可以透過測量這兩個CDF 之間的(平方)面積來數學表示:
其中 X, X' 是 F 獨立同分佈。這些表達式雖然仍然需要一些計算量,但更容易計算。
Python實作
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)
根據NRG形式[2]實現的CRPS函數。改編自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)
上面程式碼是根據PWM形式[2]實作CRPS。
總結
連續分級機率評分 (CRPS) 是一種評分函數,用於將單一真實值與其預測分佈進行比較。此屬性使其與貝葉斯機器學習相關,其中模型通常輸出分佈預測而不是逐點估計。它可以看作是眾所周知的 MAE 對分佈預測的推廣。
它具有用於參數預測的解析表達式,並且可以針對非參數預測進行簡單計算。 CRPS 可能會成為評估具有連續目標的貝葉斯機器學習模型性能的新標準方法。
以上是CRPS:貝葉斯機器學習模型的評分函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

介紹 恭喜!您經營一家成功的業務。通過您的網頁,社交媒體活動,網絡研討會,會議,免費資源和其他來源,您每天收集5000個電子郵件ID。下一個明顯的步驟是

介紹 在當今快節奏的軟件開發環境中,確保最佳應用程序性能至關重要。監視實時指標,例如響應時間,錯誤率和資源利用率可以幫助MAIN

“您有幾個用戶?”他扮演。 阿爾特曼回答說:“我認為我們上次說的是每週5億個活躍者,而且它正在迅速增長。” “你告訴我,就像在短短幾週內翻了一番,”安德森繼續說道。 “我說那個私人

介紹 Mistral發布了其第一個多模式模型,即Pixtral-12b-2409。該模型建立在Mistral的120億參數Nemo 12B之上。是什麼設置了該模型?現在可以拍攝圖像和Tex

想像一下,擁有一個由AI驅動的助手,不僅可以響應您的查詢,還可以自主收集信息,執行任務甚至處理多種類型的數據(TEXT,圖像和代碼)。聽起來有未來派?在這個a


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3漢化版
中文版,非常好用

WebStorm Mac版
好用的JavaScript開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器