在曲线上找到最佳权衡点
假设我有一些数据,我想在其上拟合一个参数化模型。我的目标是为此模型参数找到最佳值。
我正在使用AIC / BIC / MDL类型的标准进行模型选择,这种标准可以奖励低误差的模型,但也会对高复杂度的模型进行惩罚(我们正在寻找这个数据的最简单但最有说服力的解释,可以这么说,奥卡姆的剃刀)。
按照上面的说明,这是我得到的三种不同标准的例子(两个要最小化,一个要最大化):
在视觉上你可以很容易地看到肘部形状,你会在该区域的某处选择一个参数值。
问题是我正在为大量实验做这件事,我需要一种方法来找到这个值而无需干预。
我的第一个直觉是尝试从角落以45度角绘制一条直线并继续移动它直到它与曲线相交,但这说起来容易做起来:)如果曲线有些偏斜,它也会错过感兴趣的区域。
关于如何实现这个或更好的想法的任何想法?
以下是重现上述一个图表所需的样本:
curve = [8.4663 8.3457 5.4507 5.3275 4.8305 4.7895 4.6889 4.6833 4.6819 4.6542 4.6501 4.6287 4.6162 4.585 4.5535 4.5134 4.474 4.4089 4.3797 4.3494 4.3268 4.3218 4.3206 4.3206 4.3203 4.2975 4.2864 4.2821 4.2544 4.2288 4.2281 4.2265 4.2226 4.2206 4.2146 4.2144 4.2114 4.1923 4.19 4.1894 4.1785 4.178 4.1694 4.1694 4.1694 4.1556 4.1498 4.1498 4.1357 4.1222 4.1222 4.1217 4.1192 4.1178 4.1139 4.1135 4.1125 4.1035 4.1025 4.1023 4.0971 4.0969 4.0915 4.0915 4.0914 4.0836 4.0804 4.0803 4.0722 4.065 4.065 4.0649 4.0644 4.0637 4.0616 4.0616 4.061 4.0572 4.0563 4.056 4.0545 4.0545 4.0522 4.0519 4.0514 4.0484 4.0467 4.0463 4.0422 4.0392 4.0388 4.0385 4.0385 4.0383 4.038 4.0379 4.0375 4.0364 4.0353 4.0344];
plot(1:100, curve)
编辑
我接受了乔纳斯给出的解决方案。基本上,对于曲线上的每个点p
,我们找到最大距离为d
的那个由下式给出:
没有找到相关结果
已邀请:
9 个回复
辅奈
屠创氓读叔
捅瓶啡
弦砂牧扁
表示绘制的函数
正在变化的速率。二阶导数
表示
变化的速率。如果
很小,则意味着图表以适度的速度改变方向。但如果
很大,则意味着图表正在迅速改变方向。 您希望在图的域中隔离
最大的点。这些将是您的最佳模型选择的候选点。你选择哪一点必须取决于你,因为你还没有明确指出你对健身与复杂性的重视程度。
浅镁
结果: 对于
曲线,您必须将原点更改为
。
财沟项胶
断跑胺弄萎
播匣扦阔食
掏得透垦滩