待完善 | R语言 | 优化函数 | optimize,optimise,optim
来源:互联网 发布:红鸟房卡手机棋牌源码 编辑:程序博客网 时间:2024/06/05 16:12
R语言中,常用的优化函数知多少,这次将介绍optimize,optimise,optim这三个做优化的函数,也是目前最常用到的优化函数。
做一元的优化:只有要给参数
optimize,optimise,此外,optim也可以做一元优化。前面两个较为常用些。
这两个函数的用法是相同的,先给定函数,指定参数的取值函数,再从取值范围中优化,对于凸函数,能够取到全局最优解,对于非凸函数,可能取到局部最优解。
函数
optimize(f, interval, ..., lower = min(interval), upper = max(interval), maximum = FALSE, tol = .Machine$double.eps^0.25)optimise(f, interval, ..., lower = min(interval), upper = max(interval), maximum = FALSE, tol = .Machine$double.eps^0.25)
这里,f表示函数,interval是取值的区间,lower是区间下界,upper是区间上界,maximum用于指定是最大优化问题还是最小优化问题,tol是计算的精度设置。
=====================
该区域用于描述optimize和optimise函数的核心优化思想,待下次完善。
关键点:以供下次注意理解点。
The first evaluation of f is always at x_1 = a + (1-φ)(b-a) where (a,b) = (lower, upper) and phi = (sqrt(5) - 1)/2 = 0.61803.. is the golden section ratio. Almost always, the second evaluation is at x_2 = a + phi(b-a). Note that a local minimum inside [x_1,x_2] will be found as solution, even when f is constant in there, see the last example.
=====================
案例学习:
第一类:凸问题
f <- function (x) (x - 1/3)^2plot(f,xlim = c(0,1))
xmin <- optimize(f, c(0, 1), tol = 0.0001)xmin
结果
$minimum[1] 0.3333333$objective[1]0
极小值时,x取值为0.3333333 ,函数的值为0
第二种,非凸问题
f=function(x) x*sin(10*pi*x)+1curve(f,xlim=c(-2,1))
从图来看,是波动的,存在好多极小值或极大值。
optimize(f,c(-2,1),tol=0.0001,maximum=T)
结果
$maximum[1] -1.050968$objective[1] 2.050482
当函数取最大值时,它对应的x取值为-1.050968,显然在-2到1的范围内,非最佳的极大值。此时,对应的目标函数为2.050482.
多元优化问题,即存在多个参数待求解。
optim函数,对于多个参数的多元优化,设置为theta一个参数,取theta1 = theta[1],theta2 = theta[2],…依次类推。
函数,有两个
optim(par, fn, gr = NULL, ..., method = c("Nelder-Mead", "BFGS", "CG", "L-BFGS-B", "SANN", "Brent"), lower = -Inf, upper = Inf, control = list(), hessian = FALSE)optimHess(par, fn, gr = NULL, ..., control = list())
对于多元的,它的求解难度较大,涉及到的优化算法很多,对于不同类型的算法,其适用范围也有所不一样。
这里暂时给出demo,下次再来完善。
require(graphics)fr <- function(x) { ## Rosenbrock Banana function x1 <- x[1] x2 <- x[2] 100 * (x2 - x1 * x1)^2 + (1 - x1)^2}
optim(c(-1.2,1), fr)
初始值为-1.2和1
$par[1] 1.000260 1.000506$value[1] 8.825241e-08$countsfunction gradient 195 NA $convergence[1] 0$messageNULL
计算得到的参数最佳结果为1.000260和1.000506。
注意:需要完善的有
- optimize
- optimise
- optim
- optimHess
- 优化算法的适用范围:”Nelder-Mead”,”BFGS”,”CG”,”L-BFGS-B”,”SANN”,”Brent”
- 待完善 | R语言 | 优化函数 | optimize,optimise,optim
- R 语言 optim 使用
- SQL优化(待完善)
- R语言包_stats::optim
- 正则表达式函数待完善
- IOS可视化语言(待完善)
- c语言数据结构学习(待完善)
- 简单C语言编译器之主函数main.c【待完善】
- 待完善。。
- 待完善
- 待完善
- 待完善
- 待完善
- 待完善
- 待完善
- torch.optim优化算法理解之optim.Adam()
- How to use optim in R
- 使用scipy.optimize进行目标函数中的矩阵参数优化
- lua 调用C++动态库
- 关于随机梯度下降算法(SGD)的理解
- ArcGIS Engine 9.3项目在10.2中打开报错的解决办法
- 过滤器和拦截器(SpringMVC实现)
- MongoDB的简单操作
- 待完善 | R语言 | 优化函数 | optimize,optimise,optim
- 学习MySQL的第一步:安装MySQL及数据库可视化工具Navicat
- vim 字体使用
- oracle列(字段)操作相关SQL语句
- 单词逆序
- JZOJ__Day 3:【NOIP普及模拟】排序(sort)
- Python探索记(17)——函数
- Go编程基础—类型和变量
- div模拟实现textarea(高度自适应)