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

Оглавление

  1. Введение
  2. Основы математики
  3. Геометрическая интуиция
  4. Аналитическая интуиция
  5. Метод градиентного спуска
  6. Краткое содержание

Введение

В этой статье я предоставлю вам интуитивное представление о линейной регрессии. Я решил разделить эту статью на 4 основных раздела. Во-первых, я предоставлю вам основы математики, которые помогут понять идею. Другие 3 раздела будут посвящены 3 различным подходам к решению нашей задачи линейной регрессии. Итак, начинаем наше путешествие ✈️.

Как мы знаем, в задачах машинного обучения мы сталкиваемся с задачами классификации и регрессии. Последнее — это то, что нас интересует в линейной регрессии. В задачах регрессии мы пытаемся предсказать непрерывную переменную (результат). Но также мы знаем, что линейная регрессия является членом контролируемого семейства моделей. Это означает, что мы уже наблюдали в прошлом реальные результаты сбора данных, например, о. доходы людей или продажи магазинов. Но как мы предсказываем? Эту проблему я объясню вам в следующих разделах и приведу несколько простых примеров.

Основы математики

Прежде чем мы углубимся в детали линейной регрессии, давайте рассмотрим некоторые связанные с ней математические выражения. Эту математику вы также будете часто видеть при изучении многих других алгоритмов.

Линейное уравнение:

Координата проекции вектора (уравнение 2), точка проекции вектора (уравнение 3) и матрица проекции (уравнение 4):

Формула градиентного спуска:

Если вам сложно понять приведенные выше формулы, наберитесь терпения, скоро я постараюсь объяснить вам это на небольших примерах.

Геометрическая интуиция

Простейшая интуиция, я думаю, геометрическая. Его вывод основан только на векторных проекциях. Итак, давайте задернем шторы.

Предположим, что у нас есть данные в виде матрицы X, обозначающей векторы (столбцы, переменные) внутри матрицы как x1, x2, …, xj и j количество измерений. Также мы собрали y в качестве наблюдаемых целевых данных.

Наша стратегия проста:

Первый. Найдите координаты проекции (предположим, β). Итак, давайте просто возьмем уравнение 2 из основ математики и просто подставим наши данные вместо векторов в формулу, и мы получим:

Второй. Умножьте матрицу данных X на новую систему β, как в уравнении 3, где просто умножьте уравнение 7 на матрицу данных X. Затем вы получите прогноз, представленный в новой системе:

И об одном стоит упомянуть. Я также представил проекционную матрицу Hₚ в уравнении 4, которая представляет собой просто целое выражение без y, которое проецирует y на подпространство, натянутое векторами из X:

Вышеуказанные операции изображены на рисунке ниже.

Аналитическая интуиция

В этом разделе будут представлены решения, которые вы могли видеть в других статьях, книгах или курсах. Просто возьмите линейное уравнение из основ математики, измените его, как представлено в уравнении 10. Но вам может быть интересно, что это за магический символ ϵ. Ну, это статистический шум, который добавляется к уравнению линейной регрессии, чтобы показать, что в наших измерениях есть ошибки. За этим шумовым термином стоят некоторые допущения, которые вам необходимо запомнить, так как это может сделать ваши прогнозы ненадежными. Чтобы проверить, соответствует ли шумовой термин этим предположениям, я нашел несколько статистических тестов, написанных в скобках.

1. Предположение о нормальности (критерий Жака-Бера)

2. Предположение о постоянной дисперсии или гомоскедастичность (критерий Уайта)

3. Предположение о независимости от ошибок (критерий Дарбина-Ватсона)

Далее для простоты вывода я опускаю этот символ. Константы в линейном уравнении I изменятся на вектор β, а матрица данных со столбцами в качестве переменных останется прежней.

Оооо, уравнение мы описали, но что делать дальше? Как найти β-вектор параметров? Что ж, мир приготовил для вас множество функций потерь, минимизируя которые, вы сможете найти решение для β. Для простоты я выберу функцию MSE (среднеквадратичная ошибка), так как эту функцию легко оптимизировать, поскольку она выпуклая и имеет локальный минимум, который также является глобальным.

