R語言模擬保險模型中分類器的ROC曲線不良表現(xiàn)
原文鏈接:http://tecdat.cn/?p=13518
在課程中進行案例研究(使用真實數(shù)據(jù))時,學(xué)生都會驚訝地發(fā)現(xiàn)很難獲得“好”模型,而當(dāng)試圖對索賠的概率進行建模時,他們總是會驚訝地發(fā)現(xiàn)AUC較低。因為保險中存在很多'隨機性'。
更具體地說,我決定進行一些模擬,并計算AUC以查看發(fā)生了什么。而且由于我不想浪費時間進行擬合模型,因此我們假設(shè)每次都有一個完美的模型。因此,我想表明AUC的上限實際上很低!因此,這不是建模問題,而是保險業(yè)的基礎(chǔ)問題。
我們使用協(xié)變量(例如在汽車保險中的汽車駕駛員的年齡或在人壽保險中的保單持有人的年齡等)。然后我們使用它們來訓(xùn)練模型。然后,我們使用從混淆矩陣獲得的ROC曲線來檢查我們的模型是否良好。在這里,我不會嘗試構(gòu)建模型。我會預(yù)測每次真實基礎(chǔ)概率超過閾值!
在這里?p(\ omega_1)表示索賠損失,欺詐等的可能性。這里存在異質(zhì)性,這種異質(zhì)性可以很小,也可以很大。請看下面的圖表來說明,

在這兩種情況下,平均有25%的機會要求賠償損失。但是在左邊,存在更多的異構(gòu)性,更多的分散性。為了說明這一點,我使用了箭頭。
考慮一些帶有伯努利變量的數(shù)據(jù)集?y,用這些概率得出p(?omega),p?(ω?)。然后,我們假設(shè)我們能夠得到一個完美的模型:我不會基于某些協(xié)變量來估計模型,在這里,我假設(shè)我完全知道概率。更具體地說,為了生成概率向量,在這里我使用具有給定均值和給定方差的Beta分布(以捕獲上面提到的異質(zhì)性).
?
a=m*(m*(1-m)/v-1)
b=(1-m)*(m*(1-m)/v-1)
p=rbeta(n,a,b)
從這些概率中,我模擬了索賠或死亡的發(fā)生,
?
Y=rbinom(n,size = 1,prob = p)
然后,我計算出“完美”模型的AUC,
?
auc.tmp=performance(prediction(p,Y),"auc")
然后,我將生成許多樣本,以計算AUC的平均值。我們可以對Beta分布的均值和方差的許多值執(zhí)行此操作。這是代碼
Vm=seq(.025,.975,by=.025)
Vi=seq(.01,.5,by=.01)
V=outer(X = Vm,Y = Vi, Vectorize(function(x,y)
Sim_AUC_mean_inter(x,y)$moy_AUC))
library("RColorBrewer")
image(Vm,Vi,V,
xlab="Probability (Average)",
ylab="Dispersion (Q95-Q5)",
col=
colorRampPalette(brewer.pal(n = 9, name = "YlGn"))(101))
contour(Vm,Vi,V,add=TRUE,lwd=2)
?
?

?
在x軸上,我們有索賠的平均概率。當(dāng)然,這里是對稱的。在y軸上,我們具有分散性:投資組合中的異質(zhì)性越低,其混合性就越小。例如,平均有30%的機會要求損失,分散度為20%(這意味著在投資組合中,90%的被保險人有20%至40%的機會主張損失),我們平均有60%的AUC。
根據(jù)我的經(jīng)驗,在汽車保險中,90%的被保險人有3%到20%的機會要求賠償,在那種情況下,即使(平均)概率很小,也期望AUC很難高于60%或65%。
?