Нормальное уравнение и градиентный спуск
Самая первая модель машинного обучения, когда мы начинаем обучение, - это линейная регрессия.
В этой статье я подробно расскажу о двух популярных подходах к решению задачи линейной регрессии: Нормальное уравнение и Градиентный спуск.
Для наилучшей работы линейная регрессия должна соответствовать следующим предположениям:
- Линейная связь между объектами и целями.
- Мало или совсем отсутствует мультиколлинеарность между элементами.
- Нормальное распределение ошибок.
- Допущение гомоскедастичности (также известное как допущение постоянной дисперсии).
- Нормальное распределение ошибок.
- Небольшая автокорреляция остатков или ее отсутствие.
Я не буду здесь подробно останавливаться на этих предположениях. Подробнее читайте в этом сообщении.
Идея линейной регрессии проста. Нам даны данные с набором функций, и диапазон вывода является непрерывным. Наша задача - найти лучшую линию (плоскость в 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, которая является линейной.
Для реализации линейной регрессии оформляйте заказ здесь.