You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何评估torch.pca_lowrank()返回的PCA质量?附精度指标计算方法

计算PCA的累积方差百分比与精度指标

一、累积方差百分比计算

PCA中,奇异值的平方和对应数据的总方差,前k个奇异值的平方和占总方差的比例就是累积方差解释率。基于torch.pca_lowrank返回的降序排列的S(奇异值),可以直接计算:

# 计算总方差(所有奇异值的平方和)
total_variance = torch.sum(S ** 2)
# 计算前n_components个奇异值对应的累积方差
cumulative_variance = torch.sum(S[:self.n_components] ** 2)
# 转换为百分比
cumulative_variance_percent = (cumulative_variance / total_variance) * 100

如果需要查看每个主成分逐步累积的方差占比,可用torch.cumsum生成序列:

cumulative_variance_steps = torch.cumsum(S ** 2, dim=0)
cumulative_percent_steps = (cumulative_variance_steps / total_variance) * 100

二、重构精度相关指标(0-100%范围)

利用重构后的矩阵approx,可以计算以下实用精度指标:

1. 重构误差占比(越低精度越高)

计算原矩阵与重构矩阵的Frobenius范数平方的比值,转换为百分比:

# 原矩阵的Frobenius范数平方
original_norm_sq = torch.norm(A, p='fro') ** 2
# 重构误差的Frobenius范数平方
error_norm_sq = torch.norm(A - approx, p='fro') ** 2
# 误差占比百分比
error_percent = (error_norm_sq / original_norm_sq) * 100

2. 重构保留精度(越高精度越高)

用100%减去误差占比,得到保留的精度百分比:

retention_accuracy_percent = 100 - error_percent

3. 均方误差百分比

以原矩阵方差为基准,计算均方误差的占比:

# 计算原矩阵的全局元素方差
original_var = torch.var(A)
# 计算重构的均方误差
mse = torch.mean((A - approx) ** 2)
# MSE占原方差的百分比
mse_percent = (mse / original_var) * 100

内容的提问来源于stack exchange,提问作者Serge Rogatch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 02:10:07