MVU实现中MOSEK状态异常咨询:模型问题还是容差问题?
MVU实现中CVX求解器状态异常的分析与解决
现象回顾
- 使用CVX默认SDPT3求解器时,优化中途终止,返回
Status: Unbounded - 切换MOSEK求解器后,返回
Problem status: UNKNOWN及Status: Inaccurate/Unbounded - 调整MOSEK的
MSK_DPAR_INTPNT_CO_TOL_PFEAS、MSK_DPAR_INTPNT_CO_TOL_DFEAS等容差参数,仅swissroll、twinpeaks数据集能得到Status: Solved,helix数据集即使将容差调至1e-1仍无效
求解器状态差异的原因
SDPT3返回Unbounded的核心逻辑
SDPT3对无界问题的判定较为严格。MVU的原始SDP模型存在尺度不确定性:低维嵌入可进行任意正交变换+缩放,导致目标函数(最大化方差)能无限增大,触发SDPT3的无界判定直接终止求解。
MOSEK返回Inaccurate/Unbounded的本质
该状态是模型固有特性+数值病态性共同作用的结果:
- 部分数据集能通过调整容差得到Solved状态,是因为这些数据集的数值条件较好,放宽容差后求解器能在数值噪声范围内找到近似可行解;
- helix数据集调大容差仍无效,说明其对应的SDP模型数值病态性更严重——比如样本邻接关系导致约束矩阵条件数极差,或存在近似线性相关的约束,求解器无法在放宽容差后找到符合要求的近似解。
核心疑问解答:模型问题还是容差问题?
两者均有影响,但模型的尺度不确定性是根源,容差调整仅为缓解手段:
- 模型层面:MVU原始模型无尺度约束,理论上目标函数无界,这是导致求解器返回无界相关状态的根本原因。标准MVU实现需添加额外约束固定尺度,比如约束某个样本的嵌入L2范数为1,或约束嵌入协方差矩阵的迹为固定值,消除尺度自由度;
- 容差层面:部分数据集通过调整容差得到Solved状态,是数值条件较好情况下的权宜之计,无法从根源解决无界问题。
可行解决步骤
- 给MVU模型添加尺度约束:例如固定第一个样本的嵌入向量L2范数为1,或约束所有样本嵌入的协方差矩阵迹等于样本数量;
- 对数据集做归一化预处理:降低样本特征的数值范围差异,缓解模型的数值病态性;
- 尝试其他SDP求解器(如SeDuMi):对比状态返回结果,辅助定位问题根源;
- 调整MOSEK更多参数:比如增大
MSK_DPAR_INTPNT_MAX_ITER迭代次数,放宽MSK_DPAR_INTPNT_CO_TOL_REL_GAP相对间隙容差。
内容的提问来源于stack exchange,提问作者JCosta
相关产品推荐
相关产品推荐

