Шаг градиента по результатам забега
Условие
После школьной спартакиады строится модель, которая по числовому признаку участника оценивает вероятность попадания в сборную. Для участника с признаком x модель с параметрами w и b вычисляет вероятность
p = 1 / (1 + exp(-(w*x + b))).
В каждой строке также дан правильный ответ y: 1, если участник вошёл в сборную, и 0 иначе. Строка с признаком NA означает, что измерение признака отсутствует. Такие строки полностью пропускаются при вычислении градиента.
Требуется выполнить один шаг пакетного градиентного спуска для логистической функции потерь. Пусть m — число строк, в которых признак не равен NA. Градиенты определяются формулами
g_w = (1/m) * Σ((p_i - y_i) * x_i),
g_b = (1/m) * Σ(p_i - y_i).
Новые параметры равны w_new = w - eta * g_w и b_new = b - eta * g_b, где eta — скорость обучения. При равенстве результатов нескольких участников каждая строка учитывается отдельно, никакой выбор между участниками не производится.
Формат ввода
В первой строке даны четыре значения: целое число n, затем числа eta, w и b.
В следующих n строках записаны признак x и метка y. Вместо x может быть записано NA.
Формат вывода
Выведите через пробел значения w_new и b_new с четырьмя знаками после десятичной точки. Округление выполняется по правилам форматирования Python f'{value:.4f}'.
Ограничения
1 ≤ n ≤ 4000.
0.001 ≤ eta ≤ 1.
-5 ≤ w, b ≤ 5.
Каждый известный признак x является вещественным числом от -10 до 10 включительно, либо записан как NA.
y — целое число 0 или 1.
Гарантируется, что среди строк есть хотя бы одна строка с известным признаком, поэтому m ≥ 1 и деления на ноль не возникает.
Решить задачу с автопроверкой на Python →
Куда дальше
- Python на олимпиадах — где языка хватает с запасом, а где начинают значить лимиты — с замерами
- Родителям: подготовка бесплатно — сколько стоит репетитор, что даёт бесплатный маршрут и как понять, что ребёнок занимается
- Школьный этап ВсОШ по информатике — как устроен первый этап и план подготовки за четыре недели