机器学习-学习笔记 线性模型(二)
2017-07-14 19:30
351 查看
先来了解一下线性规划。
在MATLAB中,线性规划用linprog函数进行实现。
[b]linprog(f,A,b) 线性规划求最优解[/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是执行的相关信息(迭代次数, 算法(相关算法介绍))
举个例子
比如求下面这个问题的最优解
输入:
输出:
接着做个小实验,看看能不能写出来一元二次的
max z = x + x2 (5x <= 20; x2 <= 4; x >= 0)
发现会报下面这个错误。提示说,A的数量必须与f的相同。
那我们将代码改成下面这样
写到这里就会发现,无法表示x1和x2的关系是次方的关系,所以呢, linprog只能求多元一次的,那么怎么求多元二次呢?
[b]quadprog(H,f) 二次规划求最优解[/b]
[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的使用
等我理解了再将自己的理解补上。
在MATLAB中,线性规划用linprog函数进行实现。
[b]linprog(f,A,b) 线性规划求最优解[/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 + x2 (5x <= 20; x2 <= 4; x >= 0)
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只能求多元一次的,那么怎么求多元二次呢?
[b]quadprog(H,f) 二次规划求最优解[/b]
[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的使用
等我理解了再将自己的理解补上。
相关文章推荐
- 机器学习笔记(IX)线性模型(V)多分类学习
- 【学习笔记】斯坦福大学公开课(机器学习) 之广义线性模型
- 机器学习线性模型学习笔记
- 【机器学习-斯坦福】学习笔记4 ——牛顿方法;指数分布族; 广义线性模型(GLM)
- 机器学习-学习笔记 线性模型
- 人工智障学习笔记——机器学习(2)线性模型
- 机器学习笔记(3)线性模型之线性回归
- 机器学习笔记五:广义线性模型(GLM)
- scikit-learn中文文档-学习笔记二-广义线性模型
- [机器学习入门] 李宏毅机器学习笔记-14 (Unsupervised Learning: Linear Dimension Reduction;无监督学习:线性降维)
- Stanford机器学习笔记-6. 学习模型的评估和选择
- [机器学习笔记]三:Generalized Linear Models(广义线性模型)
- 『机器学习——周志华』学习笔记——第二章:模型评估与选择
- 周志华《机器学习》笔记:第3章 线性模型
- 西瓜书《机器学习》学习笔记--模型评估及选择(二) 留出法
- 公开课机器学习笔记(17)学习理论二 VC维、ERM总结、模型选择、特征选择
- 机器学习学习笔记之rf模型
- 机器学习笔记(VIII)线性模型(IV)线性判别分析(LDA)
- 小白学习机器学习---第三章:线性模型(2):对数几率回归
- 机器学习笔记(二) 线性模型