我试图在高维空间(数千个维度)中推断出未知向量x
,并且在几个(15)方向上对其投影进行了很好的测量 - 即如果是{的列{1}}构成了空间的基础,我知道v[i,j]
v[,j]*x = v[1,j]*x[1]+...+v[n,j]*x[n]
,并且很好地了解错误。
我也知道所有1<=j<=15
x[i]>=0
。我想用某种方法找到i
的非负估计值,其投影值接近观测值。
我尝试使用线性约束的最小二乘最小化,(使用R中的x
包优化具有线性约束的二次目标)。然而,根据我对观察误差的了解,结果并不像它们应该的那样接近观察到的项目。我想评估这是否是因为没有更好的解决方案,或者由于数值原因算法未能找到它。
做这种事情的好方法是什么?或者,是否存在在高维空间中进行凸优化的技巧?
答案 0 :(得分:1)
您有一组
形式的线性等式约束a_i * x = b_i
一组积极性约束
x >= 0
或者,以矩阵形式
A x = b
x >= 0
所有这一切告诉我们的是,你的目标向量是Convex Polyhedron,但这并不多。现在我们必须决定做什么。
如果只需要找到可行点,可以通过运行Phase 1的Simplex algorithm来实现。成千上万的维度不应该是一个大问题,因为线性编程非常快,应该处理这种输入。您可以在此处选择自己喜欢的线性优化求解器1 2。
如果您还想找到最佳可行点且目标函数线性,那么您也无需执行任何操作。只需使用与确定可行性相同的解算器并告诉它也进行优化 - 工作量基本相同。
如果你还想找到一个最佳可行点并且目标函数是非线性那么事情会变得更复杂,你可以选择更多东西。二次目标函数是一个常见的特殊情况,因此有特定的解决方案,但是你开始有很多东西可供选择。
答案 1 :(得分:0)
因此,如果我理解正确,您将获得xp
,向量x
投影到子空间P
上,该子空间由一组基础向量{{1}定义}}。你想找到那里投射的一些非负向量。如果省略非负面条件,那么问题就很简单了 - 只需选择你的预测向量:
{p[i]}
为了澄清,x = sum(xp[i]*p[i])
的长度是子空间xp
的维度,并且等于p中的行数。每个p [i]的长度等于原始高维空间的维数(这是它们的基础向量)。
你没有做上述事实告诉我,投影不非负,所以你需要添加一些与P
正交的向量来得到你想要的结果。问题是,你真的不知道这样的载体是否存在。例如,假设原始空间是平面,P
是行P
。如果您有一个负投影alpha*(1,1)
,那么无论您添加哪种形式的(-1,-1)
向量,您都无法获得正面结果。这同样适用于任何尺寸和任何在多个基础上为负的投影(我假设你的基础是正交的。如果它们不是,那么事情就会变得多毛了。)
因此,总而言之,看看你的投影向量在全维空间中的样子,如果找到多个负向条目,那么当你想要将投影非负嵌入到全维空间。