gpt4 book ai didi

machine-learning - 如何在 MATLAB 中高效计算神经网络应用中训练/测试集的 MAPE?

转载 作者:行者123 更新时间:2023-11-30 08:55:49 29 4
gpt4 key购买 nike

作为类(class)的一部分,我一直在使用 MATLAB 来处理时间序列数据集(电力数据集)。它由 40,000 多个样本组成。神经网络形成后,我想测试一下它的准确性。我对 MAPE(平均绝对百分比误差)和 RMS(均方根)误差更好奇。为了计算它们,我使用了以下代码行。

mape_res = zeros(N_TRAIN);
mse_res = zeros(N_TRAIN);
for i_train = 1:N_TRAIN
Inp = inputs_consumption(i_train );
Actual_Output = targets_consumption( i_train + 1 );
Observed_Output = sim( ann, Inp );

mape_res(i_train) = abs(Observed_Output - Actual_Output)/Actual_Output;
mse_res(i_train) = Observed_Output - Actual_Output;

end

mape = sum(mape_res)/N_TRAIN;
mse = sum(power(mse_res,2))/N_TRAIN;
sprintf( 'The MSE on training is %g', mse )
sprintf( 'The MAPE on training is %g', mape )

上述编码的问题在于,对于大型数据集(40K 样本),迭代所有这些循环需要近 15 分钟,并且等待获得错误率结果的时间相当长;有没有其他有效的方法来计算它们?

最佳答案

您始终可以执行每次迭代更新的滚动平均值,如下所示:

mape_res = abs(Observed_Output - Actual_Output) / Actual_Output;
mse_res = Observed_Output - Actual_Output;

alpha = 1 / i_train;
mape = mape * (1 - alpha) + mape_res * alpha;
mse = mes * (1 - alpha) + power(mse_res,2) * alpha;

然后,您可以显示每次迭代的结果值,如果达到所需的错误率,则将它们用作停止标准,或者两者兼而有之。这还有一个额外的好处,即不需要初始化和填充 mape_res 和 mse_res 向量,除非它们碰巧在其他地方需要......

编辑:请确保在进入 for 循环之前将 mape 和 mse 值初始化为零:)

关于machine-learning - 如何在 MATLAB 中高效计算神经网络应用中训练/测试集的 MAPE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9104171/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com