Шаг градиента для солнечных панелей
Условие
Компания оценивает, будет ли суточная выработка солнечной панели высокой. Для каждого дня известны суммарная солнечная радиация x в Вт·ч/м² и метка y: 1, если выработка была не менее 12 кВт·ч, и 0 иначе.
Часть измерений радиации отсутствует и записана как NA. Такие строки не участвуют в вычислении функции потерь и градиента. Гарантируется, что хотя бы в одной строке радиация известна.
Используется логистическая регрессия с параметрами b и w: z = b + w*x, p = 1 / (1 + exp(-z)). Минимизируется средняя логистическая потеря по строкам с известной радиацией: L = -(1/m) * Σ(y*ln(p) + (1-y)*ln(1-p)), где m — число таких строк. Её градиент равен g_b = (1/m) * Σ(p-y) и g_w = (1/m) * Σ((p-y)*x). Для каждого значения скорости обучения eta из запроса требуется выполнить один шаг: b_new = b - eta*g_b, w_new = w - eta*g_w.
Равные значения радиации, меток и скоростей обучения допускаются и обрабатываются как отдельные строки, никакого выбора между ними не производится.
Формат ввода
В первой строке дано целое число n — число наблюдений.
В следующих n строках записаны два значения: радиация x или строка NA, затем метка y.
В следующей строке записаны два вещественных числа b и w — начальные параметры модели.
В следующей строке дано целое число q — число запросов.
В следующих q строках записано по одному вещественному числу eta — скорости обучения.
Формат вывода
Для каждого запроса выведите в отдельной строке два числа b_new и w_new в этом порядке.
Каждое число выводится ровно с четырьмя знаками после точки. Округление производится до ближайшего значения с четырьмя знаками после точки. Если значение после округления равно нулю, следует вывести 0.0000 без знака минус.
Ограничения
1 ≤ n ≤ 4000.
Для каждой строки наблюдений x имеет вид NA длины 2 либо вещественного числа от 0 до 1500 включительно с не более чем тремя знаками после точки.
y — целое число, 0 ≤ y ≤ 1.
Хотя бы в одной из n строк значение x не равно NA.
-10 ≤ b ≤ 10, -0.02 ≤ w ≤ 0.02.
1 ≤ q ≤ 20.
Для каждого запроса 0 ≤ eta ≤ 1.
Решить задачу с автопроверкой на Python →
Куда дальше
- Python на олимпиадах — где языка хватает с запасом, а где начинают значить лимиты — с замерами
- Перечневые олимпиады: что это и что дают — весь перечень Минобрнауки: уровни, срок диплома, разрезы по предметам и классам
- Олимпиада по информатике: с чего начать — два мира олимпиад — ВсОШ и перечневые: этапы, задания и на каком языке писать