计算对数似然时避免 -inf (MATLAB)
Avoiding -inf when calculating Log Likelihood (MATLAB)
使用MATLAB计算时
Log_likelihood=log((1/1e8)*exp(-0.5*SSR)),
如果 SSR(即标准平方误差)很大(例如 SSR=1e4),则 exp() 变为零并且 Log_likelihood 变为 -inf。
有什么numerical/mathematical技巧可以解决这个问题吗?
谢谢
假设你的log
是一个自然对数:
log(a*exp(b)) = log(a) + log(exp(b)) = log(a) + b.
其中 a=(1/1e8)
、b = -0.5*SSR
而且,log(1/1e8) = log(1) - log(1e8)
,所以上式变成-log(1e8) + b
,而第一项是常数,可以预先计算。
使用MATLAB计算时
Log_likelihood=log((1/1e8)*exp(-0.5*SSR)),
如果 SSR(即标准平方误差)很大(例如 SSR=1e4),则 exp() 变为零并且 Log_likelihood 变为 -inf。
有什么numerical/mathematical技巧可以解决这个问题吗?
谢谢
假设你的log
是一个自然对数:
log(a*exp(b)) = log(a) + log(exp(b)) = log(a) + b.
其中 a=(1/1e8)
、b = -0.5*SSR
而且,log(1/1e8) = log(1) - log(1e8)
,所以上式变成-log(1e8) + b
,而第一项是常数,可以预先计算。