机器学习-学习笔记 线性模型(二)
来源:互联网 发布:离子注入仿真软件 编辑:程序博客网 时间:2024/06/06 11:41
先来了解一下线性规划。
在MATLAB中,线性规划用linprog函数进行实现。
linprog(f,A,b) 线性规划求最优解
[x,fval,exitflag,output,lambda] = linprog(f,A,b)
[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq)
[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb,ub)
[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb,ub,x0)
[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb,ub,x0,options)
其中f,A,b,是不可缺省的输入变量,x是不可缺省的输出变量。f为函数表达式的系数,A是不等式左边的表达式的系数,B是A对应不等式右边的常数项(注意这里的等式是小于等于)。Aeq和beq是等式约束条件的参数(跟上述的A和B相似,只不过是等式)。它是问题的解.vlb,vub均是向量,分别表示x的下界和上界,x0为x的起始点,options为optimset函数中定义的参数的值,fval是目标函数在解x处的值,代表返回的最优解的情况。lambda为在解x处的lagrange乘子.lambda.lower对应于vlb,lambda.upper对应于ulb,lambda.ineqlin是对应于线性不等式约束的,lambda.eqlin是对应于线性等式约束的.
exitflag是规划返回的状态:
1、一阶最优性条件满足容许范围
2、X的变化小于容许范围
3、目标函数的变化小于容许范围
4、重要搜索方向小于规定的容许范围并且约束违背小于options.TolCon
5、重要方向导数小于规定的容许范围并且约束违背小于options.TolCon
0、到达最大迭代次数或到达函数评价
-1、算法由输出函数终止
-2、无可行点
output是执行的相关信息(迭代次数, 算法(相关算法介绍))
举个例子
比如求下面这个问题的最优解
f = [-40; -50];A = [1 2; 3 2; 0 2];b = [30; 60; 24];x = linprog(f,A,b,[],[],[0; 0], []);disp(x);disp(x(1) * 40 + 50 * x(2));
- 输入:
- 输出:
接着做个小实验,看看能不能写出来一元二次的
max z = x +
f = [-1, -1];A = [5; 1];b = [20; 2];x = linprog(f,A,b,[],[],[0], []);
发现会报下面这个错误。提示说,A的数量必须与f的相同。
那我们将代码改成下面这样
f = [-1, -1];A = [5 0; 0 1];b = [20; 4];Aeq = [1 -1];beq = [0];x = linprog(f,A,b,Aeq,beq ,[0; 0], []);
写到这里就会发现,无法表示x1和x2的关系是次方的关系,所以呢, linprog只能求多元一次的,那么怎么求多元二次呢?
quadprog(H,f) 二次规划求最优解
[x,fval,exitflag,output,lambda] = quadprog(H,f)
[x,fval,exitflag,output,lambda] = quadprog(H,f,A,b)
[x,fval,exitflag,output,lambda] = quadprog(H,f,A,b,Aeq,beq)
[x,fval,exitflag,output,lambda] = quadprog(H,f,A,b,Aeq,beq,lb,ub)
[x,fval,exitflag,output,lambda] = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0)
[x,fval,exitflag,output,lambda] = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)
参数跟lineprog介绍一样。
具体用法看这里二次规划问题和MATLAB函数quadprog的使用
等我理解了再将自己的理解补上。
- 机器学习笔记(二) 线性模型
- 机器学习-学习笔记 线性模型(二)
- 机器学习笔记5——线性模型(二)
- 《机器学习》学习笔记二 线性判别模型
- 机器学习笔记-线性模型
- 台大林轩田《机器学习基石》学习笔记:线性模型二(Logistics regression)
- 台大林轩田《机器学习基石》学习笔记6:线性模型二(Logistics regression)
- 机器学习线性模型学习笔记
- 机器学习-学习笔记 线性模型
- 机器学习实战(二)线性回归模型
- 机器学习基础(二)多元线性回归模型
- 机器学习4:简单的线性模型(二)
- 机器学习笔记(三)线性模型
- 机器学习笔记 (1)-线性回归模型
- 机器学习----线性模型
- 机器学习笔记五:广义线性模型(GLM)
- 机器学习笔记4——线性模型(一)
- 机器学习笔记(VI)线性模型(II)多维最小二乘法
- 自己动手写一个简单的mvc框架(一)前期准备
- IntelliJ IDEA相关
- postman webapi webrequest 传送文件和接受文件
- require_once失败------又是软链接惹的祸
- Linux驱动:module_platform_driver
- 机器学习-学习笔记 线性模型(二)
- 骨络数据
- Return type declarations返回类型声明
- ajax是什么
- UNIX编程专题-TCP连接探测详解
- while (1) 引发的血案
- 机器学习-学习笔记 学习总结归纳(第五周)
- Long time no see, my blog~
- 软件测试入门