MLS学习
1.前言
问ai等,查看资料并记录
2.记录
deepseek.ai
关键区别
特征 | fit_params_1 | fit_params_2 |
---|---|---|
坐标系统 | 相对中心点偏移 (Δx,Δy)(Δx,Δy) | 绝对坐标 (x,y)(x,y) |
权重应用方式 | 最小化 ∑wi⋅残差2∑wi⋅残差2 | 最小化 ∑wi2⋅残差2∑wi2⋅残差2 |
设计矩阵构造 | 先构造 AA,后与 WW 相乘 | 直接构造 Aweighted=WA0Aweighted=WA0 |
数学等价性 | 标准加权最小二乘 (WLS) | 权重被平方的加权最小二乘 |
求解效率 | 需计算 ATWAATWA(显式正规方程) | 直接求解 Aθ=bAθ=b(隐式) |
kimi.ai
fit_params_1 = np.linalg.lstsq(AWA, AWb, rcond=None)[0]
AWA 是一个6x6的矩阵,AWb是一个6x1的矩阵
fit_params_2 = np.linalg.lstsq(A, b, rcond=None)[0]
A是一个 nx6的矩阵, b是一个长度为n的一维向量注意:
fit_params_1中:basis_funcs = [lambda x, y: x ** 2,lambda x, y: y ** 2,lambda x, y: x * y,lambda x, y: x,lambda x, y: y,lambda x, y: 1,]A = np.zeros((len(local_points), len(basis_funcs))) #矩阵大小 mx6
b = local_points[:, 2]for i, func in enumerate(basis_funcs):A[:, i] = [func(pt[0] - x, pt[1] - y) for pt in local_points]
W = np.diag(weights) ## 将权重向量转换为对角矩阵
AWA = A.T @ W @ A
AWb = A.T @ W @ b fit_params_2中:
A = np.vstack([x_neigh ** 2 * weights, y_neigh ** 2 * weights, x_neigh * y_neigh * weights, x_neigh * weights,y_neigh * weights, weights]).T
b = z_neigh * weights 请分别给出fit_params_1 与 fit_params_2 的详细计算方法过程
表格
计算步骤 | fit_params_1 | fit_params_2 |
---|---|---|
加权方式 | A 和 b 未加权,权重通过 AWA = AᵀWA 和 AWb = AᵀWb 引入 | A 和 b 直接加权,即 A = [x²*w, y²*w, ..., 1*w] |
矩阵维度 | AWA 是 6×6 ,AWb 是 6×1 | A 是 m×6 ,b 是 m×1 |
最小二乘形式 | 正规方程法:(AᵀWA)θ = AᵀWb | 直接最小二乘:Aθ ≈ b |
但 数值上,如果 weights
相同,fit_params_1 和 fit_params_2 的结果应该完全一致,因为:
fit_params_1 是 加权最小二乘的正规方程解。
fit_params_2 是 加权最小二乘的直接解,等价于
fit_params_1
。
因此,两者本质相同,只是计算方式不同
问题:
加权最小二乘的正规方程解 具体计算过程:
fit_params_1
表格
步骤 | 计算内容 |
---|---|
1 | 构造 X(m×6)和 y(m×1) |
2 | 构造对角权重矩阵 W(m×m) |
3 | 计算 XTWX(6×6) |
4 | 计算 XTWy(6×1) |
5 | 解正规方程 θ=(XTWX)−1XTWy |
问题 加权最小二乘的直接解 具体计算过程:
fit_params_2
表格
步骤 | 计算内容 |
---|---|
1 | 构造原始设计矩阵 X(m×6)和观测向量 y(m×1) |
2 | 计算权重矩阵的平方根 W1/2=diag(wi) |
3 | 构造加权数据 X~=W1/2X、y~=W1/2y |
4 | 解普通最小二乘 θ=np.linalg.lstsq(X~,y~) |