目錄
CRPS
Python實作
總結
首頁 科技週邊 人工智慧 CRPS:貝葉斯機器學習模型的評分函數

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

Apr 12, 2023 am 11:07 AM
函數 機器學習 評分函數

連續分級機率評分(Continuous Ranked Probability Score, CRPS)或「連續機率排位分數」是一個函數或統計量,可以將分佈預測與真實值進行比較。

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

機器學習工作流程的一個重要部分是模型評估。這個過程本身可以被認為是常識:將資料分成訓練集和測試集,在訓練集上訓練模型,並使用評分函數評估其在測試集上的表現。

評分函數(或測量)是將真實值及其預測映射到單一且可比較的值 [1]。例如,對於連續預測可以使用 RMSE、MAE、MAPE 或 R 平方等評分函數。如果預測不是逐點估計,而是分佈呢?

在貝葉斯機器學習中,預測通常不是逐點估計,而是值的分佈。例如預測可以是分佈的估計參數,或是在非參數情況下,來自MCMC方法的樣本陣列。

在這種情況下,傳統的評分函數不適合統計設計;預測的分佈聚合成它們的平均值或中位數會導致關於預測分佈的分散和形狀的大量資訊的損失。

CRPS

連續分級機率評分(CRPS)是一個分數函數,它將單一真實值與累積分佈函數(CDF)進行比較:

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

它在70 年代首次引入[4],主要用於天氣預報,現在在文獻和行業中重新受到關注[1] [6]。當目標變數是連續的並且模型預測目標的分佈時,它可以用作評估模型性能的指標;示例包括貝葉斯回歸或貝葉斯時間序列模型 [5]。

透過使用CDF, CRPS 對於參數和非參數預測都很有用:對於許多分佈,CRPS [3] 都有解析表達式,對於非參數預測, CRPS 使用經驗累積分佈函數(eCDF) 。

在計算測試集中每個觀察值的 CRPS 後,還需要將結果聚集成一個值。與RMSE 和MAE 類似,使用(可能是加權的)平均值對它們進行匯總:

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

將單一值與分佈進行比較的主要挑戰是如何將單一值轉換成為分佈的表示。 CRPS透過將基本真值轉換為帶有指標函數的退化分佈來解決這一問題。例如如果真值是7,我們可以用:

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

指標函數是有效的 CDF,可以滿足 CDF 的所有要求。然後就可以將預測分佈與真值的退化分佈進行比較。我們肯定希望預測的分佈盡可能接近真實情況;所以可以透過測量這兩個CDF 之間的(平方)面積來數學表示:

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

##MAE與MAE關係

CRPS與著名的MAE(平均絕對誤差)密切相關。如果採用逐點預測將其視為退化CDF 並將其註入CRPS 方程式可以得到:

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

所以如果預測分佈是退化分佈(例如逐點估計),則CRPS 會降低為MAE。這有助於我們從另一個角度理解CRPS:它可以被視為將 MAE 推廣到分佈的預測中,或者說當預測分佈退化時,MAE 是 CRPS 的特殊情況。

當模型的預測是參數分佈時(例如需要預測分佈參數),CRPS 對一些常見的分佈有一個解析表達式 [3]。如果模型預測常態分佈的參數μ 和σ,則可以使用下列公式計算CRPS:

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

這個方案可以解決已知的分佈,如Beta, Gamma, Logistic ,對數常態分佈和其他[3]。

當預測是非參數的,或者更具體地說——預測是一系列模擬時,計算 eCDF 是一項繁重的任務。但是CRPS 也可以表示為:

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

其中 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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

一文帶您了解SHAP:機器學習的模型解釋 一文帶您了解SHAP:機器學習的模型解釋 Jun 01, 2024 am 10:58 AM

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

使用C++實現機器學習演算法:常見挑戰及解決方案 使用C++實現機器學習演算法:常見挑戰及解決方案 Jun 03, 2024 pm 01:25 PM

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

可解釋性人工智慧:解釋複雜的AI/ML模型 可解釋性人工智慧:解釋複雜的AI/ML模型 Jun 03, 2024 pm 10:08 PM

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

Flash Attention穩定嗎? Meta、哈佛發現其模型權重偏差呈現數量級波動 Flash Attention穩定嗎? Meta、哈佛發現其模型權重偏差呈現數量級波動 May 30, 2024 pm 01:24 PM

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

你所不知道的機器學習五大學派 你所不知道的機器學習五大學派 Jun 05, 2024 pm 08:51 PM

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

C++技術中的機器學習:使用C++實作常見機器學習演算法的指南 C++技術中的機器學習:使用C++實作常見機器學習演算法的指南 Jun 03, 2024 pm 07:33 PM

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

excel函數公式大全 excel函數公式大全 May 07, 2024 pm 12:04 PM

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

Golang技術在機器學習中未來趨勢展望 Golang技術在機器學習中未來趨勢展望 May 08, 2024 am 10:15 AM

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

See all articles