交叉驗證泊松模型的錯誤度量
我正在交叉驗證一個試圖預測計數的模型。如果這是一個二元分類問題,我會計算非折疊 AUC,如果這是一個回歸問題,我會計算非折疊 RMSE 或 MAE。
對於泊松模型,我可以使用哪些錯誤度量來評估樣本外預測的“準確性”?是否有 AUC 的泊松擴展來查看預測對實際值的排序情況?
似乎很多 Kaggle 計數競賽(例如,yelp 評論將獲得的有用票數,或患者在醫院度過的天數)使用均方根誤差或 RMLSE。
/編輯:我一直在做的一件事是計算預測值的十分位數,然後查看按十分位數分類的實際計數。如果十分位數 1 低,十分位數 10 高,並且兩者之間的十分位數嚴格增加,我一直稱該模型“好”,但我在量化這個過程時遇到了麻煩,我確信有更好的方法。
/Edit 2:我正在尋找一個公式,它採用預測值和實際值並返回一些“錯誤”或“準確性”指標。我的計劃是在交叉驗證期間根據折疊數據計算這個函數,然後用它來比較各種模型(例如泊松回歸、隨機森林和GBM)。
例如,一個這樣的功能是
RMSE = sqrt(mean((predicted-actual)^2))
。另一個這樣的函數是AUC。這兩個函數似乎都不適合泊松數據。
您可以使用一些正確且嚴格正確的計數數據評分規則。計分規則是懲罰介紹了是預測分佈和觀測值。它們具有許多理想的特性,首先是更接近真實概率的預測總是會受到更少的懲罰,並且存在(唯一的)最佳預測,並且當預測概率與真實概率重合時。從而最小化期望意味著報告真實的概率。另見維基百科。
通常將所有預測值的平均值作為
採用哪條規則取決於你的目標,但我會給出一個粗略的描述,當每個規則都可以使用時。
在接下來的內容中,我使用對於預測概率質量函數和預測累積分佈函數。一個運行計數分佈的整個支持(即,)。表示指示函數。和是預測分佈的均值和標準差(通常是計數數據模型中直接估計的數量)。
嚴格的評分規則
- 布賴爾分數:(對於分類預測變量的大小不平衡是穩定的)
- Dawid-Sebastiani 評分:(適用於一般預測模型選擇;對於分類預測變量的大小不平衡穩定)
- 偏差分數:(是一個歸一化項,僅取決於,在泊松模型中,它通常被視為飽和偏差;適合與來自 ML 框架的估計一起使用)
- 對數分數:(很容易計算;對於分類預測變量的大小不平衡是穩定的)
- 排名概率得分:(有利於對比非常高計數的不同預測;容易受到分類預測變量大小不平衡的影響)
- 球面得分:(對於分類預測變量的大小不平衡是穩定的)
其他評分規則(不太合適但經常使用)
- 絕對錯誤分數:(不恰當)
- 平方誤差分數:(不完全正確;易受異常值的影響;易受分類預測變量大小不平衡的影響)
- Pearson 歸一化平方誤差分數:(不是嚴格正確的;容易受到異常值的影響;可用於檢查模型是否檢查平均分數是否與 1 非常不同;對於分類預測變量的大小不平衡是穩定的)
嚴格正確規則的示例 R 代碼:
library(vcdExtra) m1 <- glm(Freq ~ mental, family=poisson, data=Mental) # scores for the first observation mu <- predict(m1, type="response")[1] x <- Mental$Freq[1] # logarithmic (equivalent to deviance score up to a constant) -log(dpois(x, lambda=mu)) # quadratic (brier) -2*dpois(x,lambda=mu) + sapply(mu, function(x){ sum(dpois(1:1000,lambda=x)^2) }) # spherical - dpois(x,mu) / sqrt(sapply(mu, function(x){ sum(dpois(1:1000,lambda=x)^2) })) # ranked probability score sum(ppois((-1):(x-1), mu)^2) + sum((ppois(x:10000,mu)-1)^2) # Dawid Sebastiani (x-mu)^2/mu + log(mu)