给定几个向量:
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/