對於右偏長尾數據進行建模時,使用其他分布的損失函數(如對應高斯分布的MSE損失)效果可能不好。此時可考慮使用基於tweedie分布的損失函數進行建模。
tweedie分布
tweedie分布式是一類特殊的指數衰減模型(exponential disperse model,EDM)。其方差和期望的關系如下,其中p是power參數,μ和Φ分別是期望和衰減參數。
tweedie分布的參數p決定了分布所屬的子函數族,p=0為正態分布,p=1為泊松分布,p=2為伽馬分布,p∈(1,2)時是泊松和伽馬的混合分布。
當分布式混合分布時,隨機變量X ~ Tw(p, μ, ϕ)可表示為:
其pdf為:
其中 α(x, ϕ, p)是一個正則化項,保證分布是一個合法的pdf。
tweedie損失
對tweedie的pdf計算其負對數似然作為損失,那么
將μ作為估計量,那么
實現
import tensorflow as tf def tweedie_loss_func(p): def tweedie_loglikelihood(y, y_hat): loss = - y * tf.pow(y_hat, 1 - p) / (1 - p) + \ tf.pow(y_hat, 2 - p) / (2 - p) return tf.reduce_mean(loss) return tweedie_loglikelihood
參考鏈接
https://towardsdatascience.com/tweedie-loss-function-for-right-skewed-data-2c5ca470678f