将两条线拟合到一组2D点

给定一组 2D 点(图片中的黑点),我需要选择两条线来以某种方式表示这些点。我可能需要最小化 [距离x到两条线中较近者的距离]^2的平方和,尽管如果有任何其他指标可以使这更容易,这也很好。

明显但无效的方法是在所有 2^n 个分区上尝试最小平方。一种实用的方法可能是迭代改进,可能从随机分区开始。

有没有关于处理这个问题的算法的研究?

回答

我认为这可以表述为一个显式优化问题:

 min sum(j, r1(j)^2 + r2(j)^2)                 (quadratic)
 subject to
     r1(j) = (y(j) - a0 - a1*x(j)) * ?(j)      (quadratic)
     r2(j) = (y(j) - b0 - b1*x(j)) * (1-?(j))  (quadratic) 
     ?(j) ? {0,1}

我们同时将点分配给一条线和回归(残差平方和的最小化)。

这是一个非凸二次约束混合整数二次规划问题。可以处理这个问题的求解器包括 Gurobi、Baron、Couenne、Antigone。

我们可以重新表述一下:

 min sum(j, r(j)^2)                      (convex quadratic)
 subject to
     r(j) = y(j) - a0 - a1*x(j) + s1(j)  (one of these will be relaxed)
     r(j) = y(j) - b0 - b1*x(j) + s2(j)  (all linear)
     -U*?(j) <= s1(j) <= U*?(j)
     -U*(1-?(j)) <= s2(j) <= U*(1-?(j))
     ?(j) ? {0,1}
     s1(j),s2(j) ? [-U,U]
     U = 1000                            (reasonable bound, constant)

这使它成为一个直凸的 MIQP模型。这将允许使用更多的求解器(例如 Cplex)并且更容易求解。其他一些公式在这里。提到的一些模型不需要我在上述 big-M 公式中必须使用的边界。值得注意的是,这些模型提供了经过验证的最佳解决方案(对于非凸模型,这将需要全局求解器;凸模型更容易,不需要这个)。此外,我们还可以形成 L1 目标,而不是最小二乘目标。在后一种情况下,我们最终会得到一个线性 MIP 模型。

一个小测试证实这是有效的:

这个问题有 50 分,在慢速笔记本电脑上使用 Cplex 的 MIQP 求解器需要 1.25 秒。这可能是一个统计问题的案例,其中 MIP/MIQP 方法可以提供一些东西。


以上是将两条线拟合到一组2D点的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>