CRPS:貝葉斯機器學習模型的評分函數
連續分級機率評分(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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

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

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

在機器學習和資料科學領域,模型的可解釋性一直是研究者和實踐者關注的焦點。隨著深度學習和整合方法等複雜模型的廣泛應用,理解模型的決策過程變得尤為重要。可解釋人工智慧(ExplainableAI|XAI)透過提高模型的透明度,幫助建立對機器學習模型的信任和信心。提高模型的透明度可以透過多種複雜模型的廣泛應用等方法來實現,以及用於解釋模型的決策過程。這些方法包括特徵重要性分析、模型預測區間估計、局部可解釋性演算法等。特徵重要性分析可以透過評估模型對輸入特徵的影響程度來解釋模型的決策過程。模型預測區間估計

C++中機器學習演算法面臨的常見挑戰包括記憶體管理、多執行緒、效能最佳化和可維護性。解決方案包括使用智慧指標、現代線程庫、SIMD指令和第三方庫,並遵循程式碼風格指南和使用自動化工具。實作案例展示如何利用Eigen函式庫實現線性迴歸演算法,有效地管理記憶體和使用高效能矩陣操作。

譯者|李睿審校|重樓人工智慧(AI)和機器學習(ML)模型如今變得越來越複雜,這些模型產生的產出是黑盒子-無法向利害關係人解釋。可解釋性人工智慧(XAI)致力於透過讓利害關係人理解這些模型的工作方式來解決這個問題,確保他們理解這些模型實際上是如何做出決策的,並確保人工智慧系統中的透明度、信任度和問責制來解決這個問題。本文探討了各種可解釋性人工智慧(XAI)技術,以闡明它們的基本原理。可解釋性人工智慧至關重要的幾個原因信任度和透明度:為了讓人工智慧系統被廣泛接受和信任,使用者需要了解決策是如何做出的

MetaFAIR聯合哈佛優化大規模機器學習時所產生的資料偏差,提供了新的研究架構。據所周知,大語言模型的訓練常常需要數月的時間,使用數百甚至上千個GPU。以LLaMA270B模型為例,其訓練總共需要1,720,320個GPU小時。由於這些工作負載的規模和複雜性,導致訓練大模型存在著獨特的系統性挑戰。最近,許多機構在訓練SOTA生成式AI模型時報告了訓練過程中的不穩定情況,它們通常以損失尖峰的形式出現,例如Google的PaLM模型訓練過程中出現了多達20次的損失尖峰。數值偏差是造成這種訓練不準確性的根因,

機器學習是人工智慧的重要分支,它賦予電腦從數據中學習的能力,並能夠在無需明確編程的情況下改進自身能力。機器學習在各個領域都有廣泛的應用,從影像辨識和自然語言處理到推薦系統和詐欺偵測,它正在改變我們的生活方式。機器學習領域存在著多種不同的方法和理論,其中最具影響力的五種方法被稱為「機器學習五大派」。這五大派分別為符號派、聯結派、進化派、貝葉斯派和類推學派。 1.符號學派符號學(Symbolism),又稱符號主義,強調利用符號進行邏輯推理和表達知識。該學派認為學習是一種逆向演繹的過程,透過現有的

在C++中,機器學習演算法的實作方式包括:線性迴歸:用於預測連續變量,步驟包括載入資料、計算權重和偏差、更新參數和預測。邏輯迴歸:用於預測離散變量,流程與線性迴歸類似,但使用sigmoid函數進行預測。支援向量機:一種強大的分類和回歸演算法,涉及計算支援向量和預測標籤。

1. SUM函數,用於對一列或一組單元格中的數字進行求和,例如:=SUM(A1:J10)。 2、AVERAGE函數,用於計算一列或一組儲存格中的數字的平均值,例如:=AVERAGE(A1:A10)。 3.COUNT函數,用於計算一列或一組單元格中的數字或文字的數量,例如:=COUNT(A1:A10)4、IF函數,用於根據指定的條件進行邏輯判斷,並返回相應的結果。

Go語言在機器學習領域的應用潛力巨大,其優點在於:並發性:支援平行編程,適合機器學習任務中的運算密集型操作。高效性:垃圾收集器和語言特性確保程式碼高效,即使處理大型資料集。易用性:語法簡潔,學習和編寫機器學習應用程式容易。
