给定几个向量:

x1 = [3 4 6]
x2 = [2 8 1]
x3 = [5 5 4]
x4 = [6 2 1]


我想找到每个项目的权重w1,w2,w3,并获得每个向量的加权总和:yi = w1*i1 + w2*i2 + w3*i3。例如,y1 = 3*w1 + 4*w2 + 6*w3
使这些值(y1,y2,y3,y4)的方差最小。

注意:w1,w2,w3应该> 0,并且w1 + w2 + w3 = 1

我不知道应该是什么样的问题...以及如何在python或matlab中解决它?

最佳答案

您可以从构建损失函数开始,该函数说明方差和w的约束。平均值是m = (1/4)*(y1 + y2 + y3 + y4)。则方差为(1/4)*((y1-m)^2 + (y2-m)^2 + (y3-m)^2 + (y4-m)^2),约束为a*(w1+w2+w3 - 1),其中a是拉格朗日乘数。在我看来,该问题看起来像具有凸约束的凸优化,因为损失函数相对于目标变量(w1,w2,w3)是二次函数,并且约束是线性的。您可以根据所提供的约束条件寻找投影梯度下降算法。在这里看一下http://www.ifp.illinois.edu/~angelia/L5_exist_optimality.pdf通常没有针对此类问题的直接分析解决方案。

关于python - 如何计算权重以最小化方差?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44984132/

10-10 15:31