Почему не используют аналитическую формулу при решении задачи линейной регрессии?
Что проверяют
Знаете ли вы, что у линейной регрессии есть точное решение, и понимаете ли, почему на практике считают итеративно. Проверяют не формулу, а чувство вычислительной стоимости и численной устойчивости.
Как отвечать
Начать с того, что аналитическое решение существует: нормальное уравнение w = (X^T X)^-1 X^T y. На малых задачах оно лучше градиентного спуска, потому что даёт ответ сразу и не требует подбирать шаг обучения. Отказываются от него по трём причинам.
Стоимость. Матрица X^T X имеет размер d x d, её построение стоит примерно O(n * d^2), решение системы O(d^3), где d это число признаков. При one-hot кодировании или tf-idf признаков десятки тысяч, и куб становится неподъёмным. По числу объектов зависимость линейная, узкое место именно признаки.
Устойчивость. При мультиколлинеарности или когда признаков больше, чем объектов, матрица вырождена или близка к этому, и решение разлетается. Лечится регуляризацией: гребневая регрессия добавляет к диагонали положительное слагаемое и возвращает обратимость.
Общность. Точная формула есть только у метода наименьших квадратов. Логистическая регрессия, робастные функции потерь, любая нелинейность решаются численно. Градиентный спуск и его стохастические варианты работают для всех этих задач одинаково и учатся по батчам, не держа всю выборку в памяти.
Полезно добавить, что зрелые библиотеки матрицу явно не обращают, а решают систему через разложение (QR или SVD), это и быстрее, и устойчивее.
Где спотыкаются
Говорят, что формула не работает из-за большого числа наблюдений. Кубическая сложность идёт по признакам, а не по объектам: миллион строк и три признака считаются мгновенно.
Произносят «инвертировать матрицу» как единственный способ. Явное обращение медленнее и хуже по точности, систему решают разложением. Обратная матрица нужна разве что для оценки дисперсий коэффициентов.
Приписывают аналитике особую чувствительность к выбросам по сравнению с градиентным спуском. Оба метода минимизируют одну и ту же функцию и дают один ответ, за чувствительность отвечает квадрат ошибки, а не способ счёта.