【问题标题】:least square line fitting in 4D space4D空间中的最小二乘线拟合
【发布时间】:2014-07-30 23:48:02
【问题描述】:

我有一组点,例如:

(x , y , z , t)

(1 , 3 , 6 , 0.5)

(1.5 , 4 , 6.5 , 1)

(3.5 , 7 , 8 , 1.5)

(4 , 7.25 , 9 , 2)

我希望在这些点上找到最佳线性拟合,比如说一个函数,例如: f(t) = a * x +b * y +c * z

【问题讨论】:

  • 尝试用谷歌搜索线性回归。
  • "f(t) = a * x +b * y +c * z":这不是直线方程;这是 4D 中 3 超平面的显式方程。

标签: algorithm math statistics curve-fitting


【解决方案1】:

这是Linear Regression 问题。 “最佳匹配”取决于您定义的更好的指标。

一个简单的例子是Least Squares Metric,它旨在最小化平方和:(f((x_i,y_i,z_i)) - w_i)^2 - 其中w_i 是样本的测量值。

因此,在最小二乘法中,您试图最小化SUM{(a*x_i+b*y_i+c*z^i - w_i)^2 | per each i }。此函数在以下位置有一个全局最小值:

(a,b,c) = (X^T * X)^-1 * X^T * w

Where:
X is a 3xm matrix (m is the number of samples you have)
X^T - is the transposed of this matrix
w - is the measured results: `(w_1,w_2,...,w_m)`
The * operator represents matrix multiplication 

还有更复杂的其他方法,使用其他距离度量,一个例子是著名的SVR,带有线性内核。

【讨论】:

  • 这样,我们两个在 2D 中找到一条线,在 3D 中找到一个平面,在 4D 空间中找到一个超平面,而不是一条线。
【解决方案2】:

您似乎正在寻找点云的长轴。

您可以通过找到与协方差矩阵的最大特征值相关联的特征向量来解决此问题。可能是使用power method 的机会(例如,从离质心最远的点开始迭代)。

也可以通过Singular Value Decomposition 解决,最好使用仅计算最大值的方法。

如果您的数据集包含异常值,那么 RANSAC 可能是更好的选择:随机取两个点并计算到它们定义的线的距离总和。重复多次并保持最佳状态。

使用平方距离将满足您对最小二乘的要求,但非平方距离会更可靠。

【讨论】:

【解决方案3】:

你有一个线性问题。

例如,我的方程式是 Y=ax1+bx2+c*x3。

在 MATLAB 中这样做:

B = [x1(:) x2(:) x3(:)] \ Y;
Y_fit = [x1(:) x2(:) x3(:)] * B;

在 Python 中这样做:

import numpy as np
B, _, _, _ = np.linalg.lstsq([x1[:], x2[:], x3[:]], Y)
Y_fit = np.matmul([x1[:] x2[:] x3[:]], B)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-29
    • 2014-03-05
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多