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

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

Что означает термин "поиск плоскости, которая лучше всего соответствует точкам данных" означает?

Для приведенного выше примера двухмерного набора данных (изображение 1) общее уравнение линии, покрывающей максимально возможное количество точек, имеет вид y = m*x+c,где m — наклон линии, а c — член перехвата. Алгоритм линейной регрессии пытается найти линию/плоскость, для которой функция стоимости минимизируется. Далее в этой статье вы узнаете, как выводится функция стоимости.

Мы представим приведенное выше уравнение плоскости как y = w1*x + b

Точно так же для примера трехмерного набора данных (рис. 3) уравнение плоскости, которое лучше всего подходит для максимально возможного количества точек, имеет вид y = w1*x1 + w2*x2 + b.

То же уравнение можно расширить для набора данных d-измерения:

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

Глубокое погружение в геометрическую интерпретацию алгоритма:

Для любой точки P (на изображении 3) y_iAct – это фактическое выходное значение точки, а y_iPre – прогнозируемое значение. Следовательно, ошибка может быть рассчитана как:

Поскольку ошибка может быть положительной и отрицательной, так как y_iPred может быть выше или ниже плоскости/линии, поэтому для сохранения положительной ошибки мы возводим ошибку в квадрат для каждого x_i.

Функция ошибки следует параболической кривой, что означает, что ошибка (ось Y) всегда будет положительной.

Нам нужно минимизировать ошибки для всех наборов точек, что называется MSE (среднеквадратическая ошибка).

И функция стоимости линейной регрессии:

Функция стоимости определяет, что нам нужно найти плоскость с заданными W, b, чтобы ошибка для всех наборов точек была минимизирована. Заменив y_iPred уравнением плоскости, новая функция стоимости будет выглядеть так:

Используйте оптимизатор, чтобы вычислить оптимальное значение W, b, которое минимизирует приведенную выше функцию стоимости. Оптимизатор градиентного спуска можно использовать для нахождения оптимального значения плоскости, для которого среднеквадратическая ошибка минимальна.

Прогноз для точки запроса:

Для точки запроса «Qx» (Изображение 5) соответствующее прогнозируемое значение равно Ypred, которое можно вычислить с помощью уравнения плоскости (W, w0) с использованием приведенного выше уравнения.

Реализация модели линейной регрессии с использованием оптимизатора градиентного спуска:

Чтобы найти плоскость (W, b), мы хотим, чтобы ошибка была как можно меньше. Градиентный спуск — это итеративный метод для достижения минимальной ошибки. Чтобы найти минимальную ошибку, мы находим градиент функции.

Шаги, которые необходимо выполнить для метода градиентного спуска:

  1. Инициализируйте вектор весов и термин смещения.
  2. Найдите производную функции по весу и смещению.
  3. Обновите вес и смещение

Повторяйте эти 3 шага, пока не достигнете минимальной ошибки. С каждой итерацией весовой вектор и член смещения обновляются для достижения минимума.

Реализация алгоритма LR для образца набора данных:

Мы берем двухмерный набор данных из 300 точек данных (строка 2). Разделите набор данных на набор данных поезда и теста, при этом 210 точек (70%) принадлежат данным поезда, а остальные 90 точек (30%) — для тестирования (строка 5). Диаграмма выше (изображение 6) представляет пример набора данных, а реализация кода приведена ниже.

Шаг 1. Инициализируйте вектор весов и смещение:

Инициализируйте весовой вектор и смещение со случайными значениями (строки 8–10). Размерность вектора весов будет равна размерности набора данных.

Шаг 2. Найдите производную функции по весу и смещению:

Выше приведено уравнение MSE, полученное выше в статье. Нам нужно найти производную функции f(W, b) по W (строка 21) и производную функции f(W, b) по b (строка 22).

Приведенные выше два уравнения представляют собой производную функции f относительно вектора веса и члена смещения соответственно.

Шаг 1. Обновите вес и смещение:

Уравнение обновления вектора веса и члена смещения упомянуто выше соответственно. Весовой вектор и смещение обновляются (строки 24–25) для каждой итерации в соответствии с упомянутыми уравнениями. «lr» представляет скорость обучения, которая определяет, насколько быстро должно происходить обновление.

Если скорость обучения велика, то минимумы никогда не могут быть достигнуты, а если она очень мала, то минимумы достигаются с некоторым количеством итераций.

Вышеупомянутые 3 шага повторяются в течение некоторого количества итераций (строка 16), пока W_(i+1) не станет очень близким или равным W_i.

Наблюдение:

Вычисленные весовой вектор и член смещения составляют [50,265], -0,131 соответственно (строки 2–3). Вычислите прогнозируемые значения для всего набора тестовых данных (строки 6–9). Постройте линию и все точки данных (строки 12–19), чтобы увидеть результат.

Наблюдение. Можно заметить, что линейный график (изображение 8) лучше всего соответствует точкам данных, насколько это возможно.



Спасибо за чтение!