我有一个功能我想用数字确定,我有一堆在以下意义上近似函数的对:所有点都满足, 大多数点都有(至少达到我需要的准确性),有几点有明显大于. (这些点来自偶尔失败的模拟退火。)
我相信可以用一个低阶多项式很好地近似,所以我想找到它位于所有点之下并且尽可能多地命中,但不介意遗漏一些。这是一件很糟糕的事情,所以我想我应该寻找位于所有点下方的最大点,其中最大的点相对于规范,说的, 在包含所有s。
任何关于如何找到这样一个多项式的指针或参考将不胜感激。
我有一个功能我想用数字确定,我有一堆在以下意义上近似函数的对:所有点都满足, 大多数点都有(至少达到我需要的准确性),有几点有明显大于. (这些点来自偶尔失败的模拟退火。)
我相信可以用一个低阶多项式很好地近似,所以我想找到它位于所有点之下并且尽可能多地命中,但不介意遗漏一些。这是一件很糟糕的事情,所以我想我应该寻找位于所有点下方的最大点,其中最大的点相对于规范,说的, 在包含所有s。
任何关于如何找到这样一个多项式的指针或参考将不胜感激。
在回归的语言中,您希望对异常值具有鲁棒性。惩罚近似误差的 1 范数是实现此目的的一种简单方法。这个惩罚,连同近似满足的约束导致线性程序(可能可以使用专门的方法更有效地解决,但这是显而易见的模型)。下面是 MATLAB 中的概念验证代码(使用工具箱 YALMIP(免责声明,由我开发))
x = (-1:0.1:1)';
y = x.^2+x.^3+.5*x.^4;
y(3) = 3;
y(11)= 7;
plot(x,y,'*')
sdpvar a b c
yApprox = a+b*x+c*x.^2;
Error = norm(y-yApprox,1);
Below = [yApprox <= y];
solvesdp(Below,Error);
hold on;
plot(x,double(yApprox))
请注意,如果您切换到二次目标,这里的模型和数据基本上会产生相同的解决方案
Error = (y-yApprox)'*(y-yApprox);
原因是近似值的上限约束保护解决方案不被拉向异常值(这通常在使用二次误差测量时发生)