流场加速收敛


直接预测模态系数 = 对模态系数进行pca分解,选择全部模态然后对模态系数进行预测,然后再重构回来。

源码:

pca = PCA(n_components=10)
S_transformed = pca.fit_transform(S)

print('S_transformed shape: ', S_transformed.shape)

# 训练自回归模型并预测下一步时间系数
predicted_coefficients = fit_autoregressive_model_v2(S_transformed.T, num_lags=3)

#--------------------------------------------------------------
sub_pca = PCA()
time_coefficients = sub_pca.fit_transform(S_transformed)


print('time_coefficients shape: ', time_coefficients.shape)

sub_predicted_coefficients = fit_autoregressive_model_v2(time_coefficients.T, num_lags=3)

predicted_coefficients_v2 = sub_pca.inverse_transform(sub_predicted_coefficients)

解释下为什么:

第一种情况:直接预测模态系数

S:原始数据集
$\mu$:原始数据集S的平均值
S_transformed:原始数据集模态系数
V^T:原始数据集S均值化以后,进行奇异值分解得到的模态


S_transformed = V^T (S-$\mu$)

predicted_coefficients = AR(S_transformed^T)

第二种情况:对模态系数进行pca分解,然后再预测

W^T : S_transformed均值化以后,进行奇异值分解得到的模态

$\mu_2$:S_transformed的平均值

time_coefficients = W^T (S_transformed-$\mu_2$)

sub_predicted_coefficients = AR(time_coefficients^T)

predicted_coefficients_v2 = (sub_predicted_coefficients)@ W^T + $\mu_2$

predicted_coefficients_v2 = AR((S_transformed-$\mu_2$)^T W) @ W^T + $\mu_2$

predicted_coefficients 和 predicted_coefficients_v2是否接近或相等的关键在于两个变量:$\mu_2$ 、 W

  1. $\mu_2$

$\mu$ 是原始数据S的均值,V^T是PCA的成分矩阵,如果V捕获了全部方差,那么S_transformed中的每一列都是S-$\mu$投影到模态上的结果,其均值理论上应该非常小,因为已经从 S 中移除了均值。这种情况可以假设$\mu_2$接近与0。

  1. W

因为我们第二次PCA使用了全部模态,那么W是一个满秩矩阵,W覆盖了原数据S_transformed的全部重要特征,没有信息丢失,所有在$\mu_2$ = 0的情况下

predicted_coefficients_v2 $\approx$ AR((S_transformed)^T W) @ W^T

$\approx$ AR((S_transformed)^T) W @ W^T = AR((S_transformed)^T) = predicted_coefficients

所以 predicted_coefficients_v2 $\approx$ = predicted_coefficients


文章作者: Jason Lin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 reprint policy. If reproduced, please indicate source Jason Lin !
  目录