Так вы сможете лучше понять, как работает линейная регрессия

Хотя использование Excel / Google Sheet для решения реальной проблемы с алгоритмами машинного обучения может быть плохой идеей, реализация алгоритма с нуля с помощью простых формул и простого набора данных очень полезна. чтобы понять, как работает алгоритм. После того, как я проделал это почти для всех распространенных алгоритмов, включая нейронную сеть, это мне очень помогает.

В этой статье я расскажу, как я реализовал простую линейную регрессию с градиентным спуском. Вы можете использовать ссылку Простая линейная регрессия с градиентным спуском, чтобы получить файл Excel / Google Sheet.

А теперь пачкаем руки!

Использование простого набора данных

Сначала я использую очень простой набор данных с одной функцией, вы можете увидеть график ниже, показывающий целевую переменную y и переменную функции x.

Создание линейной модели

В Google Sheet или Excel вы можете добавить линию тренда. Итак, вы получите результат линейной регрессии.

Но если вы хотите использовать модель для прогнозирования, тогда необходимо реализовать модель, и в этом случае модель довольно проста: для каждого нового наблюдения x мы можем просто создать формулу: y = a * x + б. Где a и b - параметры модели.

Функция стоимости модели

Как мы можем получить параметры a и b? Что ж, оптимальные значения для a и b - это те, которые минимизируют функцию стоимости, которая является квадратом ошибки модели. Таким образом, для каждой точки данных мы можем вычислить квадратичную ошибку.

Квадратная ошибка = (прогнозируемое действительное значение) ² = (a * x + b-действительное значение) ²

Чтобы найти минимум функции стоимости, мы используем алгоритм градиентного спуска.

Простой градиентный спуск

Перед реализацией градиентного спуска для линейной регрессии мы можем сначала сделать это для простой функции: (x-2) ^ 2.

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

  • Сначала мы случайным образом выбираем начальное значение.
  • Затем для каждого шага мы вычисляем значение производной функции df (для этого значения x): df (x)
  • И следующее значение x получается путем вычитания значения производной, умноженного на размер шага: x = x - step_size * df (x)

Вы можете изменить два параметра градиентного спуска: начальное значение x и размер шага.

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

Градиентный спуск для линейной регрессии

Принцип алгоритма градиентного спуска тот же, что и для линейной регрессии: мы должны вычислить частные производные функции стоимости по параметрам a и b. Обозначим их как da и db.

Квадратная ошибка = (прогнозируемое действительное значение) ² = (a * x + b-действительное значение) ²

da = 2 (a * x + b-действительное значение) * x

db = 2 (a * x + b-действительное значение)

На следующем графике вы можете увидеть, как a и b сходятся к целевому значению.

На практике у нас есть много наблюдений, и это нужно делать для каждой точки данных. Вот тут-то и сходят с ума в Google Sheet. Итак, мы используем всего 10 точек данных.

Вы увидите, что сначала я создал таблицу с длинными формулами для вычисления da и db, которые содержат сумму производных всех наблюдений. Затем я создал еще один лист, чтобы показать все детали.

Если вы откроете Google Sheet, вы можете поиграть, изменив параметры градиентного спуска: начальные значения a и b и размер шага. Наслаждаться!

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