Сравнение прогноза выдач по MSE

тема: Метрики регрессии и МНК · уровень: средний

Условие

Библиотека сравнивает модель прогноза числа выдач книг с базовой моделью. Данные поступают двумя таблицами: в первой указано фактическое число выдач каждой книги за месяц, во второй — прогноз модели для тех же книг.

Базовая модель для каждой книги предсказывает среднее фактическое число выдач среди книг, для которых прогноз модели не пропущен. Пропуск прогноза обозначается строкой NA; такие книги не участвуют ни в ошибке модели, ни в вычислении среднего базовой модели.

Среднеквадратичная ошибка называется MSE и вычисляется по формуле MSE = (1 / k) * Σ(y_i - p_i)^2, где k — число книг с числовым прогнозом, y_i — фактическое число выдач, p_i — прогноз. Требуется найти, во сколько раз MSE базовой модели больше MSE модели: MSE_базы / MSE_модели.

Все идентификаторы книг в каждой таблице различны. При равенстве идентификаторов строка из первой таблицы сопоставляется со строкой из второй таблицы, имеющей тот же идентификатор. Гарантируется, что числовой прогноз есть хотя бы у одной книги и MSE_модели строго больше нуля.

Выведите ответ с двумя знаками после точки. Если при округлении третья цифра после точки равна 5, второй знак после точки увеличивается на единицу.

Формат ввода

В первой строке даны два целых числа n и m — число строк в таблице фактических выдач и число строк в таблице прогнозов.

В следующих n строках находятся идентификатор книги book_id и целое число issued — фактическое число её выдач за месяц.

В следующих m строках находятся идентификатор книги book_id и значение forecast — целочисленный прогноз модели или строка NA.

Порядок строк во второй таблице может отличаться от порядка строк в первой таблице.

Формат вывода

Выведите одно число: отношение MSE_базы / MSE_модели, округлённое до двух знаков после точки.

Ограничения

1 ≤ n = m ≤ 2000.

Длина каждого идентификатора книги — от 2 до 12 символов. Идентификатор состоит из латинских букв, цифр и символа _.

0 ≤ issued ≤ 10000.

Числовой прогноз удовлетворяет условию 0 ≤ forecast ≤ 10000.

В каждой из двух таблиц все идентификаторы различны, а множества идентификаторов таблиц совпадают.

Число строк с числовым прогнозом не меньше 1. MSE модели строго больше 0.

Решить задачу с автопроверкой на Python →

Куда дальше