Абсолютное зло параметров по умолчанию

Параметры по умолчанию — это зло. Серьезно. Это очень удобное зло — настолько удобное, что оно залезло в мою библиотеку.

На первом изображении есть призыв к обучению модели с помощью:

🐴n_stages = 1: один шаг бустинга (одно дерево)
🐴learning_rate = 1.0: сразу прыгаем в минимум текущей параболы
🐴max_depth = 3: используем три статических признака для разделения объектов на группы (8 групп)

И, кажется, это все. Так почему же мы имеем ненулевые потери? Без понятия.

Спасибо ChatGPT. Я загрузил набор данных и объяснил гипотезу: есть что-то странное, попробуй найти наилучшее приближение таргета в каждой группе, заданной статическими признаками. Потом пошел чистить зубы. Когда вернулся, ответ уже был готов: с датасетом все в порядке, MSE около 1e-32, то есть ноль в рамках double precision.

Я почесал затылок, заархивировал весь репозиторий, загрузил его в ChatGPT и попросил: «Найди источник 0.0007 RMSE». Потом занялся своим ежедневным английским. Через пятнадцать минут ответ был готов:

ЧЕРТОВЫЕ ПАРАМЕТРЫ ПО УМОЛЧАНИЮ

Мой железный друг откопал вот такую строчку:
🐴reg_lambda: float = 1e-4

Этот параметр регуляризации L2 заставил модель пропускать точки в наборе обучающих данных и вызвал это небольшое, но досадное несоответствие.

Я могу представить, как пытаюсь это отладить. Мой железный друг сэкономил мне около двух дней на повторной проверке разных частей моей системы. И, наверное, все бы снова поставилось на паузу.