Нормальное уравнение и градиентный спуск

Самая первая модель машинного обучения, когда мы начинаем обучение, - это линейная регрессия.

В этой статье я подробно расскажу о двух популярных подходах к решению задачи линейной регрессии: Нормальное уравнение и Градиентный спуск.

Для наилучшей работы линейная регрессия должна соответствовать следующим предположениям:

  • Линейная связь между объектами и целями.
  • Мало или совсем отсутствует мультиколлинеарность между элементами.
  • Нормальное распределение ошибок.
  • Допущение гомоскедастичности (также известное как допущение постоянной дисперсии).
  • Нормальное распределение ошибок.
  • Небольшая автокорреляция остатков или ее отсутствие.

Я не буду здесь подробно останавливаться на этих предположениях. Подробнее читайте в этом сообщении.

Идея линейной регрессии проста. Нам даны данные с набором функций, и диапазон вывода является непрерывным. Наша задача - найти лучшую линию (плоскость в 3D и гиперплоскость в мульти-D), у которой ошибка между линией и выходами будет как можно ближе.

Предположим, у нас есть матрица признаков и вектор соответствующих целей:

где N - количество точек данных, а D - количество измерений в каждой точке данных.

В простейшем виде линейная регрессия представляет собой отображение h линейного преобразования из X в y с помощью параметра w:

1. Нормальное уравнение:

Используя немного знаний линейной алгебры, мы можем найти w в закрытом виде:

Однако на практике X редко бывает квадратной матрицей, поэтому мы обычно не можем инвертировать X, обобщающий подход транспонирует его в квадратную матрицу, а затем выполняет инвертирование:

У этого подхода есть 2 недостатка:

  • Во-первых, X транспонирование X - действительно дорогостоящее вычисление. Предположим, что X имеет shape = (60000, 20), тогда X транспонирование X имеет 2⁰² * 60000 вычислений. Или, что еще хуже, если X имеет высокую размерность, компьютерная память взорвется.
  • Во-вторых, не всякое транспонирование X обратимо. И обратимые вычисления тоже дороги.

Здесь на помощь приходит алгоритм градиентного спуска.

2. Градиентный спуск:

Идея алгоритма заключается в том, что в любой момент мы делаем небольшой шаг назад по отношению к его производной. Алгоритм всегда обеспечивает достижение глобального минимума за конечные шаги с соответствующей скоростью обучения (это верно для линейной регрессии, но не для других продвинутых моделей).

Самая популярная потеря для регрессии - это среднеквадратичная ошибка (MSE), которая имеет форму:

Теперь наша задача - найти параметр w, который минимизирует ошибку y и h (w). Так как же нам найти лучший w? Как мы узнали из средней школы, в точке x, которая заставляет функцию f (x) иметь производную f (x) ', равна нулю, либо минимум, либо максимум, поскольку мы знаем, что форма MSE похожа на чашу (выпуклая функция), тогда мы можем убедиться, что эта точка является минимальной.

Производная от J по отношению к w:

Для каждого шага используйте алгоритм градиентного спуска для оптимизации w:

Если скорость обучения слишком велика, наше обновление с производной взорвется и никогда не сойдется.

Если обучение слишком мало, сходимость будет такой медленной или, вероятно, застрянет на 1 балле навсегда.

Ниже представлена ​​полиномиальная линейная регрессия, хотя это кривая, но наша оптимизация по-прежнему относится к w, которая является линейной.

Для реализации линейной регрессии оформляйте заказ здесь.