找到最小化一组N行距离的点

时间:2014-07-14 06:57:49

标签: algorithm math linear-algebra mathematical-optimization

在3d空间中给出多条(N)线,找到最小化到所有线的距离的点。

  1. 假设线[aX + b]和点[P]之间的最短距离将在垂直线[aX + b] - [P]上,我可以将最小平方距离表示为平方线的总和距离,例如。 ([aX + b] - [P])^ 2 + ... +([aX + b] n- [P])^ 2.
  2. 由于线是垂直的,我可以使用Dot Product在行词
  3. 中表达[P]

    我考虑过使用最小二乘法估算最小化距离的点,问题是标准最小二乘法将近似给定一组点的最佳拟合线/曲线,我需要的是相反的,给定一组线估计最佳拟合点。

    应如何处理?

5 个答案:

答案 0 :(得分:3)

wikipedia开始,我们读到行a'x + b = 0和点p之间的平方距离为(a'p+b)^2 / (a'a)。因此,我们可以看到最小化平方距离之和的点是加权线性回归问题,每条线观察一次。回归模型具有以下属性:

  • 每行a
  • 的示例数据ax+b=0
  • 每行-b
  • 的结果ax+b=0
  • 每行1/(a'a)
  • 的样本权重ax+b=0

您应该可以使用任何标准统计软件解决此问题。

答案 1 :(得分:1)

方法:

  • 形成给出从点到每条线的距离的等式
  • 这些等式给出了N个距离
  • 根据您想要的标准(最小二乘,极小极大等)优化距离集

一旦你有了N个方程,这就变成了一个简单的优化问题。当然,最后一步的难度在很大程度上取决于你选择的标准(最小二乘法很简单,极小极大不那么简单。)

可能有助于你前进的一件事是找到最简单的方程式,给出从一个点到另一个点的距离。你的想法在#1中是正确的,但你需要多考虑一下(或者检查"从一个点到另一个点的距离"使用任何搜索引擎)。

答案 2 :(得分:0)

以下是使用微积分的解决方案: -

F(x,y) = sum((y-mix-ci)^2/(1+mi^2))

使用偏分化: -

dF(x,y)/dx = sum(2*(y-mix-ci)*mi/(1+mi^2))

dF(x,y)/dy = sum(2*(y-mix-ci)/(1+mi^2))

To Minimize F(x,y) :-

dF(x,y)/dy = dF(x,y)/dx = 0

使用Gradient Descent使用特定的学习率和随机重启来尽可能地找到最小值

答案 3 :(得分:0)

我使用hill climbing解决了同样的问题。考虑一个单点和远离它的26个邻居step(以当前点为中心的立方体上的点)。如果距离点的距离优于距离所有邻居的距离,则逐步分割,否则使邻居具有最佳距离的新当前点。继续,直到步骤足够小。

答案 4 :(得分:0)

您可以对这个问题应用以下答案(该问题涉及找到最接近一组平面的点),因为就像平面可以由平面上的点和平面的法线定义一样,可以通过一条线所经过的点以及与该线正交的“法线”矢量来定义一条线:

https://math.stackexchange.com/a/3483313/365886

您可以通过观察1/2 x^T A x - b x + c的解为x_min = A^{-1} b来解决所得的二次形式。