我有2个阵列:第一个阵列包含公寓区域,第二个阵列包含价格。数组的值形成图表,并将用于计算成本函数的结果。主要任务是找到成本函数的最佳参数,以最小化其结果。这就是成本函数的样子:
有人建议创建一个从1到10 000的循环,并找到结果较少的最佳参数。该算法的复杂性是10 000 *大小的阵列。
我提出了计算数组相应元素之间差异并将结果放入数组的想法。然后找到该数组的所有元素的平均值。获得的平均值是应该为我们的成本函数提供更好结果的参数。该算法比以前的算法更有效,并且可以提供更准确的结果。
我想知道我的算法是否适用?
答案 0 :(得分:1)
您提出的成本函数是将线性函数拟合到数据点集合的均方误差。这是一个经过充分研究的问题,实际上有一个封闭形式的解决方案可以告诉您应该选择的数学最优值。从这个意义上说,我建议不要使用 这里提出的解决方案,而只是直接解决问题。
你所拥有的成本函数纯粹是变量a的函数,所以将导数相对于a,将该导数设置为零,求解应给出最佳的a选择。
成本(a)=(1 / 2m)Σ i = 0 (ax i - y i ) 2 < / SUP>
成本'(a)=(1 / 2m)Σ i = 0 2(ax i - y i )x I 子>
成本'(a)=(1 / 2m)Σ i = 0 (2ax i 2 - 2x i < /子>ý<子> I 子>)
将此表达式设置为0并简化告诉我们
0 =(1 / 2m)Σ i = 0 (2ax i 2 - 2x i y <子> I 子>)
0 =Σ i = 0 (2ax i 2 - 2x i y i < /子>)
0 =2aΣ i = 0 x i 2 - 2Σ i = 0 x 我ý<子> I 子>
aΣ i = 0 x i 2 =Σ i = 0 x i < /子>ý<子> I 子>
a =(Σ i = 0 x i y i )/(Σ i = 0 x <子> I 子> 2 )
你应该能够通过对数组进行单次传递并计算分子和分母,在时间O(n)中非常容易地计算