Шаг модели по наблюдениям птиц
Условие
Сотрудники парка оценивают число замеченных птиц по скорости ветра. Для этого используется линейная модель \(\hat y=ax+b\), где \(x\) — скорость ветра, а \(\hat y\) — прогноз числа птиц.
В части записей скорость ветра отсутствует и обозначена строкой NA. Такие записи не участвуют в обучении модели. Все остальные записи, включая полностью одинаковые, учитываются отдельно.
Пусть \(S\) — множество записей с известной скоростью ветра, а \(m\) — их количество. Переданными параметрами \(a\) и \(b\) модель была до обучения. Необходимо выполнить ровно один шаг градиентного спуска с коэффициентом обучения \(\eta\) для функции средней квадратичной ошибки
\[MSE(a,b)=\frac{1}{m}\sum_{(x,y)\in S}(ax+b-y)^2.\]
Используются производные \(\frac{\partial MSE}{\partial a}=\frac{2}{m}\sum_{(x,y)\in S}(ax+b-y)x\) и \(\frac{\partial MSE}{\partial b}=\frac{2}{m}\sum_{(x,y)\in S}(ax+b-y)\). Новые параметры вычисляются одновременно: \(a'=a-\eta\frac{\partial MSE}{\partial a}\), \(b'=b-\eta\frac{\partial MSE}{\partial b}\).
После шага требуется найти прогнозы \(a'x+b'\) для двух значений скорости ветра из запроса. При совпадении значений в наблюдениях каждая совпадающая запись учитывается отдельно.
Формат ввода
В первой строке дано целое число n — количество записей наблюдений.
В следующих n строках даны скорость ветра x и число замеченных птиц y. Вместо скорости ветра может стоять NA.
В следующей строке даны вещественные числа a, b, eta — исходные параметры модели и коэффициент обучения.
В последней строке даны два целых числа q1 и q2 — скорости ветра в запросе.
Формат вывода
Выведите в одной строке два прогноза после одного шага: сначала для q1, затем для q2.
Каждое число выведите ровно с четырьмя знаками после точки. Недостающие нули после точки дописываются.
Ограничения
1 ≤ n ≤ 2000.
В каждой строке наблюдений x равно NA длины 2 либо является целым числом от 0 до 100. Число y — целое от 0 до 1000.
Хотя бы в одной записи значение x не равно NA, поэтому m ≥ 1 и деления на ноль не возникает.
-100 ≤ a, b ≤ 100, 0.0001 ≤ eta ≤ 1. Вещественные числа во входе содержат не более 6 знаков после точки.
0 ≤ q1, q2 ≤ 100.
Решить задачу с автопроверкой на Python →
Куда дальше
- Школьный этап ВсОШ по информатике — как устроен первый этап и план подготовки за четыре недели
- БВИ по олимпиадам: в какие вузы берут — правила приёма вузов, разобранные построчно, со ссылкой на приказ у каждой строки
- Перечневые олимпиады: что это и что дают — весь перечень Минобрнауки: уровни, срок диплома, разрезы по предметам и классам