DEOptim全局优化效果不及Optim局部优化,求正确使用方法
关于DEOptim与局部优化的系数优化问题
优化方法与目标函数
我正在采用两种方法优化系数:DEOptim全局优化和Optim局部优化,目标是最小化以下残差平方和函数:
function(data, par){ sum( (data$CCI - (par[1]+par[2]*log10(data$Landsat) + par[3]*log10(data$Landsat)^2 + par[4]*log10(data$Landsat)^3 + par[5]*log10(data$Landsat^4)))^2, na.rm=TRUE) }
DEOptim调用代码
当前DEOptim的调用方式如下:
global_optimization_buffer <- DEoptim(min.RSS, lower, upper, data = DATA_buffer, DEoptim.control(itermax = 10000))
优化结果观察
- 局部优化的效果反而优于全局优化;
- 将系数上下界从-10至10缩小到-5至5后,DEOptim的优化效果得到显著提升;
- 增加迭代次数对优化结果没有影响。
数据集详情
我使用的是3500×2的数值数据集:
- 第一组3500个为"真实值":取值范围-1至2.5,均值为-0.07;
- 第二组数值用于OC3函数:取值范围0.27至107,均值为1.65。OC3函数定义如下:
function(coeff, landsat_values) { log_chloa <- coeff[1] + coeff[2]*log10(landsat_values) + coeff[3]*log10(landsat_values)^2 + coeff[4]*log10(landsat_values)^3 + coeff[5]*log10(landsat_values)^4 return(log_chloa) }
疑问
- 我当前使用DEOptim的方式是否正确?
- 有没有更优的DEOptim使用方案?
内容的提问来源于stack exchange,提问作者Aurélien Lengrand
相关产品推荐
相关产品推荐

