【问题标题】:Minimizing L-infinity norm in Matlab在 Matlab 中最小化 L-infinity 范数
【发布时间】:2013-12-20 07:24:10
【问题描述】:

我有这个 MATLAB 代码,我正在尝试实现这个问题的最佳答案中解释的方法:https://stats.stackexchange.com/questions/12546/software-package-to-solve-l-infinity-norm-linear-regression 这是我正在使用的以数据点开头的代码:

x = [
    0
    0.101010101010101
    0.202020202020202
    0.303030303030303
    0.404040404040404
    0.505050505050505
    0.606060606060606
    0.707070707070707
    0.808080808080808
    0.909090909090909
    ];
y = [
    0.052993311292562
    14.923120014175920
    1.974502763975613
    -2.205773310050583
    -0.052548781318830
    2.935428041987883
    0.134606520161892
    0.146742215922384
    -0.418386565682831
    1.702041272689124
    ];
A1 = [x,ones(length(y),1),-ones(length(y),1)];
A2 = [-x,-ones(length(y),1),-ones(length(y),1)];
A = [A1;A2];
f = [0;0;1];
linprog(f,A,[y;-y])

关键是通过最小化线和数据点之间残差的L-infinity norm来找到最佳拟合的参数(斜率和交点),即一条线。对于普通最小二乘法(最小化 L-2 范数)以及 L-1 拟合,我已经解决了同样的问题。从这些方法绘制的线非常适合数据点之间的关系。但是无论我做什么,似乎都无法使这个 L-infinity 适合工作,所以我向你寻求帮助,任何提示都表示赞赏。

【问题讨论】:

  • 我认为你的第二个向量在 A1 和 A2 中都应该是负数

标签: matlab optimization linear-programming


【解决方案1】:

你的不等式中的 t 符号是错误的。试试

A1 = [x,ones(length(y),1),-ones(length(y),1)];
A2 = [-x,-ones(length(y),1),-ones(length(y),1)];

【讨论】:

  • 是的,我已经尝试过符号和解决方案的组合(斜率:-7.45 交点:7.86)与最小二乘解决方案(斜率:0.26 交点:0.55)和 L1 解决方案(斜率:0.13 交点:0.05),我认为它们是一致的。这可能是 L-Infinty 的意义所在,它赋予了极值点额外的权重吗?
  • 最小二乘解给离群值更多的权重(残差是平方的),所以这里的解将被拉向那个大离群值的方向,但它仍然由其他 9 个数据点。无穷范数解总是介于最小(负)和最大(正)残差之间,其他数据点无关紧要。所以从这个意义上说,极值点确实更重要。
猜你喜欢
  • 2020-04-19
  • 1970-01-01
  • 2016-10-14
  • 1970-01-01
  • 1970-01-01
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
  • 2016-06-03
相关资源
最近更新 更多