2017-10-08 156 views
1

我有2个数组:第一个数组包含单位面积和第二个价格。数组的值形成一个图表,并将用于计算成本函数的结果。主要任务是找到成本函数的最佳参数以最小化其结果。这是成本函数的样子:找到成本函数的费率的最佳方法

有人建议创建1一个循环10万和发现,少结果的最佳参数。该算法的复杂性是数组的10 000 *大小。

我提出了一个想法来计算数组中相应元素之间的差异并将结果放入数组中。然后找到这个数组的所有元素的平均值。获得的平均值是应该为我们的成本函数提供更好结果的参数。该算法比以前更有效,可以提供更准确的结果。

我想知道我的算法是否适用?

+1

您能详细说明这个成本函数是什么吗?我不确定我是否按照你的意思行事。 – templatetypedef

+0

不幸的是,stackoverflow的图片上传不起作用...我管理的只是提供一个链接:http://imageshack.com/a/img924/3743/b2v2LZ.png。在这个函数中: m - 一个数组的长度; x(i) - 第一个数组的第i个元素; y(i) - 第2个数组的第i个元素; a - 我需要计算的参数; –

+0

这里有什么是Theta_0和Theta_1? – templatetypedef

回答

1

您提出的成本函数是将线性函数拟合到一组数据点的均方误差。这是一个经过深入研究的问题,实际上有一个封闭形式的解决方案,它会告诉你一个你应该选择的数学优化值。从这个意义上说,我建议不要使用或者这里提出的解决方案,而是直接解决问题。

您所拥有的成本函数纯粹是一个变量a的函数,因此将该导数取为a,将该导数设为零,并且求解应该给出a的最优选择。

成本的(a)=(1/2M)Σ I = 0(斧 - ý

成本'(A)=(1/2M )Σ I = 0 2(斧 - ý)×

成本'(A)=(1/2M)Σ I = 0(2AX - 2倍ý

此表达设置为0,并简化告诉我们,

0 =(1/2M)Σ I = 0(2AX - 2倍ý

0 = Σ I = 0(2AX - 2倍ý

0 = 2a中Σ i = 0 x i - 2 Σ I = 0 X ý

一个Σ I = 0 X = Σ I = 0 X ý

A =(Σ I = 0 X ý)/(Σ I = 0 X

您应该能够通过使一个计算这个很容易地在时间为O(n)单数通过阵列并计算分子和分母

+0

你确定你有正确的派生吗?我认为应该像 成本'(a)=(1/2m)Σi= 0 2(ax-y)(http://www.wolframalpha.com/input/?i=(xy)%5E2) –

+0

我的第二个方案错了 –

+0

@DenisEvseev不,这不一定有效。想想这样 - 你正在寻找一个缩放因子来放大整个第一个数组。成对减去第一个和第二个数组元素告诉你关于你需要的缩放因子很少。想象一下,x的数字是以万亿计,而y的数字是一位数。差异将是惊人的,但在这种情况下,你想要的是微小的。 – templatetypedef