最优化读书笔记R(一)
来源:互联网 发布:怎么申请阿里云学生机 编辑:程序博客网 时间:2024/06/05 08:47
人生是场穷游,偶尔需要暴走
*# R读书笔记(一)*
无约束的线性规划
实质可以转化为求根问题
1.求单根时:
uniroot(f,interval)
2.求多项式的根
**f(x)=a0+a1*x....+an*x^n**
polyroot(y)#y=(an,...a1,a0)
3.一般方程
library(rootSolve)uniroot.all(f, interval, lower = min(interval), upper = max(interval))# 可以求出指定区间的所有根
4.方程组
multiroot(f, start, ...)#start 初始值
例:
x1^2+x2^2-4=0
x1^2+x2^2-1=0
library(rootSolve)f<-function(x){ x1<-x[1] x2<-x[2] c(x1^2+x^2-4,x1^2-x2^2+1)}multiroot(f,start=c(1,1)) 结果: $root[1] 1.224745 1.581139$f.root[1] 4.357128e-10 -4.362963e-10$iter[1] 5$estim.precis[1] 4.360046e-10
无约束的线性规划
优化算法的思路:此类问题一般都难以直接求解,可以通过数值计算的方法来求极值,最常见的算法就是设计迭代。一般选定某个初始点,沿着某个方向出发,然后确定新的点,再次确定搜索方向,以此循环。如果目标函数的值不断下降,称其为下降算法;如果目标函数的值会收敛,就说明会找到极值。
1.一维搜索
R中自带的函数optimize。例如:
f<-function(x,y,z) (x-y+z)^2optimize(f,c(-1,1),tol=0.0001,y=1,z=1)# f的x轴(-1,1)上极值的搜索#tol 代表容忍度,是搜索停止的标记
注:对于凸函数来说,局部极小值就是全局极小值,这样的情况并不多,通常都是非凸函数,若初始点附近的极值不是全局极小值,搜索就会变得很困难。
R中的optim可以通过接纳梯度函数来优化求解过程。
关于梯度函数求解可以借助(Deriv包来实现)。一下以香蕉函数为例,做出说明。
**f(x1,x2)=(1-x1)^2+100*(x2-x1^2)^2**
library(Deriv)f<-expression((1-x1)^2+100*(x2-x1^2)^2)**Simplify(D(f,"x1"))Simplify(D(f,"x2"))# 构造梯度函数gr.f<-function(x){ x1<-x[1] x2<-x[2] c(-(2 * (1 - x1) + 400 * (x1 * (x2 - x1^2))),200 * (x2 - x1^2))}#构造目标函数gr.f<-function(x){ x1<-x[1] x2<-x[2] (1-x1)^2+100*(x2-x1^2)^2}optim(par(0,3),obj.f,gr.f)# optim 求出极值,par为初始值
2.多维搜索
optim的用法
optim(par, fn, gr = NULL, ..., method = c("Nelder-Mead", "BFGS", "CG", "L-BFGS-B", "SANN", "Brent"), lower = ,upper = Inf, control = list(), hessian = FALSE)
#par 为初始值,fn为目标函数,gr为梯度函数,method 为优化方法;lower/upper为method为L-BFFG_B的约束;
#control 参数为list(maxit——最大迭代数,abtol/retol);hession 表示是否返回海塞矩阵,默认是FALSE
method方法依次是:
- 单纯型法:没有用到许多函数特征(比如梯度)比较稳健,效率也不低,常被当作默认算法
- 拟牛顿法(变尺度法)改进的牛顿法容易初始点的影响,又不需每一步精确地计算海塞矩阵及其逆矩阵,
- L_BFGS_B是对变尺度法的优化
- SANN是一种模拟退火算法(概率算法):可以针对不可微函数,找出最优解
- Brent是算法是一种简单的以为搜索方法
convergence代码的含义:
- 0:表示成功的执行了上述优化任务
- 1:表示达到了迭代上限而退出
- 10:表示退化(单纯性无法移动)
- 51:52:专指L_BFGS_B出现的警告信息/错误信息
阅读全文
0 0
- 最优化读书笔记R(一)
- 最优化读书笔记R(二)
- 《R实战》读书笔记一
- 最优化基础(一)
- 《c++应用程序性能优化》读书笔记(一)
- JAVA---优化编程读书笔记(一)
- 《数据库索引设计优化》读书笔记(一)
- MySQL性能优化读书笔记(一)
- R读书笔记之特征工程(一)空值处理
- 机器学习(一) ---- 最优化理论基础
- 无约束最优化一
- 最优化算法(一)
- 《代码优化:有效使用内存》读书笔记 (一)
- Schema与数据优化(高性能mysql读书笔记一)
- ics读书笔记——优化程序性能(一)
- 高性能MySQL.读书笔记(一)优化服务器设置
- JAVA性能优化权威指南 读书笔记(一)
- 《收获,不止Oracle》读书笔记(一):索引优化
- 我的第一篇CSDN博客
- 我只是小小知识点--JMS
- Fast特征检测
- Warning:Exception while processing task java.io.FileNotFoundException: D:\...\app\build\intermediate
- 前馈神经网络实现
- 最优化读书笔记R(一)
- V4L2常用命令标志符和结构体
- google本地缓存LoadingCache使用
- JZOJ5429. 【NOIP2017提高A组集训10.27】排列 DP+容斥
- js、jq和标签里面设置按钮可点击与不可点击状态
- uva 10723 Cyborg Genes
- HDU
- 全球顶级黑客对决AI GeekPwn2017黑客大赛看点全面曝光
- opencv——计算轮廓的周长、所包含面积、中心点