Сравнение прогнозов длительности велопоездок

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

Условие

Городской велопрокат хранит сведения о завершённых поездках и прогнозы их длительности в двух отдельных таблицах. Строки таблиц могут находиться в разном порядке, поэтому поездки сопоставляются по идентификатору trip_id.

Во второй таблице прогноз может отсутствовать для части поездок. В расчёт включаются только поездки, для которых есть строка с прогнозом. Пусть таких поездок m, их реальные длительности равны y_1, y_2, ..., y_m, а прогнозы модели равны p_1, p_2, ..., p_m.

Базовый прогноз для каждой из этих поездок равен среднему реальных длительностей: mean = (y_1 + y_2 + ... + y_m) / m. Для базового прогноза и модели вычисляется средняя квадратичная ошибка MSE: MSE = ((a_1 - y_1)^2 + (a_2 - y_2)^2 + ... + (a_m - y_m)^2) / m, где a_i — прогнозируемая длительность. Для базового прогноза a_i = mean, для модели a_i = p_i.

Необходимо вывести слово MODEL, если MSE модели строго меньше MSE базового прогноза, иначе вывести слово BASELINE. После слова через пробел выводится меньшая из двух ошибок. Если ошибки равны, выводится BASELINE и значение MSE базового прогноза.

Число ошибки следует округлить до двух знаков после точки: значение, ровно находящееся посередине, округляется в большую сторону.

Формат ввода

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

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

В следующих m строках даны два целых числа trip_id и forecast_minutes — идентификатор поездки и прогноз длительности в минутах.

Все идентификаторы в первой таблице различны. Все идентификаторы во второй таблице различны и встречаются в первой таблице. Гарантируется, что m >= 1.

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

Выведите MODEL или BASELINE, затем через один пробел значение меньшей MSE с двумя знаками после точки.

Ограничения

1 <= n <= 2000.

1 <= m <= n.

1 <= trip_id <= 10^9.

1 <= actual_minutes <= 180.

0 <= forecast_minutes <= 240.

В каждой из двух таблиц не более 2000 строк.

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

Куда дальше