python - 如何计算权重以最小化方差?

标签 python matlab optimization variance convex-optimization

给定几个向量:

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/

相关文章:

python - Python 中的可选命令行参数

python - python中的连接组件属性

matlab - 网格网格的内存高效替代品

python - 在 Pyomo 约束中定义循环/周期性边界条件

android cursor movetofirst 性能问题

Java递归文件复制优化

Python被多个分隔符分割,包括空格?

python - Pandas 中的条件宽格式到长格式

matlab - 从命令窗口跳转到 simulink 模型 block

python - 如何在 Python 中播放矢量?