【发布时间】:2010-01-23 20:17:00
【问题描述】:
给定以下二维点:
213 106.8
214 189
214 293.4
213 324
223 414
我想为穿过它们的最小二乘垂直轴线找到一个方程。我的计划是得到一个线方程,这样我就可以测试后续点到最小二乘线的距离。
谢谢
【问题讨论】:
-
不,这不是家庭作业,我正在制作一个面部识别程序,这只是其中的一小部分。谢谢
标签: least-squares
给定以下二维点:
213 106.8
214 189
214 293.4
213 324
223 414
我想为穿过它们的最小二乘垂直轴线找到一个方程。我的计划是得到一个线方程,这样我就可以测试后续点到最小二乘线的距离。
谢谢
【问题讨论】:
标签: least-squares
严格来说,没有为垂直线定义最小二乘拟合(因为 每个点的误差是平行于 Y 轴测量的)。
但是,如果你交换 X 和 Y,你可以找到最好的水平线 正方形适合。它可以简单地计算 Y 坐标值的平均值:
水平线的方程就是 y = b。
每个点(xi, yi)的误差是(yi - b)。
误差平方和为 SSE = sum( (yi - b)2)。我们希望 找到最小化 SSE 的 b 值。取 SSE 的偏导数 尊重 b 并将其设置为零:
sum(-2(yi - b)) = 0
简化,
sum(yi) - Nb = 0
和
b = sum(yi)/N
所以在你的情况下,平均 X 坐标会给你 X 坐标 最适合您的观点的垂直线。
【讨论】:
最通用的解决方案是申请Total Least Squares
这会找到 (a, b, d) 以最小化垂直距离平方和 (ax+by=d (a^2+b^2=1): |ax + by – d|)。这可以处理垂直线,例如0x+1y=0。
但是,这有点难以实现,所以@Jim Lewis 提供的解决方案可能更好,更实用..
【讨论】:
如果您希望最佳拟合线是垂直的(即 x = 常数),则 y 值无关紧要。只需取 x 值平方的均值的平方根。
【讨论】: