Я использовал 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 минут, и довольно долгое ожидание получения результата для частоты ошибок; Нет другого эффективного способа их вычислить?