Затем мы заменяем y и y hat и делаем некоторые упрощения. В этом выводе я буду придерживаться матричных обозначений.

Как мы знаем из математического минимума, функцию можно найти, просто взяв производную по ее параметрам и приравняв ее к 0.

Важно добавить сюда. Когда матрица X не имеет полного ранга, член X^TX необратим. Вот и все, просто вставьте свои данные и получите решение!

Метод градиентного спуска

Здесь я объясню градиентный спуск на примере. Раздел «Основы математики» показал нам красивую математическую формулу (уравнение 5), которая используется почти в каждом алгоритме машинного обучения. Что мы знаем из этой формулы? Мы знаем, что β — это вектор параметров модели, α — скорость обучения, по определению это размер шага (скорость), с которым мы движемся к минимуму функция (это параметр настройки). Далее мы видим градиент функции J (функция потерь), определяемый пользователем. Что такое градиент? Это просто поле всех возможных векторов, компоненты которых являются частными производными функции. В нашем случае линейной регрессии мы выбираем MSE в качестве функции потерь, и нам нужно найти ее частные производные по каждому параметру модели. В случае переменной j мы имеем j+1 параметров и частных производных. Почему +1? Мы просто хотим добавить параметр перехвата в функцию. Предположим, у нас есть только одна переменная, и при решении вектора β мы получаем частные производные в уравнениях 21, 22 и полную формулу для обновления в уравнении 23:

Как мы видим, в частных производных есть часть суммирования, что означает, что мы должны суммировать все данные только за одну итерацию, но это будет критично с точки зрения затрат времени, если у нас есть большой набор данных с большим количеством переменных. Поэтому иногда мы хотим использовать стохастический градиентный спуск для обработки только одного случайного примера из набора данных за итерацию, но в этом случае нам нужно установить больше итераций, чтобы дать алгоритму возможность достичь минимума. В случае SGD это будет не точная точка минимума, а близкая к ней точка. Также нам нужно помнить о масштабировании наших данных, прежде чем мы перейдем к градиентному спуску, так как это ускорит наш алгоритм обучения. Также это будет критический момент при использовании регуляризации l2 или l1 в нашем алгоритме, так как он может иметь тенденцию к регуляризации одного из параметров больше, чем другие, но он должен быть инвариантным.

Как я и обещал ниже, я покажу вам градиентный спуск в действии на примере, но прежде давайте сгенерируем некоторые данные. Предположим, мы пытаемся предсказать доход людей по лимиту кредитной карты. Ниже я добавил точечную диаграмму наших данных, где прозрачные точки — это обучающие данные.

Итак, используя формулу 23 градиентного спуска, давайте напишем простую реализацию на питоне ниже.

Давайте попробуем разные значения скорости обучения α, чтобы увидеть, как быстро наш алгоритм сходится к глобальному минимуму. Начиная с α = 0,0001 мы видим, что даже после 20 итераций наш алгоритм не нашел минимума (остановился слишком рано). График справа показывает, что MSE постоянно уменьшается, и алгоритму требуется больше итераций, чтобы найти оптимальное решение. Поэтому нам нужно увеличить значение скорости обучения, чтобы быстрее найти минимум.

Давайте сделаем это сейчас 0,001. И как видите, наш алгоритм нашел оптимальное решение после почти 4 итераций.

Итак, в чем здесь смысл? Скорость обучения — это просто параметр настройки, и мы должны попробовать некоторые значения и понаблюдать за тем, что происходит с функцией потерь, а затем выбрать правильное в зависимости от вашей задачи.

Краткое содержание

Я показал разные моменты того, как мы можем получить наше решение для линейной регрессии. У каждого из них есть общие и свои правила и допущения, которым мы должны следовать. Поскольку эти методы служат основой почти для каждого алгоритма машинного обучения, вы должны иметь представление о том, как он работает в реальных задачах. Если вам что-то было трудно понять, не стесняйтесь задавать вопросы. Если вам понравилось, пожалуйста, оставьте свой отзыв.

Удачи!😀